Есть бридж из двух физических сетевух, eth1, eth2. По бриджу бегут тегированные пакеты, но сам бридж о номерах вланов не знает (вланов много, часто меняются, на бридже прописать их нереально). ebtables и conntrack подгружены. drop, accept на бридже работают. При определенных дестинейшен ип и порт нужно делать днат на локалхост, точнее лупбек. На лупбеке повесил адрес 10.0.0.1, так как днат на 127/8 не всегда работает. Вот пример правила которое почему-то не работает: iptables -t nat -A PREROUTING -m physdev --physdev-in eth1 -d 1.1.1.1 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -s 10.0.0.1 -j SNAT --to-source 1.1.1.1 Пакеты приходят на eth1. Обратно (после сната) пакеты должны уходить через eth0, интерфейс нетегированный, за ним живет шлюз. Делаю из мира телнет, в иптаблесах счетчик дната увеличивается на единицу, но телнет не отвечает, syn+ack в ответ не приходит, и счетчики сната по нулям. С самой машины телнет проходит, проблема точно в днате. Может проблема в том что пакеты тегированные? Хотя днат ведь смотрит содержимое только ип пакета, и езернет тут не при чем, помню делали днат с езернета в тунель, правда пакеты были нетегированные. Может кто-то сталкивался, в гугле не нашел.
|