Доброе время суток!Подскажите, кто знает, как решить такую задачу...
Есть 2 сетевых интерфейса, каждый в своей подсетке...
Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.Шлюз по умолчанию - адрес через 1-ый интерфейс.
У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой интерфейс), а то что сам DNS сервер генерит уходит на шлюз по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>[оверквотинг удален]
>Есть 2 сетевых интерфейса, каждый в своей подсетке...
>Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а
>трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.
>
>Шлюз по умолчанию - адрес через 1-ый интерфейс.
>
>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>с помощью iptables помечать пакеты на 53 порту (--mark), с помощью iproute загонять эти пакеты в таблицу, в которой шлюз по умолчанию настроен на второй интерфейс.
почитай здесь
http://www.opennet.me/openforum/vsluhforumID1/74353.html
>[оверквотинг удален]
>>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>>
>
>с помощью iptables помечать пакеты на 53 порту (--mark), с помощью iproute
>загонять эти пакеты в таблицу, в которой шлюз по умолчанию настроен
>на второй интерфейс.
>
>почитай здесь
>http://www.opennet.me/openforum/vsluhforumID1/74353.htmlТам как раз написано, что таким образом работать не будет, т.к. решение о маршрутизации пакета от локального приложения принимается 1-ым делом еще до поступления пакета в таблицу mangle цепочки OUTPUT. Я сам попробовал это все проделать - ничего не работает.
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шлюз по умолчанию настроен только на первом интерфейсе
основной трафик будет идти через первый -- НО все запросы которые пришли со второго на втором и остануться
>[оверквотинг удален]
>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-ом интерфейсе упала немного. Спасибо еще раз.)
хех -- пожалуйста
а если добавить
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
>хех -- пожалуйста
>а если добавить
>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. Так что пофиг.
>>хех -- пожалуйста
>>а если добавить
>>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.me/docs/RUS/iptables/#TRAVERSINGGENERAL
>[оверквотинг удален]
>Есть 2 сетевых интерфейса, каждый в своей подсетке...
>Нужно сделать так чтобы весь трафик шел через 1-ый интерфейс, а
>трафик DNS (исходящие сообщения с этой машины) отправлялись через 2-ой.
>
>Шлюз по умолчанию - адрес через 1-ый интерфейс.
>
>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>а что мешает поднять днс с вюверами,
и локальным клиентам сделать отдельный wiev с
recursion no;
????
тогда все проблемы отпадут...
>[оверквотинг удален]
>>У меня получается так, что ДНС запросы приходят на нужный адрес (2-ой
>>интерфейс), а то что сам DNS сервер генерит уходит на шлюз
>>по умолчанию (1-ый интерфейс). Как сделать чтобы он попадал на 2-ой???
>>
>
>а что мешает поднять днс с вюверами,
>и локальным клиентам сделать отдельный wiev с
>recursion no;
>????
>тогда все проблемы отпадут...Ладно, черт с этим ДНС)))) Я вообще универсальное средство хочу)))