Есть вопрос! — очередность iptables iproute2 [Решено]
Решено:
День добрый. Все перекопал, не смог найти ответ на следующий вопрос:
при прохождении пакетов через систему, в каком месте схемы работы фаервола netfilter\iptables начинает работать маршрутизация ядра, которая настраивается через iproute2?
Проходят ли маршрутизацию по правилам, задаваемым через ip rule add, пакеты, ушедшие в цепочку FORWARD netfilter`a?
Из-за чего возник вопрос:
Шлюз локальной сети подключен к 2м провайдерам. Один нормальный и стабильный, второй - yota, часто падает, большие пинги, из-за чего сессии imap ведут себя некультурно и нервируют простых пользователей.
Цель - завернуть всю почту и icq на стабильный канал, а весь побочный и неважный трафик (в данном примере - вконтнакт) на yota.
Для остального, неклассифицированного трафика выбор шлюза происходит по схеме
ip route add default scope global nexthop via $P1 dev $IF1 weight $W1 \
nexthop via $P2 dev $IF2 weight $W2
т.е. 66% трафика на один шлюз, остаток на другой.
В теории такая маршрутизация осуществляется следующим образом:
маркируем соединения, которые необходимо маршрутизировать:
@ubuntu1004:~$ sudo iptables -t mangle -L
CONNMARK tcp -- anywhere anywhere tcp dpt:smtp CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:pop3 CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:imap2 CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:ssmtp CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:imaps CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:aol CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere srv251-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv252-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv253-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv254-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv249-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv250-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK restore
Создаем правила длч промаркированных пакетов\соединений:
@ubuntu1004:~$ ip rule list
0: from all lookup local
32762: from all fwmark 0x65 lookup yota
32763: from all fwmark 0x64 lookup gt
32764: from 192.168.5.122 lookup yota
32765: from 192.168.1.120 lookup gt
32766: from all lookup main
32767: from all lookup default
таблицы маршрутизации ведут к разным интерфейсам и разным провайдерам.
Однако, iptraf показывает, что пакеты до вконтакта идут по обоим шлюзам, как и обращение к постовым серверам.
Подскажите, почему не срабатывает маршрутизация?
Зависит от того, в какой цепочке правила iptables. Если PREROUTING, то работа до iproute2, если POSTROUTING, то после.
Для маркировки используется PREROUTING, соответственно, метки ставятся до принятия решения о маршрутизации.
Для маркировки используется PREROUTING, соответственно, метки ставятся до принятия решения о маршрутизации.
День добрый. Все перекопал, не смог найти ответ на следующий вопрос:
при прохождении пакетов через систему, в каком месте схемы работы фаервола netfilter\iptables начинает работать маршрутизация ядра, которая настраивается через iproute2?
Проходят ли маршрутизацию по правилам, задаваемым через ip rule add, пакеты, ушедшие в цепочку FORWARD netfilter`a?
Из-за чего возник вопрос:
Шлюз локальной сети подключен к 2м провайдерам. Один нормальный и стабильный, второй - yota, часто падает, большие пинги, из-за чего сессии imap ведут себя некультурно и нервируют простых пользователей.
Цель - завернуть всю почту и icq на стабильный канал, а весь побочный и неважный трафик (в данном примере - вконтнакт) на yota.
Для остального, неклассифицированного трафика выбор шлюза происходит по схеме
ip route add default scope global nexthop via $P1 dev $IF1 weight $W1 \
nexthop via $P2 dev $IF2 weight $W2
т.е. 66% трафика на один шлюз, остаток на другой.
В теории такая маршрутизация осуществляется следующим образом:
маркируем соединения, которые необходимо маршрутизировать:
@ubuntu1004:~$ sudo iptables -t mangle -L
CONNMARK tcp -- anywhere anywhere tcp dpt:smtp CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:pop3 CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:imap2 CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:ssmtp CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:imaps CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere anywhere tcp dpt:aol CONNMARK xset 0x64/0xffffffff
CONNMARK tcp -- anywhere srv251-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv252-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv253-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv254-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv249-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
CONNMARK tcp -- anywhere srv250-131.vkontakte.ru CONNMARK xset 0x65/0xffffffff
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK restore
Создаем правила длч промаркированных пакетов\соединений:
@ubuntu1004:~$ ip rule list
0: from all lookup local
32762: from all fwmark 0x65 lookup yota
32763: from all fwmark 0x64 lookup gt
32764: from 192.168.5.122 lookup yota
32765: from 192.168.1.120 lookup gt
32766: from all lookup main
32767: from all lookup default
таблицы маршрутизации ведут к разным интерфейсам и разным провайдерам.
Однако, iptraf показывает, что пакеты до вконтакта идут по обоим шлюзам, как и обращение к постовым серверам.
Подскажите, почему не срабатывает маршрутизация?