Есть 2 канала в интернет ppp0 и eth1
Есть локальная сетевуха eth0
Сеть 192.168.1.0/24
Хочу настроить, чтоб smtp трафик шел через интерфейс ррр0, а весь остальной через eth1.
на iptables включен маскарадинг для ppp0 и eth1. ip адреса везде статические
INPUT, OUTPUT, FORWARD - все ACCEPT.
маркирую smtp пакеты
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j MARK --set-mark 1
В ip route добавил
echo 201 mail.out >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table mail.out
ip route add default via 195.96.98.253 dev ppp0 table mail.out
ip route flush cache
маршрут по умолчанию через eth1
ПРОБЛЕМА:
Пакеты с локального интерфейса (допустим 192.168.1.7) -> на smtp.mail.ru идут на роутер
далее с интерфейса ррр0 -> smtp.mail.ru
далее ответ smtp.mail.ru -> ррр0
а вот с ррр0 на 192.168.1.7 он не приходит.
Мож кто сталкивался с подобной проблемой?
Заранее всем спасибо!
>Есть 2 канала в интернет ppp0 и eth1
>Есть локальная сетевуха eth0
>Сеть 192.168.1.0/24
>Хочу настроить, чтоб smtp трафик шел через интерфейс ррр0, а весь остальной
>через eth1.
>на iptables включен маскарадинг для ppp0 и eth1. ip адреса везде статические
>
>INPUT, OUTPUT, FORWARD - все ACCEPT.
>маркирую smtp пакеты
>iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j
>MARK --set-mark 1
>В ip route добавил
>echo 201 mail.out >> /etc/iproute2/rt_tables
>ip rule add fwmark 1 table mail.out
>ip route add default via 195.96.98.253 dev ppp0 table mail.out
>ip route flush cache
>маршрут по умолчанию через eth1
>ПРОБЛЕМА:
>Пакеты с локального интерфейса (допустим 192.168.1.7) -> на smtp.mail.ru идут на роутер
>далее с интерфейса ррр0 -> smtp.mail.ru
>далее ответ smtp.mail.ru -> ррр0
>а вот с ррр0 на 192.168.1.7 он не приходит.
>Мож кто сталкивался с подобной проблемой?
>Заранее всем спасибо!Чтобы не городить огород с изменением таблицы маршрутизации, советую воспользоваться расширением POM для iptables, а имеено модулем ROUTE
Он позволит одним простым правилом сделать то, что Вы задумали:
iptables -A POSTROUTING -t mangle -p tcp --dport 25 -j ROUTE --oif ppp0Скачать POM можно с офиц. сайта:
http://www.netfilter.org/patch-o-matic/
>>Есть 2 канала в интернет ppp0 и eth1
>>Есть локальная сетевуха eth0
>>Сеть 192.168.1.0/24
>>Хочу настроить, чтоб smtp трафик шел через интерфейс ррр0, а весь остальной
>>через eth1.
>>на iptables включен маскарадинг для ppp0 и eth1. ip адреса везде статические
>>
>>INPUT, OUTPUT, FORWARD - все ACCEPT.
>>маркирую smtp пакеты
>>iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j
>>MARK --set-mark 1
>>В ip route добавил
>>echo 201 mail.out >> /etc/iproute2/rt_tables
>>ip rule add fwmark 1 table mail.out
>>ip route add default via 195.96.98.253 dev ppp0 table mail.out
>>ip route flush cache
>>маршрут по умолчанию через eth1
>>ПРОБЛЕМА:
>>Пакеты с локального интерфейса (допустим 192.168.1.7) -> на smtp.mail.ru идут на роутер
>>далее с интерфейса ррр0 -> smtp.mail.ru
>>далее ответ smtp.mail.ru -> ррр0
>>а вот с ррр0 на 192.168.1.7 он не приходит.
>>Мож кто сталкивался с подобной проблемой?
>>Заранее всем спасибо!
>
>Чтобы не городить огород с изменением таблицы маршрутизации, советую воспользоваться расширением POM
>для iptables, а имеено модулем ROUTE
>
>Он позволит одним простым правилом сделать то, что Вы задумали:
>iptables -A POSTROUTING -t mangle -p tcp --dport 25 -j ROUTE --oif
>ppp0
>
>Скачать POM можно с офиц. сайта:
>http://www.netfilter.org/patch-o-matic/А чтоб не компилить ядро и не переустанавливать iptables?
>А чтоб не компилить ядро и не переустанавливать iptables?
Ядро компилить не надо, надо скомпилить модуль для ядра - полминуты
если iptables 1.3.5, то его тоже не надо переустанавливать. А если меньше, то стоит обновить и по другим соображениям.А по сути, попробуй добавить в фаервол
iptables -A POSTROUTING -t nat -o ppp0 -j SNAT --to-source айпи_адрес_интерфейса_ppp0Если не поможет, положи сюда результат работы этих команд
#tcpdump -vni ppp0 tcp port 25
#tcpdump -vni eth0 tcp port 25
#tcpdump -vni eth1 tcp port 25Естественно при попытке соединения с smtp.mail.ru:25
Также было бы приятно увидеть
#iptables -vL -n
#iptables -vL -n -t mangle
#iptables -vL -n -t nat
>>А чтоб не компилить ядро и не переустанавливать iptables?
>Ядро компилить не надо, надо скомпилить модуль для ядра - полминуты
>если iptables 1.3.5, то его тоже не надо переустанавливать. А если меньше,
>то стоит обновить и по другим соображениям.
>
>А по сути, попробуй добавить в фаервол
>iptables -A POSTROUTING -t nat -o ppp0 -j SNAT --to-source айпи_адрес_интерфейса_ppp0
>
>Если не поможет, положи сюда результат работы этих команд
>#tcpdump -vni ppp0 tcp port 25
>#tcpdump -vni eth0 tcp port 25
>#tcpdump -vni eth1 tcp port 25
>
>Естественно при попытке соединения с smtp.mail.ru:25
>
>Также было бы приятно увидеть
>#iptables -vL -n
>#iptables -vL -n -t mangle
>#iptables -vL -n -t natПоставил я РОМ, все равно не помогло. :(
При добавлении правила:
iptables -A POSTROUTING -t mangle -p tcp --dport 25 -j ROUTE --oif ppp0
пакеты в инет уходят с локальным айпишником 1.7.Выкладываю...
#tcpdump -vni ppp0 tcp port 25
tcpdump -i ppp0 port smtp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
13:38:10.277518 IP as-1-19.ar23-1s.kharkov.ukrtel.net.1810 > smtp.mail.ru.smtp: S 1318081599:1318081599(0) win 64240 <mss 1460,nop,nop,sackOK>
13:38:10.381995 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
13:38:13.213546 IP as-1-19.ar23-1s.kharkov.ukrtel.net.1810 > smtp.mail.ru.smtp: S 1318081599:1318081599(0) win 64240 <mss 1460,nop,nop,sackOK>
13:38:13.320545 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
13:38:16.319091 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
13:38:19.231705 IP as-1-19.ar23-1s.kharkov.ukrtel.net.1810 > smtp.mail.ru.smtp: S 1318081599:1318081599(0) win 64240 <mss 1460,nop,nop,sackOK>
13:38:19.338634 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
13:38:25.342719 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
13:38:37.336895 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>>#tcpdump -vni eth1 tcp port 25
Пусто
tcpdump -i eth0 port smtp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:20:33.100342 IP 192.168.1.7.1797 > smtp.mail.ru.smtp: S 1053990361:1053990361
(0) win 64240 <mss 1460,nop,nop,sackOK>
13:20:36.025077 IP 192.168.1.7.1797 > smtp.mail.ru.smtp: S 1053990361:1053990361
(0) win 64240 <mss 1460,nop,nop,sackOK>
13:20:41.942916 IP 192.168.1.7.1797 > smtp.mail.ru.smtp: S 1053990361:1053990361
(0) win 64240 <mss 1460,nop,nop,sackOK>
13:21:31.737733 IP 192.168.1.7.1798 > smtp.mail.ru.smtp: S 1068649774:1068649774(0) win 64240 <mss 1460,nop,nop,sackOK>
13:21:34.702040 IP 192.168.1.7.1798 > smtp.mail.ru.smtp: S 1068649774:1068649774(0) win 64240 <mss 1460,nop,nop,sackOK>
13:21:40.720182 IP 192.168.1.7.1798 > smtp.mail.ru.smtp: S 1068649774:1068649774(0) win 64240 <mss 1460,nop,nop,sackOK>
13:22:37.568108 IP 192.168.1.7.1799 > smtp.mail.ru.smtp: S 1085098239:1085098239(0) win 64240 <mss 1460,nop,nop,sackOK>
13:22:40.500480 IP 192.168.1.7.1799 > smtp.mail.ru.smtp: S 1085098239:1085098239(0) win 64240 <mss 1460,nop,nop,sackOK>
13:22:46.518632 IP 192.168.1.7.1799 > smtp.mail.ru.smtp: S 1085098239:1085098239(0) win 64240 <mss 1460,nop,nop,sackOK>iptables -vL
Chain INPUT (policy ACCEPT 5131 packets, 1797K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT tcp -- ppp0 any anywhere anywhere tcp spt:smtpChain FORWARD (policy ACCEPT 258 packets, 28810 bytes)
pkts bytes target prot opt in out source destination
3 144 ACCEPT tcp -- eth0 ppp0 anywhere anywhere tcp dpt:smtp
0 0 ACCEPT tcp -- ppp0 eth0 anywhere anywhere tcp dpt:smtpChain OUTPUT (policy ACCEPT 5767 packets, 1778K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any lo anywhere anywhere
0 0 ACCEPT tcp -- any ppp0 anywhere anywhere tcp dpt:smtpiptables -vL -t mangle
Chain PREROUTING (policy ACCEPT 14337 packets, 3520K bytes)
pkts bytes target prot opt in out source destination
3 144 MARK tcp -- eth0 any anywhere anywhere tcp dpt:smtp MARK set 0x1Chain INPUT (policy ACCEPT 13115 packets, 3402K bytes)
pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 1035 packets, 108K bytes)
pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 14934 packets, 3899K bytes)
pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 15969 packets, 4007K bytes)
pkts bytes target prot opt in out source destinationiptables -vL -t nat
Chain PREROUTING (policy ACCEPT 988 packets, 68447 bytes)
pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 13 packets, 1430 bytes)
pkts bytes target prot opt in out source destination
254 15152 MASQUERADE all -- any eth1 anywhere anywhere
1 48 SNAT all -- any ppp0 192.168.1.0/24 anywhere to:82.207.76.51Chain OUTPUT (policy ACCEPT 343 packets, 21309 bytes)
pkts bytes target prot opt in out source destination
>Поставил я РОМ, все равно не помогло. :(
>При добавлении правила:
>iptables -A POSTROUTING -t mangle -p tcp --dport 25 -j ROUTE --oif
>ppp0
>пакеты в инет уходят с локальным айпишником 1.7.
>
>Выкладываю...
>#tcpdump -vni ppp0 tcp port 25
>tcpdump -i ppp0 port smtp
>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
>
>listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
>13:38:10.277518 IP as-1-19.ar23-1s.kharkov.ukrtel.net.1810 > smtp.mail.ru.smtp: S 1318081599:1318081599(0) win 64240 <mss 1460,nop,nop,sackOK>
Ушел правильный SYN пакет. Все в порядке.
>13:38:10.381995 IP smtp.mail.ru.smtp > as-1-19.ar23-1s.kharkov.ukrtel.net.1810: S 319225599:319225599(0) ack 1318081600 win 32768 <mss 1460>
Получен правильный SYN-ACK пакет. Все в порядке.
>13:38:13.213546 IP as-1-19.ar23-1s.kharkov.ukrtel.net.1810 > smtp.mail.ru.smtp: S 1318081599:1318081599(0) win 64240 <mss 1460,nop,nop,sackOK>
А вот тут, можно заметить, что конечный адресат предыдущего пакета, его не получил. И пытаеться посылать снова.>tcpdump -i eth0 port smtp
>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
>
>listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
>13:20:33.100342 IP 192.168.1.7.1797 > smtp.mail.ru.smtp: S 1053990361:1053990361 (0) win 64240 <mss 1460,nop,nop,sackOK>
Посылаем SYN пакет, все в порядке
>13:20:36.025077 IP 192.168.1.7.1797 > smtp.mail.ru.smtp: S 1053990361:1053990361 (0) win 64240 <mss 1460,nop,nop,sackOK>
Не получаем ответа на SYN пакет, пытаемся послать снова.Дальше становится понятным где искать ошибку.
1.Клиент из локальной сети отправляет SYN
2.SYN доходит до адресата
3.Адресат возвращает SYN-ACK на роутер
4.А вот до клиента сети этот SYN-ACK не доходит.>
>iptables -vL
>
>Chain INPUT (policy ACCEPT 5131 packets, 1797K bytes)
> pkts bytes target prot opt in
> out source
>
> destination
> 0 0 ACCEPT
> all -- lo
> any anywhere
> anywhere
> 0 0 ACCEPT
> tcp -- ppp0 any
> anywhere
> anywhere
> tcp spt:smtp
>
>Chain FORWARD (policy ACCEPT 258 packets, 28810 bytes)
> pkts bytes target prot opt in
> out source
>
> destination
> 3 144 ACCEPT
> tcp -- eth0 ppp0
> anywhere
> anywhere
> tcp dpt:smtp
> 0 0 ACCEPT
> tcp -- ppp0 eth0
> anywhere
> anywhere
> tcp dpt:smtp
Ошибка тут. tcp dpt надо изменить на src dpt.
Опечатка.
Надо заменить tcp dpt:smtp на tcp src:smtp
>Опечатка.
>Надо заменить tcp dpt:smtp на tcp src:smtpВ любом случае политика по умолчанию для цепочки forward- Accept
но тем не менее действительно опечатался.
заменил
tcp src:smtp
но проблема не решилась, все равно пакеты не проходят на локальный интерфейс и не доходят до локальной машины. :(
Если я правильно понимаю ситуацию, то локальный пакет приходит на роутер, маркируеться, для него выбираеться маршрут через ppp0, маскарадиться, отправляеться на мэил.ру
Оттуда приходит ответ, обратное преобразование айпи адреса, пакет уходит в локальную сеть.
Так вот, я подозреваю что пакет, который приходит с меил.ру на ppp0, попадает не в ту таблицу обратного преобразования...
И я даже не знаю, как это все проверить.. :)