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

Исходное сообщение
"Маршрутизация по портам в linux..."

Отправлено Сергей , 16-Окт-07 16:27 
Доброе время суток!

Подскажите, кто знает, как решить такую задачу...
Есть 2 сетевых интерфейса, каждый в своей подсетке...
Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а  трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.

Шлюз по умолчанию - адрес через 1-ый интерфейс.

У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой интерфейс), а то что сам DNS сервер генерит уходит на шлюз по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???


Содержание

Сообщения в этом обсуждении
"Маршрутизация по портам в linux..."
Отправлено kailex , 16-Окт-07 17:08 
>[оверквотинг удален]
>Есть 2 сетевых интерфейса, каждый в своей подсетке...
>Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а  
>трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.
>
>Шлюз по умолчанию - адрес через 1-ый интерфейс.
>
>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>

с помощью iptables помечать пакеты на 53 порту (--mark), с помощью iproute загонять эти пакеты в таблицу, в которой шлюз по умолчанию настроен на второй интерфейс.

почитай здесь
http://www.opennet.ru/openforum/vsluhforumID1/74353.html


"Маршрутизация по портам в linux..."
Отправлено Сергей , 16-Окт-07 20:43 
>[оверквотинг удален]
>>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>>
>
>с помощью iptables помечать пакеты на 53 порту (--mark), с помощью iproute
>загонять эти пакеты в таблицу, в которой шлюз по умолчанию настроен
>на второй интерфейс.
>
>почитай здесь
>http://www.opennet.ru/openforum/vsluhforumID1/74353.html

Там как раз написано, что таким образом работать не будет, т.к. решение о маршрутизации пакета от локального приложения принимается 1-ым делом еще до поступления пакета в таблицу mangle цепочки OUTPUT. Я сам попробовал это все проделать - ничего не работает.



"Маршрутизация по портам в linux..."
Отправлено pavel_simple , 17-Окт-07 08:00 
echo secondiface >>/etc/iproute2/rt_tables
ip rule add from xxx.xxx.xxx.xxx table secondiface (здесь иксами ip второго интерфейса)
ip route add default via yyy.yyy.yyy.yyy dev eth2 src xxx.xxx.xxx.xxx table secondiface (здесь вайками шлюз второго интерфейса)
ip route flush cache

шлюз по умолчанию настроен только на первом интерфейсе

основной трафик будет идти через первый -- НО все запросы которые пришли со второго на втором и остануться


"Маршрутизация по портам в linux..."
Отправлено Сергей , 17-Окт-07 09:49 
>[оверквотинг удален]
>ip rule add from xxx.xxx.xxx.xxx table secondiface (здесь иксами ip второго интерфейса)
>
>ip route add default via yyy.yyy.yyy.yyy dev eth2 src xxx.xxx.xxx.xxx table secondiface
>(здесь вайками шлюз второго интерфейса)
>ip route flush cache
>
>шлюз по умолчанию настроен только на первом интерфейсе
>
>основной трафик будет идти через первый -- НО все запросы которые пришли
>со второго на втором и остануться

Да, спасибо за совет, так все работает. Однако, ситуация, когда, например, ДНС сервер сам не знает ответа на запрос клиента, заставляет его самого инициировать коннект на другой ДНС сервер, и этот трафик, к сожалению, попадает на первый интерфейс, т.е. не туда куда нужно. Но часть трафика (запрос от клиента - ответ (если он локально известен)) хотябы сейчас идет куда нужно, утилизация на 1-ом интерфейсе упала немного. Спасибо еще раз.)


"Маршрутизация по портам в linux..."
Отправлено pavel_simple , 17-Окт-07 12:20 
хех -- пожалуйста
а если добавить
iptables -t mangle -A OUTPUT -m conntrack --ctstate NEW --ctproto udp -p udp --dport 53 -j MARK --set-mark 1
ip rule add fwmark 1 table secondiface


"Маршрутизация по портам в linux..."
Отправлено Сергей , 17-Окт-07 13:24 
>хех -- пожалуйста
>а если добавить
>iptables -t mangle -A OUTPUT -m conntrack --ctstate NEW --ctproto udp -p
>udp --dport 53 -j MARK --set-mark 1
>ip rule add fwmark 1 table secondiface

Решение о маршрутизации принимается до того как пакет попадет в OUTPUT. Так что пофиг.


"Маршрутизация по портам в linux..."
Отправлено Oyyo , 17-Окт-07 14:39 
>>хех -- пожалуйста
>>а если добавить
>>iptables -t mangle -A OUTPUT -m conntrack --ctstate NEW --ctproto udp -p
>>udp --dport 53 -j MARK --set-mark 1
>>ip rule add fwmark 1 table secondiface
>
>Решение о маршрутизации принимается до того как пакет попадет в OUTPUT. Так
>что пофиг.

ошибочное понимание движения пакетов, в данном примере используется цепочка OUTPUT таблицы mangle
и эта цепочка работает с пакетами от локальных процессов
внимательней прочтите порядок движения пакетов от локальных процессов
http://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGGENERAL


"Маршрутизация по портам в linux..."
Отправлено L0n3R4ng3r , 17-Окт-07 15:52 
>[оверквотинг удален]
>Есть 2 сетевых интерфейса, каждый в своей подсетке...
>Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а  
>трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.
>
>Шлюз по умолчанию - адрес через 1-ый интерфейс.
>
>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>

а что мешает поднять днс с вюверами,
и локальным клиентам сделать отдельный wiev с
recursion no;
????
тогда все проблемы отпадут...


"Маршрутизация по портам в linux..."
Отправлено Сергей , 17-Окт-07 16:19 
>[оверквотинг удален]
>>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>>
>
>а что мешает поднять днс с вюверами,
>и локальным клиентам сделать отдельный wiev с
>recursion no;
>????
>тогда все проблемы отпадут...

Ладно, черт с этим ДНС)))) Я вообще универсальное средство хочу)))