История изменений
Исправление 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))