Страница 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
впринципе могут быть и равны, но вроде и так работает с первым натом :smile:

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 двумя каналами?