kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« : 16 Июня 2012, 20:36:07 » |
|
Возникла необходимость, реализовать следующее: Есть два прова идут на сервер, один работает по статике, другой pppoe и один выход на клиентов. Нужно чтобы по умолчанию работала статика (re1), а при ее отсутствии переключалось на pppoe (tun0), и сервер попрежнему отдавал интернет клиентам по pppoe, а когда на статике появлялся инет, то скрипт обратно переключал с tun0 на re1. В общем нашел скрипт и сделал под себя: #!/bin/sh ### ng_ip=`ifconfig re1 | grep inet | awk '{print $2}'` ng_gw=`ifconfig re1 | grep inet | awk '{print $4}'` tun_ip=`ifconfig tun0 | grep inet | awk '{print $2}'` tun_gw=`ifconfig tun0 | grep inet | awk '{print $4}'` def_gw=`netstat -rn | grep default | awk '{print $2}'` if ping -c 3 -S $ng_ip ya.ru > /dev/null then if [ "$ng_gw" != "$def_gw" ] > /dev/null then /sbin/route change default $ng_gw fi exit 0 else /sbin/route change default $tun_gw /usr/local/etc/rc.d/mpd5 restart if ping -c 3 -S $tun_ip ya.ru > /dev/null then exit 0 else /sbin/route change default $ng_gw sleep 3 killall -9 ppp sleep 5 killall ppp sleep 7 killall ppp sleep 45 ppp -ddial fregat fi fi В конфиг mpd и в resolv.conf добавил днс провайдеров, в pf-е прописла следующее: set limit states 128000 set optimization aggressive nat pass on re1 from 10.0.0.0/8 to any -> re1 nat pass on re1 from 192.168.1.0/24 to any -> re1 nat pass on tun0 from 10.0.0.0/8 to any -> tun0 nat pass on tun0 from 192.168.1.0/24 to any -> tun0 В ipfw написал следующее: #!/bin/sh - f='/sbin/ipfw'
ifOut='re1' ifOut2='tun0'
${f} -f flush
${f} add 50 allow tcp from any to me 23,22,21,20,8088,25,995,5100,5101,10000,143,53,953 ${f} add 51 allow tcp from me 23,22,21,20,8088,25,995,5100,5101,10000,143,53,953 to any
${f} add 60 allow tcp from any to me 28560-28570
${f} add 70 allow udp from any 53,7723 to any
${f} add 100 deny tcp from any to any 445
${f} add 110 allow ip from any to any via lo0 ${f} add 120 skipto 1000 ip from me to any ${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 ${f} add 140 deny ip from any to "table(120)" ${f} add 150 deny ip from "table(120)" to any ${f} add 160 skipto 2000 ip from any to me
${f} add 200 skipto 500 ip from any to any via ${ifOut} ${f} add 201 skipto 500 ip from any to any via ${ifOut2}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut} ${f} add 401 skipto 450 ip from any to any recv ${ifOut2} ${f} add 420 divert 1 ip from any to any ${f} add 450 divert 2 ip from any to any ${f} add 490 allow ip from any to any ${f} add 500 skipto 32500 ip from any to any in ${f} add 510 divert 1 ip from any to any ${f} add 540 allow ip from any to any
${f} add 701 allow tcp from any to any 5100 ${f} add 701 allow tcp from any to any 5101
#${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state ${f} add 1020 allow udp from any to any keep-state ${f} add 1100 allow ip from any to any
${f} add 2000 check-state ${f} add 2010 allow icmp from any to any ${f} add 2020 allow tcp from any to any 80,443 ${f} add 2050 deny ip from any to any via ${ifOut} ${f} add 2051 deny ip from any to any via ${ifOut2} ${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32490 deny ip from any to any
В общем завел всю эту байду, в итоге срабатывает по умолчанию не re1, а tun0. Когда отключаю tun0 инет не переподлючается, но когда врубаю кабель то фря бутается... Может у кого-то есть получше скрипт, или может я что-то не правильно делаю?
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #1 : 17 Июня 2012, 01:31:03 » |
|
А покажите вывод ifconfig ng_gw=`ifconfig re1 | grep inet | awk '{print $4}'` И с чего Вы взяли, что в четвертой колонке шлюз!? Какбы в ifconfig'e его (шлюза) никогда не было...
|
|
« Последнее редактирование: 17 Июня 2012, 01:33:30 от 0xbad0c0d3 »
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 350
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #2 : 17 Июня 2012, 10:51:53 » |
|
Мой рабочий вариант скрипта переключения каналов, принцип работы скрипта: пингуем шлюз каналов, если пинга до шлюза нет, значит канал лежит, ничего умнее не придумал. #!/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
GW1=Шлюз первого аплинка GW2=Шлюз второго аплинка tester=0; itest1=`/sbin/ping -c 3 $GW1 | grep "64 bytes" | wc -l`; itest2=`/sbin/ping -c 3 $GW2 | grep "64 bytes" | wc -l`;
if [ ! -f "/tmp/countGW.tmp" ] then echo 3 > /tmp/countGW.tmp fi
oldtest=`cat /tmp/countGW.tmp`
if (test $itest1 -gt "0") then let tester=tester+1 fi
if (test $itest2 -gt "0") then let tester=tester+2 fi
if [ $oldtest = $tester ]; then exit; #echo "Canali ne izmenilis" else if [ $oldtest = 3 ]; then cp /etc/pf.conf /etc/pf.conf3 fi
if [ $tester = 3 ]; then cp /etc/pf.conf3 /etc/pf.conf /sbin/route change default $GW1 fi
if [ $tester = 2 ]; then cp /etc/pf.conf2 /etc/pf.conf /sbin/route change default $GW2 fi
if [ $tester = 1 ]; then cp /etc/pf.conf1 /etc/pf.conf /sbin/route change default $GW1 fi
/etc/rc.d/pf restart fi Скрипт изменяет шлюз по умолчанию если основной канал вдруг падает, если канал возвращается на место шлюз также возвращается. В pf имею 3 конфига, активен только канал 1, активен только канал 2 и активны оба канала, что там писать уж на свой вкус. в ipfw заменены правила #Kanal 1 ifOut='vlan666' #Kanal 2 ifOut2='vlan64' ........ ${f} add 200 skipto 500 ip from any to any { via ${ifOut} or via ${ifOut2} } ........ ${f} add 400 skipto 450 ip from any to any { recv ${ifOut} or recv ${ifOut2} } ........ ${f} add 2050 deny ip from any to any { via ${ifOut} or via ${ifOut2} } ........
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #3 : 06 Июля 2012, 10:23:16 » |
|
А почему в скрипте фигурируют аж 4 pf.conf-а? Мой рабочий вариант скрипта переключения каналов, принцип работы скрипта: пингуем шлюз каналов, если пинга до шлюза нет, значит канал лежит, ничего умнее не придумал. #!/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
GW1=Шлюз первого аплинка GW2=Шлюз второго аплинка tester=0; itest1=`/sbin/ping -c 3 $GW1 | grep "64 bytes" | wc -l`; itest2=`/sbin/ping -c 3 $GW2 | grep "64 bytes" | wc -l`;
if [ ! -f "/tmp/countGW.tmp" ] then echo 3 > /tmp/countGW.tmp fi
oldtest=`cat /tmp/countGW.tmp`
if (test $itest1 -gt "0") then let tester=tester+1 fi
if (test $itest2 -gt "0") then let tester=tester+2 fi
if [ $oldtest = $tester ]; then exit; #echo "Canali ne izmenilis" else if [ $oldtest = 3 ]; then cp /etc/pf.conf /etc/pf.conf3 fi
if [ $tester = 3 ]; then cp /etc/pf.conf3 /etc/pf.conf /sbin/route change default $GW1 fi
if [ $tester = 2 ]; then cp /etc/pf.conf2 /etc/pf.conf /sbin/route change default $GW2 fi
if [ $tester = 1 ]; then cp /etc/pf.conf1 /etc/pf.conf /sbin/route change default $GW1 fi
/etc/rc.d/pf restart fi Скрипт изменяет шлюз по умолчанию если основной канал вдруг падает, если канал возвращается на место шлюз также возвращается. В pf имею 3 конфига, активен только канал 1, активен только канал 2 и активны оба канала, что там писать уж на свой вкус. в ipfw заменены правила #Kanal 1 ifOut='vlan666' #Kanal 2 ifOut2='vlan64' ........ ${f} add 200 skipto 500 ip from any to any { via ${ifOut} or via ${ifOut2} } ........ ${f} add 400 skipto 450 ip from any to any { recv ${ifOut} or recv ${ifOut2} } ........ ${f} add 2050 deny ip from any to any { via ${ifOut} or via ${ifOut2} } ........
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 350
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #4 : 06 Июля 2012, 16:23:54 » |
|
Не 4 а 3 из за моей лени писать конструкцию на sed и awk проще было так, сделал и забыл. Один конфиг, когда оба канала живые, второй когда жив только первый канал и третий когда жив только второй канал. Также было лень заморачиваться с кучей проверок, по этому критерием доступности сделал банальный пинг шлюза. Писал на коленке минут 10, работает и ладно, не нравится можно переделать под себя ![Улыбающийся](http://forum.nodeny.com.ua/Smileys/default/smiley.gif)
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #5 : 06 Июля 2012, 19:20:46 » |
|
А мона конфиг показать, когда оба канала активно, а то у меня со следующим не работает: set limit states 128000 set optimization aggressive nat pass on re0 from 10.0.24.0/24 to any -> re0 nat pass on re0 from 10.0.0.0/8 to any -> re0 nat pass on re0 from 192.168.1.0/24 to any -> re0 nat pass on xl0 from 10.0.24.0/24 to any -> xl0 nat pass on xl0 from 10.0.0.0/8 to any -> xl0 nat pass on xl0 from 192.168.1.0/24 to any -> xl0 Не 4 а 3 из за моей лени писать конструкцию на sed и awk проще было так, сделал и забыл. Один конфиг, когда оба канала живые, второй когда жив только первый канал и третий когда жив только второй канал. Также было лень заморачиваться с кучей проверок, по этому критерием доступности сделал банальный пинг шлюза. Писал на коленке минут 10, работает и ладно, не нравится можно переделать под себя ![Улыбающийся](http://forum.nodeny.com.ua/Smileys/default/smiley.gif)
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 350
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #6 : 06 Июля 2012, 21:54:05 » |
|
Да легко cat /etc/pf.conf set limit states 128000 set optimization aggressive ext_if1="vlan666" ext_if2="vlan64"
ext_gw1="xxx.xxx.xxx.xxx" ext_gw2="yyy.yyy.yyy.yyy"
table <no_nat> const { 192.168.0.0/16} scrub in all
#Этих через канал 2 nat on $ext_if1 from 192.168.3.0/24 to !<no_nat> -> $ext_if2 nat on $ext_if1 from 192.168.4.0/24 to !<no_nat> -> $ext_if2 nat on $ext_if1 from 192.168.5.0/24 to !<no_nat> -> $ext_if2 nat on $ext_if1 from 192.168.7.0/24 to !<no_nat> -> $ext_if2 nat on $ext_if1 from 192.168.9.0/24 to !<no_nat> -> $ext_if2 #Остальных через канал 1 nat on $ext_if1 from 192.168.0.0/16 to !<no_nat> -> $ext_if1
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat> pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat>
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #7 : 07 Июля 2012, 08:13:08 » |
|
В общем то что у меня получилось и осталось самую малость, потому что оно почти работает:) Добавил скрипт в крон: * * * * * /etc/rc.d/script.sh Видоизменил скрипт, убрал у него проверку ipv6 и добавил проверку локфайлов в итоге получилось: #!/bin/sh ### if [ -e /tmp/ping_checker.lock ]; then
#echo "Lockfile exist";
exit 0;
else
touch /tmp/ping_checker.lock
set ng_ip=`ifconfig re0 | grep "inet "| awk '{print $2}'` set ng_gw=`ifconfig re0 | grep "inet "| awk '{print $4}'` set tun_ip=`ifconfig tun0 | grep "inet "| awk '{print $2}'` set tun_gw=`ifconfig tun0 | grep "inet "| awk '{print $4}'` def_gw=`netstat -rn | grep default | awk '{print $2}'`
/sbin/route change default $tun_gw /usr/local/etc/rc.d/mpd5 restart if ping -c 3 -S $tun_ip ya.ru > /dev/null then exit 0 else /sbin/route change default $ng_gw sleep 3 killall -9 ppp sleep 5 killall ppp sleep 7 killall ppp sleep 45 ppp -ddial fregat fi else if ping -c 3 -S $ng_ip ya.ru > /dev/null if [ "$ng_gw" != "$def_gw" ] > /dev/null then /sbin/route change default $ng_gw fi exit 0 fi rm -f /tmp/ping_checker.lock
fi
pf.conf сделал следующего вила: set limit states 128000 set optimization aggressive nat pass on re1 from 10.0.0.0/8 to any -> re1 nat pass on re1 from 192.168.1.0/24 to any -> re1 nat pass on tun0 from 10.0.0.0/8 to any -> ip nat pass on tun0 from 192.168.1.0/24 to any -> ip Фаервол пока не трогал, поставил там allow from any to any. После чего наблюдается следующая картина: по умолчанию уже работает статика (и это хорошо), при ее выдергивании канал переключается на второго прова, который работает через pppoe и тут начинается веселье, с клиентской тачки пинг никуда не идет, страницы не открываются, но сцуко скайп та работает. Помогите плизз с этим справиться.
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #8 : 07 Июля 2012, 08:32:23 » |
|
Кстати ведь нельзя юзать два шлюза, может трабл в том что когда работал по статике был один шлюз, при ее вытыкании фря юзает старый шлюз, который уже не пашет и не меняет на новый, что-то мне кажется загвостка тут. Скорее всего на обробатывается /sbin/route change default $tun_gw скоро похимичу и отпишусь;)
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 350
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #9 : 07 Июля 2012, 09:41:06 » |
|
Вдумчиво читаем эти 2 строки pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat> pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat>
|
|
|
Записан
|
|
|
|
Андрій
NoDeny
Старожил
Карма: 3
Offline
Сообщений: 294
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #10 : 07 Июля 2012, 11:29:52 » |
|
ось мій скрипт переключення каналів, потрібно перекомпілювати ядро з підтримкою setfib (кілька таблиць маршрутизації) #!/usr/local/bin/bash
/sbin/ping -q -c 10 4.0.0.8 > /dev/null 2>&1 # пінгуєм 10 разів if [ $? -ne "0" ] ; then # якщо пінгу нема і повертається значення не 0, тоді: /sbin/ipfw show | grep 00321 > /dev/null 2>&1 # дивимся чи є правило 321 у феєрволі - тобто чи переключення вже не відбулося if [ $? -ne "0" ] ; then # якщо нема тоді: /sbin/ipfw add 321 setfib 3 ip from "table(0)" to not me in # добавляєм правило в феєрволі для перенаправлення трафіку через інший канал echo `date` "channel 1 down, switched to the backup" >> /usr/local/www/apache22/data/mon # записуєм що канал пропав у файлик fi else # якщо пінг є /sbin/ipfw show 321 # дивимся чи є правило перенаправлення в феєрволі if [ $? -eq "0" ] ; then # якщо воно є /sbin/ipfw delete 321 > /dev/null 2>&1 # то видаляєм echo `date` "channel 1 up" >> /usr/local/www/apache22/data/mon # записуєм що канал відновився у файлик fi fi
Працює без проблем вже кілька років
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #11 : 18 Августа 2012, 17:57:03 » |
|
В общем с горем пополам при помощи знакомого написал скрипт, который переключает каналы, как описано ранее. Выкладываю сам скрипт: #!/bin/sh
stat_gw="11.11.11.11" stat_ip="22.22.22.22" ip_8="8.8.8.8" flag_file="/tmp/ping_checker.lock"
[ -r "${flag_file}" ] && { echo "Lockfile exist"; exit 0; } > ${flag_file}
tun_ip=`ifconfig tun0 | grep "inet " | cut -d" " -f2` tun_gw=`ifconfig tun0 | grep "inet " | awk '{print $4}'` def_gw=`netstat -rn | grep default | awk '{print $2}'`
echo "tun_ip=${tun_ip} tun_gw=${tun_gw} def_gw=${def_gw}"
[ -z "${tun_gw}" ] && { echo "Gate PPPoE is empty! Stop." ifconfig tun0 rm -f ${flag_file} exit 10 }
check=`netstat -rn | grep "${ip_8}[ ]*${stat_gw}"` [ -z "${check}" ] && route add ${ip_8} ${stat_gw}
/sbin/ping -c 3 ${ip_8} #> /dev/null if [ $? -eq 0 ]; then echo "Static line is UP"
/sbin/route delete default ${tun_gw} echo "PPPoE line is deactive" if [ "${def_gw}" != "${stat_gw}" ]; then /sbin/route add default ${stat_gw} fi /etc/rc.d/pf restart
rm -f ${flag_file}
else echo "Static line is DOWN" /sbin/route delete default ${stat_gw} [ "${def_gw}" != "${tun_gw}" ] && { /sbin/route add default ${tun_gw} } /etc/rc.d/pf restart
echo "PPPoE line is active"
[ `ifconfig tun0 | grep "inet " | wc -l` -gt 1 ] && { sleep 3 killall -9 ppp sleep 5 killall ppp sleep 7 killall ppp sleep 45 ppp -ddial ispname }
fi
rm -f ${flag_file} exit 0 Где stat_gw="11.11.11.11" - шлюз статики stat_ip="22.22.22.22" - ip статики tun_ip=`ifconfig tun0 | grep "inet " | cut -d" " -f2` tun_gw=`ifconfig tun0 | grep "inet " | awk '{print $4}'` код определяет ip и шлюза провайдера, который работает по pppoe. Ну и собственно добавил в крон, чтобы скрипт запускался каждую минуту: ee /etc/crontab */1 * * * * root /etc/rc.d/script.sh
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #12 : 18 Августа 2012, 18:03:29 » |
|
Ребята, помогите плизз разобраться с фаерволом и pf. Сейчас в pf: set limit states 128000 set optimization aggressive nat pass on re0 from 10.0.0.0/8 to any -> ip isp nat pass on re0 from 192.168.1.0/24 to any -> ip isp nat pass on tun0 from 10.0.0.0/8 to any -> ip isp nat pass on tun0 from 192.168.1.0/24 to any -> ip isp В rc.firewall: #!/bin/sh - f='/sbin/ipfw'
ifOut='re0' ifOut2='tun0'
${f} -f flush
${f} add 50 allow tcp from any to me 23,22,21,20,8088,25,995,5100,5101,10000,143,53,953 ${f} add 51 allow tcp from me 23,22,21,20,8088,25,995,5100,5101,10000,143,53,953 to any
${f} add 60 allow tcp from any to me 28560-28570
${f} add 70 allow udp from any 53,7723 to any
${f} add 100 deny tcp from any to any 445
${f} add 110 allow ip from any to any via lo0 ${f} add 120 skipto 1000 ip from me to any ${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 ${f} add 140 deny ip from any to "table(120)" ${f} add 150 deny ip from "table(120)" to any ${f} add 160 skipto 2000 ip from any to me
${f} add 200 skipto 500 ip from any to any via ${ifOut} ${f} add 201 skipto 500 ip from any to any via ${ifOut2}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut} ${f} add 401 skipto 450 ip from any to any recv ${ifOut2} ${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any ${f} add 490 allow ip from any to any ${f} add 500 skipto 32500 ip from any to any in ${f} add 510 divert 1 ip from any to any ${f} add 540 allow ip from any to any
${f} add 701 allow tcp from any to any 5100 ${f} add 701 allow tcp from any to any 5101
${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state ${f} add 1020 allow udp from any to any keep-state ${f} add 1100 allow ip from any to any
${f} add 2000 check-state ${f} add 2010 allow icmp from any to any ${f} add 2020 allow tcp from any to any 80,443 ${f} add 2050 deny ip from any to any via ${ifOut} ${f} add 2051 deny ip from any to any via ${ifOut2} ${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32490 deny ip from any to any
При этом когда основной канал пропадает на интерфейсе re0, скрипт переключает канал на tun0, но у клиента нет интернета. Помогите плизз разобраться.
|
|
|
Записан
|
|
|
|
Rico-X
NoDeny
Старожил
Карма: 7
Offline
Сообщений: 350
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #13 : 19 Августа 2012, 08:48:54 » |
|
Фух, ну повторю свой верхний пост еще раз, а точнее что должно быть: 1) При пропадании канала должен меняться шлюз по умолчанию /sbin/route change default $GW1 2) В правилах фаирвола должны существовать оба направления #Kanal 1 ifOut='vlan666' #Kanal 2 ifOut2='vlan64' ........ ${f} add 200 skipto 500 ip from any to any { via ${ifOut} or via ${ifOut2} } ........ ${f} add 400 skipto 450 ip from any to any { recv ${ifOut} or recv ${ifOut2} } ........ ${f} add 2050 deny ip from any to any { via ${ifOut} or via ${ifOut2} } 3) В правилах ната на pf должна быть конструкция, работающая через оба канала ext_if1="ip канала 1" ext_if2="ip канала 2" ext_gw1="Шлюз канала 1" ext_gw2="Шлюз канала 2" {Тут какую сеть на какой канал, либо текущий рабочий канал для всех сетей} pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat> pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat> Как расписать подробней даже не знаю, если не выйдет, стучите в skype, попробую помочь.
|
|
|
Записан
|
|
|
|
kuhar
NoDeny
Постоялец
Карма: 0
Offline
Сообщений: 128
|
![](http://forum.nodeny.com.ua/Themes/default/images/post/xx.gif) |
« Ответ #14 : 19 Августа 2012, 19:49:54 » |
|
Фух, ну повторю свой верхний пост еще раз, а точнее что должно быть: 1) При пропадании канала должен меняться шлюз по умолчанию /sbin/route change default $GW1 2) В правилах фаирвола должны существовать оба направления #Kanal 1 ifOut='vlan666' #Kanal 2 ifOut2='vlan64' ........ ${f} add 200 skipto 500 ip from any to any { via ${ifOut} or via ${ifOut2} } ........ ${f} add 400 skipto 450 ip from any to any { recv ${ifOut} or recv ${ifOut2} } ........ ${f} add 2050 deny ip from any to any { via ${ifOut} or via ${ifOut2} } 3) В правилах ната на pf должна быть конструкция, работающая через оба канала ext_if1="ip канала 1" ext_if2="ip канала 2" ext_gw1="Шлюз канала 1" ext_gw2="Шлюз канала 2" {Тут какую сеть на какой канал, либо текущий рабочий канал для всех сетей} pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat> pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat> Как расписать подробней даже не знаю, если не выйдет, стучите в skype, попробую помочь. Спасибо, помогло все работает.
|
|
|
Записан
|
|
|
|
|