LINUX.ORG.RU
ФорумAdmin

Рапределение нагрузки на несколько провайдеров - не работает

 , ,


0

2

Есть сервер, задача которого раздавать инет. Есть 4 сетевые карты:

  • ETH1: содержит
    • адрес N11_IP, подсеть N11_NET
    • адрес N12_IP, подсеть N12_NET
    • адрес N13_IP, подсеть N13_NET
  • ETH2: адрес N21_IP, подсеть N21_NET
  • ETH3:
    • адрес N31_IP, подсеть N3_NET, шлюз провайдера N3_GATE - белый
    • адрес N32_IP, подсеть N3_NET
    • адрес N33_IP, подсеть N3_NET
    • адрес N34_IP, подсеть N3_NET
  • ETH4: адрес N41_IP, подсеть N41_NET, шлюз провайдера N41_GATE - серый

Задача - организовать выход в инет по следующим путям:

  • N11_NET > N3_GATE
  • N12_NET > N3_GATE
  • N13_NET > N41_GATE
  • N21_NET > N41_GATE

Вот что я пытался сделать: 1. создал 2 таблицы для роутинг T1 и T2. 2. заполнил таблицы роутинга:

ip route add N11_NET dev ETH1 src N11_IP table T1
ip route add N12_NET dev ETH1 src N12_IP table T1
ip route add N3_NET  dev ETH3 src N31_IP table T1
ip route add default via N3_GATE table T1
ip route add N21_NET dev ETH2 src N12_IP table T2
ip route add N13_NET dev ETH1 src N13_IP table T2
ip route add N41_NET  dev ETH4 src N41_IP table T2
ip route add default via N41_GATE table T2
3. добавил правила:
ip rule add fwmark 100 pref 1000 lookup T1
ip rule add fwmark 200 pref 1001 lookup T2
4. добавил правила iptables:
iptables -t mangle -A PREROUTING -s N11_NET -j MARK --set-mark 100
iptables -t nat -A POSTROUTING -m mark --mark 100 -j LOG --log-prefix="--- MARK 1 ---"
iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source N31_IP

iptables -t mangle -A PREROUTING -s N13_NET -j MARK --set-mark 200
iptables -t nat -A POSTROUTING -m mark --mark 200 -j LOG --log-prefix="--- MARK 2 ---"
iptables -t nat -A POSTROUTING -m mark --mark 200 -j SNAT --to-source N41_IP
5. сам сервер ходит в инет через N3_GATE:
ip route add defailt via N3_GATE

Ну и то, что я получил: первая таблица работает, т.е. пинги идут и вроде как все замечательно. А вот по второй таблице связи нет. Трассировка показывает только 2 хопа: N13_IP и N41_GATE. В логах видны пакеты с обоими маркировками.

Что не так?

П.С. CentOS 7. Сообщение писал из дома по памяти, так что могут быть недостоверности по сравнению с оригиналом, но суть тут отражена.

Ответ на: комментарий от astupnikov

Спс, кажется заработало. Причем, пришлось не только

net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

Но и по всем интерфейсам пробежаться.

Интересно получается, я поднял виртуалку с той же CentOS, добавил 2 сетевые карты и т.д. Там работало, хотя default.rp_filter = 1.

kondrik ()
Ответ на: комментарий от kondrik

Если на виртуалке все было корректно настроено, то скорее всего баг. У меня не получилось настроить проверку source route по дополнительным таблицам маршрутизации.

astupnikov ()

Попробуй вместо MARK CONNMARK

uspen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.