LINUX.ORG.RU

История изменений

Исправление axelroot, (текущая версия) :

здесь читай - http://xgu.ru/wiki/Маршрут_по_умолчанию

и здесь - http://habrahabr.ru/post/55132/

Задача
Есть два канала связи с Интернетом, через двух независимых провайдеров. Нужно сделать так, чтобы если происходит обращение через интерфейс 1, ответы должны уходить тоже через интерфейс 1 и с обратным адресом интерфейса 1.
[править] Решение
Настроить и использовать policy routing.
Например для шлюзов GW1 и GW2, которые описываются в /etc/network/gateways:
. /etc/network/gateways
ip rule add from $IP1 lookup 2
ip rule add from $IP2 lookup 3
ip route add default via $GW1 table 2
ip route add default via $GW2 table 3
ip route add default via $DEFAULTGW
Note-icon.gif
При использовании дополнительных таблиц маршрутизации необходимо либо отключить reverse path filter
 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 
либо перевести его в менее строгий режим
 echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter 
mamahtehok
Note-icon.gif
Такая схема маршрутизации не будет правильно работать с iptables DNAT. Другими словами, если с помощью iptables/netfilter пробрасывать обращения на какие-то порты внутрь сети, принцип «ответы уходят по тому каналу, по которому приходят запросы» работать не будет.
Как ни странно, проблема с iproute2 и DNAT в некоторых случаях может быть решена (SOLVED) простой парой команд:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --sport 80 -j MARK --set-mark 1
Таким образом мы можем вручную (через ip rule fwmark 1) указать необходимую таблицу. (N, 21:34, 27 августа 2009 (UTC))

Исходная версия axelroot, :

здесь читай - http://xgu.ru/wiki/Маршрут_по_умолчанию

Задача
Есть два канала связи с Интернетом, через двух независимых провайдеров. Нужно сделать так, чтобы если происходит обращение через интерфейс 1, ответы должны уходить тоже через интерфейс 1 и с обратным адресом интерфейса 1.
[править] Решение
Настроить и использовать policy routing.
Например для шлюзов GW1 и GW2, которые описываются в /etc/network/gateways:
. /etc/network/gateways
ip rule add from $IP1 lookup 2
ip rule add from $IP2 lookup 3
ip route add default via $GW1 table 2
ip route add default via $GW2 table 3
ip route add default via $DEFAULTGW
Note-icon.gif
При использовании дополнительных таблиц маршрутизации необходимо либо отключить reverse path filter
 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 
либо перевести его в менее строгий режим
 echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter 
mamahtehok
Note-icon.gif
Такая схема маршрутизации не будет правильно работать с iptables DNAT. Другими словами, если с помощью iptables/netfilter пробрасывать обращения на какие-то порты внутрь сети, принцип «ответы уходят по тому каналу, по которому приходят запросы» работать не будет.
Как ни странно, проблема с iproute2 и DNAT в некоторых случаях может быть решена (SOLVED) простой парой команд:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --sport 80 -j MARK --set-mark 1
Таким образом мы можем вручную (через ip rule fwmark 1) указать необходимую таблицу. (N, 21:34, 27 августа 2009 (UTC))