URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 63019
[ Назад ]

Исходное сообщение
"Пакеты застревают в таблицах iproute2"

Отправлено Cayz , 27-Дек-05 19:15 
Два pppoe от одного прова с разными тарифными планами
задача: перенаправить помеченый трафик на ppp1, остальное по дефолту на ppp0.

iptables -t mangle -A PREROUTING -s 192.168.0.2 -j MARK --set-mark 111

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j SNAT --to-source     213.227.238.63
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp1 -j SNAT --to-source 213.227.238.151

echo 150 xxx >> /etc/iproute2/rt_tables

ip rule add fwmark 111 table xxx
ip route add default dev ppp1 table xxx
ip route flush cache

дефолтный маршрут в main через ppp0

так вот все пакеты попадающие в таблицу xxx, там где дефолт на ppp1 дальше не двигаются, а если удалить в этой таблице default, то все нормально проваливается в main и идет на ppp0. Менял местами дефолтные маршруты все также... Тот что указан в xxx кудато трафик девает. Причем tcpdump говорит что пакетов на том интерфейсе и небыло
Пробовал загонять в таблицу пакеты по другим критериям (источник, направление) результат тот же - не проходит через дефолт в xxx.

Debian Sarge kernel 2.4.27 advanced и policy роутинги включены


Содержание

Сообщения в этом обсуждении
"Пакеты застревают в таблицах iproute2"
Отправлено ipmanyak , 28-Дек-05 07:41 
>Два pppoe от одного прова с разными тарифными планами
>задача: перенаправить помеченый трафик на ppp1, остальное по дефолту на ppp0.
>
>iptables -t mangle -A PREROUTING -s 192.168.0.2 -j MARK --set-mark 111
>
>iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j SNAT --to-source
>    213.227.238.63
>iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp1 -j SNAT --to-source
>213.227.238.151
>
>echo 150 xxx >> /etc/iproute2/rt_tables
>
>ip rule add fwmark 111 table xxx
>ip route add default dev ppp1 table xxx
>ip route flush cache
>
>дефолтный маршрут в main через ppp0
>
>так вот все пакеты попадающие в таблицу xxx, там где дефолт на
>ppp1 дальше не двигаются, а если удалить в этой таблице default,
>то все нормально проваливается в main и идет на ppp0. Менял
>местами дефолтные маршруты все также... Тот что указан в xxx кудато
>трафик девает. Причем tcpdump говорит что пакетов на том интерфейсе и
>небыло
>Пробовал загонять в таблицу пакеты по другим критериям (источник, направление) результат тот
>же - не проходит через дефолт в xxx.
>
>Debian Sarge kernel 2.4.27 advanced и policy роутинги включены

по-моему при наличии двух каналов нужно маршрутизировать по источнику
почитай  статью  http://www.osp.ru/lan/2002/05/042.htm   там есть примеры

"Пакеты застревают в таблицах iproute2"
Отправлено jonatan , 28-Дек-05 10:17 
Попробуйте так

ip route add default via 192.168.1.254 dev ppp1 table xxx
ip route add 192.168.1.254 dev ppp1 src 192.168.1.1 table xxx
или вместо последнего
ip route add 192.168.1.254 dev ppp1 proto kernel scope link src 192.168.1.1 table xxx

где
192.168.1.1 - адрес интерфейса ppp1
192.168.1.254 - адрес удаленного хоста для интерфейса ppp1


"Пакеты застревают в таблицах iproute2"
Отправлено Cayz , 29-Дек-05 02:27 
>Попробуйте так
>
>ip route add default via 192.168.1.254 dev ppp1 table xxx
>ip route add 192.168.1.254 dev ppp1 src 192.168.1.1 table xxx
>или вместо последнего
>ip route add 192.168.1.254 dev ppp1 proto kernel scope link src 192.168.1.1
>table xxx
>
>где
>192.168.1.1 - адрес интерфейса ppp1
>192.168.1.254 - адрес удаленного хоста для интерфейса ppp1

Попробовал, уже лучше пакеты появились на интерфейсе, даже ответы на пинги  на интерфейс приходят, но дальше (на пингующую машину) не идут.


"Пакеты застревают в таблицах iproute2"
Отправлено jonatan , 29-Дек-05 08:55 
Не совсем понял, кто кого пингует. Опишите подробней.

