LINUX.ORG.RU
ФорумAdmin

Переключение на резервный канал в интернет

 , ,


0

1

Здравствуйте! Есть маршрутизатор на calculate, есть два провайдера:
1) провайдер1: интерфейс маршрутизатора vlan11, ip-адрес 1.1.1.1
2) провайдер2: интерфейс маршрутизатора vlan22, ip-адрес 2.2.2.2
Есть сервис в локальной сети, отправляющий пакеты в интернет: интерфейс маршрутизатора vlan33,ip-адрес устройства в локальной сети, который проходит SNAT-преобразование: 192.168.0.3
ip-адрес в интернете, на который устройство отправляет пакеты: 3.3.3.3
По-умолчанию работа сервиса идет через первый канал в интернет по порту 5555(происходит DNAT-преобразование входящего из интернета трафика на ip 1.1.1.1:5555 во внутренний ip локальной сети 192.168.0.3:5555):

tcpdump -i vlan11 host 3.3.3.3 -nn
ip 1.1.1.1.5555 > 3.3.3.3.5555
ip 3.3.3.3.5555 > 1.1.1.1.5555 
При переходе на резервный канал, правила netfilter для DNAT-преобразования через первого провайдера заменяются на правила для работы через второго(происходит DNAT-преобразование входящего из интернета трафика на ip 2.2.2.2:5555 во внутренний ip локальной сети 192.168.0.3:5555. Пакеты с ip-адреса 3.3.3.3 при недоступности ip-адреса 1.1.1.1 начинают отправляться на ip-адрес 2.2.2.2), но tcpdump показывает следующее:
tcpdump -i vlan22 host 3.3.3.3 -nn
ip 1.1.1.1.5555 > 3.3.3.3.5555 
Т.е. пакет с устройства в локальной сети, проходит SNAT-преобразование по старому правилу netfilter (хотя оно удалено),став из 192.168.0.3 ip-адресом 1.1.1.1(вместо 2.2.2.2) и оказавшись на интерфейсе второго провайдера (vlan22), что приводит к неработоспособности сервиса.
Почему так происходит? Если выключить на минут 5-10 порт коммутатора, на котором сидит устройство, описанное выше, snat-преобразование начинает работать так, как должно и сервис начинает работать. Такое ощущение, что пока не разорвешь соединение устройства с маршрутизатором, пакеты не идут по цепочкам netfilter, используя старый путь.



Последнее исправление: greedisgood42rus (всего исправлений: 4)
Ответ на: комментарий от PeKar

Это уже вопрос маршрутизации. Существует еще третий провайдер, поэтому есть две таблицы маршрутизации:
для первого провайдера table1
для второго провайдера table2
Каждый раз, при переключении с основного провайдера на дополнительный, происходит удаление правил маршрутизации и добавление новых

ip r del from 192.168.0.3 table1
ip r del to 192.168.0.3 table1
ip r add from 192.168.0.3 table2
ip r add to 192.168.0.3 table2 

greedisgood42rus
() автор топика

Пальцем в небо ip r flush cache, conntrack -F ?

anc ★★★★★
()

Как то ты намудрил, зачем все так тяжело? Зачем таблицы маршрутизации и прочее. Используй на шлюзе замену дефолтного маршрута на того провайдера кто должен работать и все. Проверку каналов делай скриптом.

Недавно у себя все переделал, просто и нет костылей, если где то что то ломается сразу видно.

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