LINUX.ORG.RU
ФорумAdmin

Помогите плиз. Не работает iproute2


0

0

Есть вот такая схема:
сеть 192.168.0.0/24 ->шлюз eth1 192.168.0.1 eth0 10.0.0.2 -> gateway 10.0.0.1
всё работает прекрасно.

появилась необходимость, чтобы сеть 192.168.1.0/24 работала через второй канал
и второй 2-й gateway 10.10.10.1 по схеме:

сеть 192.168.1.0/24 ->шлюз eth2 192.168.1.1 eth0:1 10.10.10.2 -> gateway 10.10.10.1
Интерфейсы есть:
eth0 10.0.0.2
eth0:1 10.10.10.2
eth1 192.168.0.1
eth2 192.168.1.1
делаю следующие правила:

ip route add 10.10.10.0/30 dev eth0:1 src 10.10.10.2 table T2
ip route add default via 10.10.10.1 table T2

ip route add 10.10.10.0/30 dev eth0:1 table T2

ip route add 192.168.1.0/24 dev eth2 table T2
ip rule add from 192.168.1.0/24 table T2
ip route add 127.0.0.0/8 dev lo table T2

в результате имею:
ip rule list
0: from all lookup 255
32763: from 10.10.10.0/30 lookup T2
32764: from 192.168.14.0/24 lookup T2
32766: from all lookup main
32767: from all lookup default

ip route list table T2
10.10.10.0/30 dev eth0 scope link src 10.10.10.2
192.168.1.0/24 dev eth2 scope link
127.0.0.0/8 dev lo scope link
default via 10.10.10.1 dev eth0

трасса с маршрутизатора:
traceroute -n ya.ru -s 10.10.10.2
traceroute to ya.ru (213.180.204.8) from 10.10.10.2, 30 hops max, 40 byte packets
1 10.0.0.1 0.708 ms 1.587 ms 0.449 ms
уходит всё равно по дефолтному

traceroute -n ya.ru -s 192.168.1.1
traceroute to ya.ru (213.180.204.8) from 192.168.1.1, 30 hops max, 40 byte packets
1 10.0.0.1 0.708 ms 1.587 ms 0.449 ms
уходит всё равно по дефолтному

трасса с компа с сети:
traceroute -n ya.ru -s 192.168.1.5
traceroute to ya.ru (213.180.204.8) from 192.168.1.5, 30 hops max, 40 byte packets
1 10.0.0.1 0.708 ms 1.587 ms 0.449 ms
уходит всё равно по дефолтному

но Пинг до 2-го gw работает:
$ ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=254 time=6.33 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=254 time=0.725 ms

iptables настроены пока так, но чую дело совсем не в них.
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t mangle
iptables -F -t nat
iptables -t mangle -X
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 10.0.0.2
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 10.10.10.2

в конфиге ядра 2.6.17.13 нужные строки присутсвуют:
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y

Помогите, что ещё нужно сделать? Очень нужно

anonymous

32764: from 192.168.14.0/24 lookup T2
опечатка! читать нужно как
32764: from 192.168.1.0/24 lookup T2

anonymous
()
Ответ на: комментарий от anonymous

пока выяснил такую вещь, default gw для второго соединения не работает, если оба gefault gw через один _физический_ интерфейс. в моём случае это eth0. iproute2 не умеет(?!) оперировать с алиасами вида eth0:1. Если я добавляю 2-й физический интерфейс скажем eth3 и говорю default gw через него, то всё работает. Может где и ошибаюсь, но на стенде это утверждение я проверил.

anonymous
()
Ответ на: комментарий от anonymous

Совет: используйте лучше traceroute -I, linux почему-то хреново маршрутизирует (? плохие) UDP пакеты. (Я ж надеюсь "ip route flush cache" после добавления правил/маршрутов не забыли сделать ?)
А еще лучше - ping откуда надо + tcpdump на шлюзе.

> default gw для второго соединения не работает, если оба gefault gw через один _физический_ интерфейс
Нет, все должно работать, особенно если эти default-маршруты описаны в разных таблицах.

> iproute2 не умеет(?!) оперировать с алиасами вида eth0:1
Нет, точно так же, как и iptables. И это правильно, т.к. физический интерфейс все равно один и тот же, а выход с другим src IP можно задать либо явным указанием "src x.x.x.x" в маршруте (для локальных исходящих пакетов), либо через SNAT (для транзитных).

> и говорю default gw через него
Поподробнее можно ?

spirit ★★★★★
()
Ответ на: комментарий от spirit

>надеюсь "ip route flush cache"
естественно

> и говорю default gw через него
Поподробнее можно ?
я делал на стенде, с другими айпи.

поднимаю eth3 вместо eth0:1 c адресом 10.10.10.2
все настройки остаются теми же, только в правилах eth0:1 меняется на eth3
ip route add 0/0 via 10.10.10.1 dev eth3 table T2
все пакеты с 192.168.1.0/24 начинают сыпаться на eth3 (смотрю tcpdump-ом) (при условии что на том конце 10.10.10.1 существует. это к вопросу о стенде)
возвращаю всё назад, на eth0:1 и всё опять идёт через 10.0.0.1 :(




anonymous
()
Ответ на: комментарий от anonymous

Странно, по идее должно работать...
А что говорит команда "ip route get 1.1.1.1 from 192.168.1.100 iif eth2" ?
Да, а 10.0.0.1 и 10.10.10.1 - это физически разные шлюзы или это один и тот же шлюз, у которого тоже 2 IP на одном интерфейсе ?

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.