Входные данные:
eth0 - локалка
eth1 - подключение к главному каналу (приоритетный https)
eth2 - 192.168.1.2 (шлюз 192.168.1.1, ADSL модем) подключение ко второму каналу (резервный, он же должен обслуживать неприоритетный трафик)
Пытаюсь сначала завернуть 25 порт на eth2:
Код: Выделить всё
cat 100 norior >>/etc/iproute2/rt_tables
iptables -A PREROUTING -s 192.168.0.0/24 -t mangle -p tcp --dport 25 -j MARK --set-mark 100
ip route add default via 192.168.1.1 dev eth2 table noprior
ip rule add fwmark 100 table nopriorПроверяем:
Код: Выделить всё
router:/etc/iproute2 # cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
#36 GAZINTER
#37 BALTNET
100 nopriorКод: Выделить всё
router:/etc/iproute2 # ip route show table all
default via 192.168.1.1 dev eth2 table noprior
212.44.83.180/30 dev eth1 proto kernel scope link src 212.44.83.182
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1
169.254.0.0/16 dev eth0 scope link
127.0.0.0/8 dev lo scope link
default via 212.44.83.181 dev eth1
broadcast 192.168.1.0 dev eth2 table local proto kernel scope link src 192.168.1.2
broadcast 192.168.0.255 dev eth0 table local proto kernel scope link src 192.168.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
local 192.168.1.2 dev eth2 table local proto kernel scope host src 192.168.1.2
local 192.168.0.1 dev eth0 table local proto kernel scope host src 192.168.0.1
broadcast 192.168.1.255 dev eth2 table local proto kernel scope link src 192.168.1.2
broadcast 192.168.0.0 dev eth0 table local proto kernel scope link src 192.168.0.1
local 212.44.83.182 dev eth1 table local proto kernel scope host src 212.44.83.182
local 127.0.0.2 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 212.44.83.183 dev eth1 table local proto kernel scope link src 212.44.83.182
broadcast 212.44.83.180 dev eth1 table local proto kernel scope link src 212.44.83.182
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1Код: Выделить всё
router:/etc/iproute2 # iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- 192.168.0.0/24 anywhere tcp dpt:smtp MARK xset 0x64/0xffffffff
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destinationКод: Выделить всё
router:/etc/iproute2 # ip rule show
0: from all lookup local
32765: from all fwmark 0x64 lookup noprior
32766: from all lookup main
32767: from all lookup defaultПробуем подключиться:
Код: Выделить всё
snake@balt:~> telnet 217.168.77.140 25
Trying 217.168.77.140...и висит. Опускаем интерфейс eth1 - та же песня, т.е. коннекти типа вроде как идёт...
Поднимаем eth1, убираем правило - всё нормально, коннектится...
В чём моя ошибка? Пока не могу понять...