Здравствуте,Я пытаюсь настроить перенаправление всех коннектов на порт 161 через второй шлюз в то время как остальные коннекты должны идти на прямую.
Схема:
[локалхост] -> [впншлюз] -> [сервер] - OK
[локалхост] <- [впншлюз] <- [сервер] - пакет исчезает после впн туннеля. То есть я могу ответный пакет проснифать на tun0 но дальше он просто исчезает
при этом -A INPUT -j ACCEPT стоит. В итоге приложение не видит ответный пакет и переотправляет его пока ему это не надоедает. С TCP пакетами происходит аналогичное, TCP-retransmission ловлю на шлюзе
на шлюзе обычный маскарад стоит даже без указания откуда и куда, короче если как шлюз указать главный все прекрасно работает
что я делал что бы настроить это шаманство
создал новую таблицу в rt_tables 201 gw1
далее правила
ip route add default via 10.8.0.1 dev tun0 table gw1
ip rule add fwmark 0x1 table gw1
iptables -A OUTPUT -t mangle -o eth0 -p tcp --dport 443 -j MARK --set-mark 1
iptables -A POSTROUTING -t nat -o tun0 -p tcp --dport 443 -j SNAT --to 10.8.0.2
iptables -A OUTPUT -t mangle -o eth0 -p udp --dport 161 -j MARK --set-mark 1
iptables -A POSTROUTING -t nat -o tun0 -p udp --dport 161 -j SNAT --to 10.8.0.2
Ну вот и все собственно, и происходит указанная ситуация.
Пытался менять SNAT на маскарад на локалхосте - ничего не меняется все тоже самое.
DNAT еще ковырял но чето я не так делаю видимо
Может там какое-то очередная "фича" в sysctl.conf которую надо отключить или включить? Вечно это г*вно всю картину маршрутизации портит (извиняюсь, накипело уже)
Ах да система centos 7, но это не так важно я думаю