Назад | Перейти на главную страницу

Как многократно входить из интерфейса [s]

У меня есть 3 интерфейса (2 wan, 1 локальный) и включена пересылка, но только один входящий интерфейс (ppp0) может попасть в локальный пункт назначения, следующая моя команда iptable:

iptables -t nat -A PREROUTING -i ppp0 -p tcp -m multiport --destination-ports 80,443 -j DNAT --to 10.66.66.253
iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --destination-ports 80,443 -j DNAT --to 10.66.66.253


############

Как я могу позволить eth1 входить в пункт назначения?

Вот мои правила IP и rt_tables:

root@net:~# ip rule
0:  from all lookup local
32762:  from all fwmark 0x2 lookup int0.out
32763:  from all fwmark 0x1 lookup ext0.out
32764:  from all to 61.x.x.x lookup ext0.out
32765:  from 61.x.x.x lookup ext0.out
32766:  from all lookup main
32767:  from all lookup default

root@net:~# ip route show table int0.out
default via 168.x.x.254 dev ppp0
10.66.66.0/24 dev eth2 scope link src 10.66.66.254

root@net:~# ip route show table ext0.out
default via 61.x.x.254 dev eth1
10.66.66.0/24 dev eth2 scope link src 10.66.66.254

Что я упустил (-понял)?

Спасибо за любую помощь!

Вы должны использовать цель connmark в своем наборе правил брандмауэра, чтобы ответы проходили через тот же интерфейс, через который были получены исходные пакеты. В вашей текущей конфигурации, даже если пакеты были получены на eth1 interface и DNAT, ответы направляются по маршруту по умолчанию, потому что метка брандмауэра не была установлена.

Я вижу, вы создали дополнительные правила маршрутизации по меткам межсетевого экрана. Итак, воспользуемся этим:

# set mark of the original redirected packets
iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i ppp0 -j MARK --set-mark 0x2

# save the firewall mark inside the conntrack entry (once for new connection)
iptables -t mangle -A POSTROUTING \
         -o eth2 -m conntrack --ctstate NEW \
    -j CONNMARK --save-mark

# for replies restore the firewall mark from conntrack entry
# to route replies through right interface
iptables -t mangle -A PREROUTING -i eth2 \
    -j CONNMARK --restore-mark

Вы можете улучшить эти правила с помощью дополнительных совпадений. Также вы можете даже избежать CONNMARK и использовать только -m conntrack --ctstate DNAT --ctdir REPLY --ctorigdst ... соответствие.

Также проверьте фильтр rp и установите его в loose режим с sysctl.

Для устранения проблем проверьте счетчики правил (iptables-save -c команда), вывести список conntrack table (conntrack -L command) и запустите tcpdump.