"Пакеты застревают в таблицах iproute2"
Отправлено Cayz , 29-Дек-05 14:03 
>Не совсем понял, кто кого пингует. Опишите подробней.

На роутере есть два ppp* интерфейса с белыми IP и eth0 с адресом локальной сети (192.168.0.6).

ставлю метки на пакеты
#iptables -t mangle -A PREROUTING -s 192.168.0.2 -j MARK --set-mark 110


#ip rule
    0:  from all  lookup local
32765:  from all  fwmark 0x6e  lookup xxx  
32766:  from all  lookup main
32767:  from all  lookup default

#ip route
213.227.224.8  dev ppp0  proto kernel  scope link  src 213.227.238.63
213.227.224.8  dev ppp1  proto kernel  scope link  src 213.227.238.151
192.168.0.1/24  dev eth0  proto kernel  scope link  src 192.168.0.6
default  dev ppp0  scope link

#ip route ls table xxx
213.227.224.8  dev ppp1  proto kernel  scope link  src 213.227.238.151
default  dev ppp1  scope link

Теперь пингую:
Пингую ya.ru со 192.168.0.2 одновременно слушаю tcpdump-ом, запросы на ya.ru уходят с ppp1 с адресом соответствующим адресу этого интерфейса (для него SNAT применен) ответы от ya.ru приходят на ppp1 , но до пингующей машины не доходят.

теперь удаляю файрвольное правило
#iptables -t mangle -D PREROUTING -s 192.168.0.2 -j MARK --set-mark 110

Пингую с той же машины (уже идет через ppp0) ya.ru все нормально все пингуется, ответ доходит до 192.168.0.2.


"Пакеты застревают в таблицах iproute2"
Отправлено jonatan , 29-Дек-05 14:41 
>#ip route
>213.227.224.8  dev ppp0  proto kernel  scope link  src
>213.227.238.63
>213.227.224.8  dev ppp1  proto kernel  scope link  src
>213.227.238.151
>192.168.0.1/24  dev eth0  proto kernel  scope link  src
>192.168.0.6
>default  dev ppp0  scope link
Странно. Таблица обычно выглядит так

213.227.224.8  dev ppp0  proto kernel  scope link  src 213.227.238.63
default via 213.227.224.8 dev ppp0

или Вы "руками" добавляете default gw?

Покажите правила iptables. Посмотрите на других интерфейсах tcpdump на предмет ответного пакета. Попробуйте все-таки маршрутизацию по источнику:
ip rule add from 192.168.0.2 table xxx


"Пакеты застревают в таблицах iproute2"
Отправлено Cayz , 29-Дек-05 15:05 
По пробовал добавить rule по источнику
add from 192.168.0.2
и по направлению
add to 63.209.10.216   (www.whatismyip.com)
действительно все работает... странно что с первого раза не получилось, наверное от переутомления....
Выходит, что маршрутизация по меткам пакетов не дружит с SNAT и MASQUERADE?

"Пакеты застревают в таблицах iproute2"
Отправлено jonatan , 29-Дек-05 15:27 
Млин, забыл, что iptables использует десятичные значения, а iproute2 - шестнадцатеричные. Попробуйте еще раз fwmark, но используйте метку, например, 2.

"Пакеты застревают в таблицах iproute2"
Отправлено jonatan , 29-Дек-05 15:55 
http://gazette.linux.ru.net/rus/articles/lartc/c1430.html
Некоторые наши читатели отмечают, что как минимум MASQ и SNAT конфликтуют с механизмом маркировки пакетов. Расти Рассел (Rusty Russell) описал эту проблему ( http://lists.samba.org/pipermail/netfilter/2000-November/006...). Просто, отключите фильтр проверки обратного адреса (см. главу Параметры настройки сети в ядре http://gazette.linux.ru.net/rus/articles/lartc/c1699.html) и все должно заработать.

"Пакеты застревают в таблицах iproute2"
Отправлено Cayz , 29-Дек-05 16:55 
Всем спасибо!!

Значит iproute нипричем

Действительно, отключил фильтр проверки обратного адреса для интерфейса на который роутятся пакеты по правилу fwmark и всё работает.
Теперь можно заняться распределением трафика между интерфейсами!
Всех с наступающим 2006 !!!!