Использование iptables NAT для пересылки туннеля GRE
У меня есть два хоста, которые должны иметь туннель 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
, Спасибо, Томек!