Здравствуйте. Имеется сервер с 2мя аплинками разной пропускной способности и с разными подсетями IP-адресов (и разными шлюзами, естественно, предположим, главный и основной интерфейс имеет IP 1.1.1.2 и резервный имеет IP 2.2.2.2.) Была произведена настройка роутинга для того, чтобы пакеты для каждого интерфейса приходили и уходили только на этот конкретный интерфейс (руководствовался статьей http://lartc.org/howto/lartc.rpdb.multiple-links.html). Работает, хорошо. Но позже возникла необходимость отправлять запросы к DNS через второй, резервный аплинк, а не основной, тот что по дефолту. Для этого было применено маркирование пакетов:
-A OUTPUT -p tcp -m tcp --dport 53 -j MARK --set-xmark 0x1/0xffffffff
-A OUTPUT -p udp -m udp --dport 53 -j MARK --set-xmark 0x1/0xffffffff
MARK=0x1
ip rule:
0: from all lookup local
32763: from 1.1.1.2 lookup eth0
32764: from 2.2.2.2 lookup eth1
32765: from all fwmark 0x1 lookup eth1
32766: from all lookup main
32767: from all lookup default
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 eth0
201 eth1
202 eth0:0
up ip route add 1.1.1.0/24 dev eth0 src 1.1.1.2 table eth0
up ip route add 2.2.2.0/26 dev eth1 src 2.2.2.2 table eth1
up ip route add default via 1.1.1.1 table eth0
up ip route add default via 2.2.2.1 table eth1
up ip rule add prio 32763 from 1.1.1.2 table eth0
up ip rule add prio 32764 from 2.2.2.2 table eth1
up ip rule add prio 32765 fwmark 1 lookup eth1
Linux server 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u1 x86_64 GNU/Linux