Два 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.151echo 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 роутинги включены
>Два 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 там есть примеры
Попробуйте так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
>Попробуйте так
>
>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Попробовал, уже лучше пакеты появились на интерфейсе, даже ответы на пинги на интерфейс приходят, но дальше (на пингующую машину) не идут.
Не совсем понял, кто кого пингует. Опишите подробней.
>Не совсем понял, кто кого пингует. Опишите подробней.На роутере есть два 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.
>#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
По пробовал добавить rule по источнику
add from 192.168.0.2
и по направлению
add to 63.209.10.216 (www.whatismyip.com)
действительно все работает... странно что с первого раза не получилось, наверное от переутомления....
Выходит, что маршрутизация по меткам пакетов не дружит с SNAT и MASQUERADE?
Млин, забыл, что iptables использует десятичные значения, а iproute2 - шестнадцатеричные. Попробуйте еще раз fwmark, но используйте метку, например, 2.
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) и все должно заработать.
Всем спасибо!!Значит iproute нипричем
Действительно, отключил фильтр проверки обратного адреса для интерфейса на который роутятся пакеты по правилу fwmark и всё работает.
Теперь можно заняться распределением трафика между интерфейсами!
Всех с наступающим 2006 !!!!