Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение TonnyBennet »

Здравствуйте.

Система UbuntuServer.

Есть 2 провайдера:
ООО Дон - внешний статический IP. Подключение по PPPoE
Энфорта - внешняя подсеть /30.

Сервер с 3-я сетевыми картами

eth0 192.168.0.10 - смотрит в 192.168.0.0/24
eth1 используется для поднятия PPPoE (адреса нет)
eth2 79.122.190.46 смотрит в сеть 79.122.190.44/30
ppp0 193.105.37.96 - PPPoE

Есть необходимость разделить трафик локальной сети на эти 2 канала.

Две локальных сети:
192.168.0.0/24 пользователей которой нужно выпускать в сеть через канал от ООО"Дон"
192.168.5.0/28 пользователей которой нужно выпускать в сеть через канал от Энфорты. (в оригинале это будет много подсетей (/29) из /24 и часть из них нужно будет отправить через второй канал)

Сеть 192.168.5.0/28 подключена через шлюз 192.168.0.14 (до применения нижеуказанных правил из сети 192.168.5.0/28 работал доступ в Интернет и в сеть 192.168.0.0/24).

По мануалу http://www.opennet.ru/base/net/debian_multilink.txt.html вроде бы всё сделал.

в rt_tables добавил

Код:

10 inet_don 20 net_enforta

в таблицы скриптом добавил маршруты

Код:

ip route show table inet_enforta 193.105.37.126 dev ppp0 scope link 79.122.190.44/30 dev eth2 scope link 192.168.5.0/28 via 192.168.0.14 dev eth0 192.168.0.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 79.122.190.45 dev eth2 ip route show table inet_don 79.122.190.44/30 dev eth2 scope link 192.168.5.0/28 via 192.168.0.14 dev eth0 192.168.0.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default dev ppp0 scope link sudo ip route show table main 193.105.37.126 dev ppp0 proto kernel scope link src 193.105.37.96 79.122.190.44/30 dev eth2 proto kernel scope link src 79.122.190.46 172.0.0.0/29 via 192.168.0.12 dev eth0 192.168.4.0/24 via 192.168.0.100 dev eth0 192.168.3.0/24 via 192.168.0.100 dev eth0 192.168.2.0/24 via 192.168.0.100 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10 default via 193.105.37.126 dev ppp0


Добавил правила в iptables

Код:

iptables -L -t mangle Chain PREROUTING (policy ACCEPT) target prot opt source destination MARK all -- localnet/24 !localnet/24 MARK set 0xa RETURN all -- localnet/24 !localnet/24 MARK all -- 192.168.5.0/28 !192.168.5.0/28 MARK set 0x14 MARK all -- 192.168.5.0/28 !localnet/24 MARK set 0x14 RETURN all -- 192.168.5.0/28 !localnet/24


Интернет работает только в сети 192.168.0.0/24 но я подозреваю что маршрутизация идёт по таблице main. Если из main убрать default gateway то доступа в Интернет нет.

Если из сети 192.168.5.0/28 пинговать внешние адреса - эти пакеты дальше интерфейса eth0 моего сервера не выходят.

Как проверить ставится ли на них метка и попадают ли они в свои таблицы маршрутизации? Может я какие-то модули не включил?








Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение Bluetooth »

TonnyBennet писал(а):
06.12.2011 18:24
Если из сети 192.168.5.0/28 пинговать внешние адреса - эти пакеты дальше интерфейса eth0 моего сервера не выходят.

Нужно добавить в основную таблицу маршрутизации маршрут на эту подсеть.
Как проверить ставится ли на них метка и попадают ли они в свои таблицы маршрутизации? Может я какие-то модули не включил?

Ну, правила меток я вижу. А где собсно "заворачивание" их в нужную таблицу маршрутизации?

Лично я делаю это "заворачивание" с помощью подобных вещей. Может, если другие способы - я не знаю.
http://lartc.org/howto/lartc.rpdb.html
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение sash-kan »

TonnyBennet
всё-таки таблица как называется: net_enforta или inet_enforta?

Bluetooth
с помощью ip rule и происходит управление политиками маршрутизации, других секретных команд нет·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение TonnyBennet »

Bluetooth писал(а):
06.12.2011 19:17
TonnyBennet писал(а):
06.12.2011 18:24
Если из сети 192.168.5.0/28 пинговать внешние адреса - эти пакеты дальше интерфейса eth0 моего сервера не выходят.

Нужно добавить в основную таблицу маршрутизации маршрут на эту подсеть.
Как проверить ставится ли на них метка и попадают ли они в свои таблицы маршрутизации? Может я какие-то модули не включил?

Ну, правила меток я вижу. А где собсно "заворачивание" их в нужную таблицу маршрутизации?

Лично я делаю это "заворачивание" с помощью подобных вещей. Может, если другие способы - я не знаю.
http://lartc.org/howto/lartc.rpdb.html


Добавил.

Код:

ip route show table main 193.105.37.126 dev ppp0 proto kernel scope link src 193.105.37.96 79.122.190.44/30 dev eth2 proto kernel scope link src 79.122.190.46 172.0.0.0/29 via 192.168.0.12 dev eth0 192.168.5.0/28 via 192.168.0.14 dev eth0 192.168.4.0/24 via 192.168.0.100 dev eth0 192.168.3.0/24 via 192.168.0.100 dev eth0 192.168.2.0/24 via 192.168.0.100 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10 default via 193.105.37.126 dev ppp0


Результата нет.

Вот само заворачиваение в таблицы:

Код:

ip rule 0: from all lookup local 32762: from all fwmark 0x14 lookup inet_enforta 32763: from all fwmark 0xa lookup inet_don 32764: from 79.122.190.46 lookup inet_enforta 32765: from 193.105.37.96 lookup inet_don 32766: from all lookup main 32767: from all lookup default




sash-kan писал(а):
07.12.2011 04:06
TonnyBennet
всё-таки таблица как называется: net_enforta или inet_enforta?


называется inet_enforta. Почему выше написал net_enforta.... сам не понимаю....

Содержимое файла rt_tables

Код:

# # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1<---->inr.ruhep 10 inet_don 20 inet_enforta


Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение TonnyBennet »

сейчас увидел что если делать трассу из сети 192.168.5.0/28 то она обрывается на основном шлюзе провайдера

Код:

tracert -d 8.8.8.8 Трассировка маршрута к 8.8.8.8 с максимальным числом прыжков 30 1 <1 мс <1 мс <1 мс 192.168.5.1 2 2 ms 1 ms 1 ms 192.168.0.10 3 100 ms 79 ms 80 ms 79.122.190.45 4 * * * Превышен интервал ожидания для запроса ^C
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение TonnyBennet »

Доступ из сети 192.168.5.0/28 в Интернет заработал только с такими правилами

Код:

32762: from all iif eth2 lookup inet_enforta 32764: from 192.168.5.0/28 lookup inet_enforta


Пока не понятно почему не работает MARK и fwmark соответственно


смотрю на своём маршрутизаторе.

на интерфейс eth0 из сети 192.168.5.0/28 приходит запрос к какому-то узлу (пингую)
на интерфейсе eth2 есть и запрос после ната т.е. адрес пакета уже 79.122.190.46 и есть ответ на адрес 79.122.190.46.

Ответ от узла приходит.... но вот до клиента он не доходит :(
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Решено: iproute2 не обрабатывает маршруты в добавленных таблицах

Сообщение TonnyBennet »

Всё заработало. Проблема была в Reverse Path Filter

echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ppp0/rp_filter

Наткнулся здесь
http://hexbot.blogspot.com/2009/03/2-connmark.html
Спасибо сказали: