Доброго времени!
Есть два сервера с белыми ИП между ними натянут туннель GRE. На стороне моего сервера выглядит это примерно вот так:
3: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
4: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
5: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
12: qrtun@eth0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default qlen 1000
link/gre 192.168.3.5 peer 185.x.x.x
inet 172.16.0.111 peer 172.16.0.110/32 scope global qrtun
valid_lft forever preferred_lft forever
inet6 fe80::5efe:a0a:1705/64 scope link
Туннель поднимается, я пингую ту сторону 172.16.0.110. Из туннеля мне пробрасывают 80 и 443 порты. Это видно если запустить тспдумп на туннелевском интерфейсе qrtun. Если на моем сервере запустить веб-сервер, скажем нжинкс, то пакеты великолепно приземляются и нжинкс отдает трафик. Чтобы отдача в туннель работала сделана дополнительная таблица маршрутов gre и правила в ней:
# ip route show table gre
default dev qrtun scope link
# ip rule
0: from all lookup local
...
214: from 172.16.0.111 to 192.168.23.0/24 lookup main
215: from 172.16.0.111 lookup gre
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
В реальности, мне нужно пробросить трафик по портам 80 и 443 далее - на сервер во внутренней сети 192.168.23.10. Без туннеля гре если пакеты приходят на внешний интерфейс машины, то через правило iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination 192.168.23.10:80. Но если пакеты приходят через туннель, то пакеты внутрь серой сети не пробрасываются. Можно сделать индивидуальное правило под гре-интерфейс: iptables -t nat -A PREROUTING -p tcp -i qrtun –dport 80 -j DNAT –to-destination 192.168.23.10:80
Добавлял правило:
213: from all to 192.168.23.0/24 iif qrtun lookup main
роли это не играет - все равно не воркает.
Прошу знающих коллег помочь победить проблему.