У меня есть два хоста, между которыми должен быть туннель GRE. Между ними у меня есть хост-ретранслятор, который должен выполнять NAT и перенаправлять трафик GRE в любом направлении.
grehostA --- natrelayhost --- grehostB
Все хосты работают под Debian. Для простоты объяснения я ограничусь трафиком, идущим от grehostA
к grehostB
и не беспокойтесь об обратном трафике. Мы смотрим на конфигурацию iptables для natrelayhost
:
-t nat -A PREROUTING -p gre -s grehostA -d natrelayhost -j LOG --log-prefix "[netfilter] GRE-PRE: "
-t nat -A PREROUTING -p gre -s grehostA -d natrelayhost -j DNAT --to-destination grehostB
-t nat -A POSTROUTING -p gre -j LOG --log-prefix "[netfilter] GRE-POST: "
-t nat -A POSTROUTING -p gre ! -s natrelayhost -j MASQUERADE
-A FORWARD -p gre -j LOG --log-prefix "[netfilter] GRE-FWD: "
-A FORWARD -p gre -J ACCEPT
у меня тоже есть INPUT
правила отладки, хотя я не думаю, что они мне нужны:
-A INPUT -p gre -j LOG --log-prefix "[netfilter] GRE-IN: "
-A INPUT -p gre -j ACCEPT
И конечно же sysctl -w net.ipv4.ip_forward=1
.
У меня загружены следующие модули ядра:
modprobe nf_conntrack_proto_gre
modprobe nf_nat_proto_gre
А также несколько других модулей ядра, которые я не думаю, что мне нужны, но все же решил попробовать:
modprobe ip_gre
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
Эта проблема:
Когда трафик отправляется из grehostA
Я получаю GRE-PRE
сообщения журнала, показывающие, что правило DNAT выполнено. Но я не получаю GRE-POST
/GRE-FWD
/GRE-IN
сообщения журнала, даже если POSTROUTING
/FORWARD
/INPUT
цепочки настроены для регистрации и передачи всего трафика GRE. Похоже, никто никогда не проходит через них. После DNAT я ожидал увидеть здесь пакеты.
Я попытался добавить правила в начало соответствующих цепочек, чтобы убедиться, что никакие другие правила не принимают или не отклоняют трафик, но это не имеет значения.
Имейте в виду, что я добавлю в правила дополнительные проверки хоста источника / назначения, чтобы предотвратить несанкционированный доступ, как только я действительно заставлю его работать.
РЕДАКТИРОВАТЬ: исправлено путем добавления маршрута к хосту на natrelayhost
к grehostB
. Спасибо Томек!