НАТ и маршрутизация между интерфейсами сервера (eth tun)
Доброго времени суток!
Есть два сервера (впс) имеющие белые ип адреса и находящееся не в одной подсети. Пусть они будут иметь адреса 1.2.4.5 и 6.7.8.9 (оба адреса на eth0). Сервера связаны между собой туннелем ipip, т.е. у каждого сервера поднят интерфейс tun0. У первого сервера ип на tun0 - 10.1.1.1, у второго - 10.1.1.2. По туннелю пакеты бегают - все нормально. У обоих серверов в иптаблесе дефолтные политики в ACCEPT. Маршрутизация разрешена. Мне необходимо пробросить запрос на 80-порт со второго сервера, через туннель и первый сервер в инет. Для этого на втором сервере делаем следующее:
-------------------------------------------------------
echo «0» > /proc/sys/net/ipv4/conf/tun0/rp_filter
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x2
ip route add default via 10.1.1.1 dev tun0 table 102
ip rule add fwmark 0x2/0x2 lookup 102
-------------------------------------------------------
На первом сервере:
-------------------------------------------------------
echo «1» > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -p tcp -o eth0 --dport 80 -j SNAT --to-source 1.2.4.5
(или вместо SNAT ставлю маскарад - на результат не влияет)
iptables -t mangle -A PREROUTING -p tcp -i eth0 --sport 80 -j MARK --set-mark 0x2
ip route add default via 10.1.1.2 dev tun0 table 102
ip rule add fwmark 0x2/0x2 lookup 102
-------------------------------------------------------
Со второго сервера делаем запрос на 80 порт любым способом (телнетом, курлом).
Если на первом сервере запустить что-то вида tcpdump -nn -i tun0 tcp port 80, то увидим пакеты которые чешут через туннель на 80 порт. Примерно так:
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
21:14:10.821618 IP 6.7.8.9.59062 > 95.82.154.42.80: Flags [ S ] , seq 2930093569, win 14600, options [ mss 1460, sackOK, TS val 7033099 ecr 0,nop,wscale 7 ], length 0
. . . .
Если запустить tcpdump -nn -i eth0 tcp port 80, то никаких пакетов излучаться не будет - тишина.
Т.е. нат в построутинге не срабатывает. Если сделать iptables -vnL -t nat --line-numbers , то видно, что нужной цепочке пакеты не шли. Судя по всему проскакивает один пакет и на этом все. Соответственно, соединение не происходит.
Первый сервер на убунту 16.04 (поднят с 14.04), второй - центос 6.8.
Прошу помочь в решении проблемы.