Итак, вопрос изъезженый, но конкретного ответа со своими условиями я ненашел, хотя думаю что условия такие у многих.Имеем: FreeBSD шлюз с тремя сетевыми картами:
1. rl0 - смотрит в локальную сеть (192.168.0.1)
2. rl2 - смотрит к первому провайдеру (xxx.xxx.xxx.xxx со шлюзом xxx.xxx.xxx.xxq)
3. tun0 - смотрит ко второму провайдеру (yyy.yyy.yyy.yyy со шлюзом yyy.yyy.yyy.yyq)
Конфигурации файлов касательно каналов:
rc.conf:
defaultrouter="yyy.yyy.yyy.yyy"
gateway_enable="YES"
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_rl2="inet yyy.yyy.yyy.yyy netmask 255.255.255.252"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="papchap"
firewall_enable="YES"
firewall_script="/etc/rc.ipfw"
#firewall_type="OPEN"
firewall_loggining="YES"
firewall_quiet="YES"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/natd.conf"
squid_enable="YES"
в rc.ipfw
#squid
${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.0.0/24 to yyy.yyy.yyy.yyy 80,8080,443 via rl0
${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via rl0
${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.1.0/24 to yyy.yyy.yyy.yyy 80,8080,443 via rl0
${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 via rl0
${fwcmd} add 50 divert natd all from any to any via tun0
далее правила разрешающие доступ
т.е., видно из конфигов, что все работает через tun0 интерфейс.
Задача: при падении канала на tun0 пустить все через второй канал. Я пока не говорю о скрипте, который будет автоматом переключать. Мне просто нужно понять как мне перенастраивать NAT интерфейс и работу через Squid.
В принцыпе, командами:
delete route default и
add route default xxx.xxx.xxx.xxq
вроде как все начинает бегать через rl2, но тогда получается что реально не работает NAT (так как висит на другом интерфейсе)? И непонимаю что происходит со Squid'ом. Ведь в rc.ipfw я жестко перенаправляю все пакеты на адрес yyy.yyy.yyy.yyy. Объясните пожалуйста знатоки, как правильно будет переключаться между каналами?