Страница 1 из 2
Два канала + ipfw + mpd
Добавлено: 2008-11-29 19:23:14
RusBiT
Есть два внешних канала. Для доступа в интернет используется vpn, пока только через один канал. Настроен один nat.
Поднимаю второй natd -p 8778 -a ${IP_EXT_STK}
${EXT} - имя внешнего интерфейса
${IP_EXT} - ip адрес первого канала
${IP_EXT_STK} - ip адрес второго канала, алиас на внутреннем интерфейсе (в локальной сети adsl модем)
${vpn_inet} - серые адреса, выдаваемые на vpn сервере через первый канал
${vpn_inet_stk} - серые адреса, выдаваемые на vpn сервере через второй канал
${gs_gw} - шлюз первого канала
${gs_stk} - шлюз второго канала
Код: Выделить всё
${fwcmd} add 4500 divert 8668 ip from ${vpn_inet} to any out via ${EXT}
${fwcmd} add 4510 fwd ${gs_gw} ip from ${IP_EXT} to any
${fwcmd} add 4520 divert 8668 ip from any to ${IP_EXT} in via ${EXT}
${fwcmd} add 4530 allow ip from any to ${vpn_inet} in via ${EXT}
${fwcmd} add 4501 divert 8778 ip from ${vpn_inet_stk} to any
${fwcmd} add 4511 fwd ${stk_gw} ip from ${IP_EXT_STK} to any
${fwcmd} add 4521 divert 8778 ip from any to ${IP_EXT_STK}
${fwcmd} add 4531 allow ip from any to ${vpn_inet_stk}
В итоге первый nat c адресами ${vpn_inet} работает , второй нет
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 19:30:03
paradox
если я правильно понимаю то они должны быть равны
${vpn_inet} = ${IP_EXT}
${vpn_inet_stk} = ${IP_EXT_STK}
а иначе тогда не совсем понятно что вы хотите сделать
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 19:48:18
RusBiT
впринципе могут быть и равны, но вроде и так работает с первым натом
ipfw show показывает на втором нате, то что пакеты не разначиваются,
divert 8778 ip from ${vpn_inet_stk} to any и fwd срабатывает.
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 19:51:20
paradox
лучше уж тогда полный ipfw show
)
а то тяжело понять
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 20:01:23
RusBiT
ipfw show скидывать пока не буду, только запутаю - эксперементировал с правилами просто.
rc.fw
Код: Выделить всё
fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} pipe flush
${fwcmd} queue flush
SSH="10.0.7.0{1-7}";
${fwcmd} add 9 allow tcp from ${SSH} to me 22
${fwcmd} add 9 allow tcp from me 22 to ${SSH}
${fwcmd} add 10 deny tcp from any to me dst-port 22,135-139,445,3306,5505,9990,9996,1812,1813
${fwcmd} add 021 allow ip from 10.0.6.0/23 to me
${fwcmd} add 022 allow ip from me to 10.0.6.0/23
krsix_ip="172.17.2**.0/26";
vpn_inet="192.168.10.0/25";
vpn_inet_stk="192.168.11.0/25";
inet_ip="84.2*.***.***/28";
gs_gw="84.2*.***.*";
stk_gw="10.0.*.*";
INT_VPN="ng*";
IP_EXT_STK="10.0.6.*";
inet_6="10.0.6.0{********}";
inet_7="10.0.7.0{********}";
${fwcmd} add 4000 allow all from ${krsix_ip} to any
${fwcmd} add 4001 allow all from any to ${krsix_ip}
${fwcmd} add 5000 allow all from ${inet_ip} to any
${fwcmd} add 5001 allow all from any to ${inet_ip}
${fwcmd} add 4500 divert 8668 ip from ${vpn_inet} to any out via ${EXT}
${fwcmd} add 4510 fwd ${gs_gw} ip from ${IP_EXT} to any
${fwcmd} add 4520 divert 8668 ip from any to ${IP_EXT} in via ${EXT}
${fwcmd} add 4530 allow ip from any to ${vpn_inet} in via ${EXT}
${fwcmd} add 4501 divert 8778 ip from ${vpn_inet_stk} to any
${fwcmd} add 4511 fwd ${stk_gw} ip from ${IP_EXT_STK} to any
${fwcmd} add 4521 divert 8778 ip from any to ${IP_EXT_STK}
${fwcmd} add 4531 allow ip from any to ${vpn_inet_stk}
${fwcmd} add 4110 allow ip from ${inet_6} to any in via ${INT}
${fwcmd} add 4111 allow ip from ${inet_7} to any in via ${INT}
${fwcmd} add 4121 divert 8668 ip from ${inet_6} to any out xmit ${EXT}
${fwcmd} add 4122 divert 8668 ip from ${inet_7} to any out xmit ${EXT}
${fwcmd} add 4131 divert 8668 ip from any to ${IP_EXT} in via ${EXT}
${fwcmd} add 4141 allow ip from any to ${inet_6} in via ${EXT}
${fwcmd} add 4142 allow ip from any to ${inet_7} in via ${EXT}
${fwcmd} add 4170 allow ip from any to ${inet_6} recv ${EXT} xmit ${INT}
${fwcmd} add 4170 allow ip from any to ${inet_7} recv ${EXT} xmit ${INT}
${fwcmd} add 5300 allow all from me to any
${fwcmd} add 5301 allow all from any to me
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 20:08:21
paradox
ну лучше все таки ipfw show
и в нем неполные айпи которые хочешь скрыть
потому как хотелось бы видеть где там пакеты идут не идут тикают
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 20:20:14
RusBiT
Спасибо за помощь, в целях безопасности скинул в личку
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-29 20:30:24
paradox
ну так у тебя там совсем не так все сделано
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-30 6:07:26
RusBiT
Можно поподробнее в чем ошибка?
Re: Два канала + ipfw + mpd
Добавлено: 2008-11-30 16:59:37
paradox
в выходные думать вообще нехочеться
но у тебя там немного не так все построено
можно пробовать разбираться с дивертами
а окажеться где то в самом фаерволе
попобуй включи лог в натд
и понаблюдай что туда попадает и что не возращаеться
вомозно оно проходит по какому то правилу фаера еще в верху
ну и вообще то диверты вставляються в самом начале фаера
а не в конце
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-01 11:54:10
RusBiT
Включил логи. На самом деле трафик на второго провайдеоа идет через интерфейс первого провайдера

