Итак, вопрос изъезженый, но конкретного ответа со своими условиями я ненашел, хотя думаю что условия такие у многих.Имеем: 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. Объясните пожалуйста знатоки, как правильно будет переключаться между каналами?
Попробуйте начать использовать ipnat. Очень просто и нет заморочек с дайвертами.По сути прописывайте ипнат на оба каналла,
ipfw остаеться тогда в виде простьо фаервола фильтрующего разрешающего или запрещающего траффик, а роут выполняет свою задачу.regards, ..
>Попробуйте начать использовать ipnat. Очень просто и нет заморочек с дайвертами.
>
>По сути прописывайте ипнат на оба каналла,
>ipfw остаеться тогда в виде простьо фаервола фильтрующего разрешающего или запрещающего траффик,
>а роут выполняет свою задачу.
>
>regards, ..я так понимаю, что для ipnat используются собственные правила? или они всеже описываются в тех-же правилах ipfw?
>Объясните пожалуйста знатоки, как правильно будет переключаться
>между каналами?Переключение роутов оставим на саму систему.
Поднимаем два NAT'а для разных интерфейсов, очень аккуратно пишет правила, особенно in / out
И тогда squid никак не придется перестраивать.
>
>>Объясните пожалуйста знатоки, как правильно будет переключаться
>>между каналами?
>
>Переключение роутов оставим на саму систему.
>Поднимаем два NAT'а для разных интерфейсов, очень аккуратно пишет правила, особенно in
>/ out
>И тогда squid никак не придется перестраивать.Еще можно использовать один сквид в качестве парента, чайлду прописать ходить через парент в том случае если чайлд не сможет ГЕТнуть что-то через парент он будет сам лезть в ИНЕТ
>
>>Объясните пожалуйста знатоки, как правильно будет переключаться
>>между каналами?
>
>Переключение роутов оставим на саму систему.
>Поднимаем два NAT'а для разных интерфейсов, очень аккуратно пишет правила, особенно in
>/ out
>И тогда squid никак не придется перестраивать.а как правильно 2 NAT'a поднять то? просто в rc.conf прописать?
natd_interface="tun0"
natd_interface="rl2"????
и что значит аккуратно написать правила? можно пример, если не сложно?