Если через out xmit указать интерфейс, то лог чистый, пакеты вообще не идут туда
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-01 17:00:38
paradox
по сути дела
там нужен токо один форвард
вместо второго форварда должен срабатывать дефолтный роут
а иначе там такое накрутиться
форвард делаеться локальных айпи
а уже дальше когда пекет выходит из другого интерфейса он уже должен дивертиться
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-09 7:50:40
RusBiT
Таки и не удалось заставить нормально работать, исходящий трафик, через второй канал идет не через нужный ему интерфейс
Код: Выделить всё
divert 8778 log logamount 100 ip from 192.168.11.52 to any
fwd шлюз_второго_канала ip from ip_интерфейса_второго канала to any out via rl0
ipfw: 5100 Divert 8778 ICMP:8.0 192.168.11.52 194.67.57.226 out via
rl1 , а нужно
rl0
В чем дело то ?
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-09 9:04:25
paradox
что то у тебя совсем не то
и форвард неработает....
почисти фаервол
пересмотри политики ванпас итд
сделай один форвард
и посмотри пойдут туда пакеты или нет
потом уже диверт добавишь
и проверишь
если все будет работать
тогда и крути пайпы итд
что ты там накрутил
а так ты не разберешься
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-09 11:05:57
RusBiT
Для уверенности на выходных я переделал все правила файровала. Форварда два , как и писалось в примере.
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-09 21:04:24
paradox
если у тебя дефолт постоянно один
и неменяеться
то смысла двух форвардов нет
токо запутешься и запутаешь других)
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-10 10:51:29
RusBiT
Может все таки надо както статический маршрут до второго канала писать?
Если убераю форвард, то идет зацикливание
Код: Выделить всё
1 10.100.100.10 2.779 ms 4.725 ms 6.703 ms
2 10.100.100.10 8.709 ms !H 9.674 ms !H 11.660 ms !H
Код: Выделить всё
05101 0 0 divert 8778 ip from 192.168.11.0/24 to any out via rl2
05201 0 0 fwd 10.0.7.7 ip from 10.0.7.15 to any out via rl2
05301 35446814 37343784966 divert 8668 log logamount 100 ip from 192.168.10.0/24 to any out via rl1
05401 62046 77376812 fwd 84.22.1**.1 log logamount 100 ip from 84.22.1**.2 to any out via rl1
05501 0 0 divert 8778 ip from any to 10.0.7.5 in via rl0
05601 28490585 16983034146 divert 8668 ip from any to 84.22.1**.2 in via rl1
05701 23 2181 allow ip from 192.168.10.0/23 to any in via ng*
05801 28442420 16980467659 allow ip from not 192.168.10.0/23 to 192.168.10.0/23
rl0 (локалка)
rl1 - первый провайдер
rl2 - второй (через локалку)
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-10 11:31:16
RusBiT
Если же убрать привязку по интерфейсу, то наблюдается
Код: Выделить всё
Dec 10 15:27:34 user kernel: ipfw: 5201 Forward to 10.0.7.7 UDP 10.0.7.15:60895 194.87.0.50:33448 out via rl1
Прет не туда вообщем пакет.
Код: Выделить всё
netstat -rn | grep 10.0.7.7
10.0.7.7 00:*0:4*:*b:90:3a UHLS 1 84 rl2
Погуглил, говорят что
IPFIREWALL_FORWARD_EXTENDED нужно в ядро вкомпилить. Но у меня шестерка, там такой опции нету
В ядре у меня
Код: Выделить всё
options NETGRAPH
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_SOCKET
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options TCP_DROP_SYNFIN
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-10 11:41:39
paradox
я к вечеру проснусь
погляжу трезвым взглядом и скажу что то
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-10 23:41:21
paradox
ненадо там никакой екстендед
делай все по порядку
настрой для начала все через тот канал куда указывает дефолтный роут
на тот исходящий интерфейс поцепи видерт для ната
проверил?работает?
дальше
цепляешь диверт на другой интрефейс(A)
и указываешь в правиле диверт ловить токо те пакеты котроые хочешь завернуть на другой шлюз
и ниже делаешь форвард в удаленнуй точку тунеля
пакет )(внимание) который получаеться на этом интрефейсе(A)
и все должно работать
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-11 6:32:56
RusBiT
Все равно не работает, идет опятьт не через тот интерфейс. Первый нат 8668 нормально работает.
Код: Выделить всё
05301 divert 8668 log logamount 100 ip from 192.168.10.0/24 to any out via rl1
05350 allow ip from 84.22.1**.2 to any out via rl1
05601 divert 8668 ip from any to 84.22.1**.2 in via rl1
05602 divert 8669 log logamount 100 ip from 192.168.11.5 to any xmit rl2
05603 fwd 10.0.7.7 log logamount 100 ip from 10.0.7.15 to any out via rl2
05604 divert 8669 ip from any to 10.0.7.15 in via rl2
05605 allow ip from any to 192.168.10.0/23 in via rl1
05701 allow ip from 192.168.10.0/23 to any in via ng*
05801 allow ip from not 192.168.10.0/23 to 192.168.10.0/23
Есть у кого вообще проверенный рабочий пример?
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-11 6:41:59
paradox
покажи как тикают счетчики по последним твоим правилам
и покажи таблицу маршрутизации
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-11 6:53:14
RusBiT
Код: Выделить всё
# ipfw show 5301-5801
05301 52318564 49684788338 divert 8668 log logamount 100 ip from 192.168.10.0/24 to any out via rl1
05350 51611 4296224 allow ip from 84.22.1**.2 to any out via rl1
05601 46916045 33677951487 divert 8668 ip from any to 84.22.1**.2 in via rl1
05602 0 0 divert 8669 log logamount 100 ip from 192.168.11.5 to any xmit rl2
05603 0 0 fwd 10.0.7.7 log logamount 100 ip from 10.0.7.15 to any out via rl2
05604 0 0 divert 8669 ip from any to 10.0.7.15 in via rl2
05605 70873 77154797 allow ip from any to 192.168.10.0/23 in via rl1
05701 23 2181 allow ip from 192.168.10.0/23 to any in via ng*
05801 46731593 33595191230 allow ip from not 192.168.10.0/23 to 192.168.10.0/23
Код: Выделить всё
netstat -rn | grep -v : | grep -v ng
Destination Gateway Flags Refs Use Netif Expire
default 84.22.139.1 UGS 0 72265613 rl1
10 link#3 UC 0 0 rl2
10.0.6/24 10.0.7.1 UGS 0 302468130 rl0 =>
10.0.6/23 link#1 UC 0 0 rl0
10.100.100.10 127.0.0.1 UH 0 0 lo0
84.22.139/24 link#2 UC 0 0 rl1
127.0.0.1 127.0.0.1 UH 0 117301 lo0
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-11 8:51:42
paradox
05602 0 0 divert 8669 log logamount 100 ip from 192.168.11.5 to any xmit rl2
ищи где там пропадает по фаеру 11.5
как токо он попадет в правило так сразу и дальше пройдет
5602 ???
я ж сказал начни с чистого фаревола
Re: Два канала + ipfw + mpd
Добавлено: 2008-12-11 17:05:31
RusBiT
Так есть у кого явно рабочий и проверенный конфиг ipfw c двумя каналами?