Страница 1 из 1

2 pppoe канала + маршрутизация

Добавлено: 2010-10-20 11:55:00
kil
Перекомпилил ядро с поддержкой

Код: Выделить всё

options ROUTETABLES=2
mpd5 поднимает 2 pppoe соединения ng0 и ng1, весь траффик идёт через ng0, т.к. шлюз по умолчанию указан он

Код: Выделить всё

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
        inet 93.88.130.* --> 1.1.1.1 netmask 0xffffffff
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
        inet 212.232.4.* --> 1.1.1.2 netmask 0xffffffff
добляю 2 маршрута по умолчанию
setfib 0 netstat -rn

Код: Выделить всё

Destination        Gateway            Flags    Refs      Use  Netif Expire
default            1.1.1.1            UGS         0 51526733    ng0
1.1.1.1            93.88.130.*       UH          1       17    ng0
1.1.1.2            212.232.4.*       UH          0        0    ng1
setfib 1 netstat -rn

Код: Выделить всё

Destination        Gateway            Flags    Refs      Use  Netif Expire
default            1.1.1.2            UGS         0     1517    ng1
1.1.1.1            93.88.130.*       UH          0        0    ng0
1.1.1.2            212.232.4.*       UH          1        0    ng1
К примеру хочу чтобы с ip 192.168.2.55 пакеты шли через альтернативный (1.1.1.2)
фаер

Код: Выделить всё

10 check-state
20 setfib 1 ip from 192.168.2.55 to any in recv fxp0 keep-state
30 allow ip from 192.168.2.55 to any in via fxp0
40 deny ip from 192.168.2.0/24 to any in via fxp0
50 divert 8669 ip from any to any via dc0
60 divert 8668 ip from any to any via ng0
70 divert 8670 ip from any to any via ng1
80 allow ip from any to any via ng1 keep-state
90 allow ip from any to any
В моём понимании это должно работать так: делаю пинг с 192.168.2.55 на ya.ru
пакет попадает на in интерфейса fxp0, видит правило 20, где ему будет назначен шлюз (1.1.1.2) и соответственно интерфейс ng1, далее пакет доходит до правила 30 и выходит из IN
на втором проходе пакет выглядит как 192.168.2.55 на ya.ru out ng1, правилом 70 дивертится и либо 80-90 уходит в сеть.
Ответ из сети попадает на 70 правило, где должно ставится соответствие и на втором проходе 90 правилом доходить до адресата.
Но, пинги не идут, не пойму даже почему,
tcpdump -i ng1 'ip proto \icmp' ловит вот что

Код: Выделить всё

12:33:03.763169 IP 212.232.4.* > http://www.yandex.ru: ICMP echo request, id 10760, seq 1, length 64
12:33:03.778033 IP http://www.yandex.ru > 212.232.4.*: ICMP echo reply, id 10760, seq 1, length 64
а вот куда дальше пакет девается я никак не пойму
net.inet.ip.fw.one_pass в 0

Re: 2 pppoe канала + маршрутизация

Добавлено: 2010-10-20 12:11:46
terminus
Используйте ipfw nat.
Так как natd это юзер-левел процесс, то все теги/фибы/и др. фишки ipfw теряются, когда трафик уходит из ядра на natd. После возвращения в фаерволл пакеты больше не имеют fib (юзают по-умолчанию fib 0).

Re: 2 pppoe канала + маршрутизация

Добавлено: 2010-10-20 12:22:19
terminus
и куча keep-state не к месту.

Вот так должен работать:

Код: Выделить всё

ipfw nat 1 config if ng0 reset deny_in same_ports
ipfw nat 2 config if ng1 reset deny_in same_ports
ipfw nat 3 config if dc0 reset deny_in same_ports

20 setfib 1 ip from 192.168.2.55 to any in recv fxp0
30 allow ip from 192.168.2.55 to any in via fxp0
31 allow ip from any to 192.168.2.55 out via fxp0
40 deny ip from 192.168.2.0/24 to any in via fxp0

50 nat 3 ip from any to any via dc0
60 nat 1 ip from any to any via ng0
70 nat 2 ip from any to any via ng1

90 allow ip from any to any

Re: 2 pppoe канала + маршрутизация

Добавлено: 2010-10-20 13:50:07
kil
Огромное спасибо, работает, всё таки ipfw nat наверное менее глючнее, придётся отказатся от обычного natd.

Re: 2 pppoe канала + маршрутизация

Добавлено: 2010-10-21 9:22:13
vadim64
kil писал(а):Огромное спасибо, работает, всё таки ipfw nat наверное менее глючнее, придётся отказатся от обычного natd.
Да ну не то чтобы менее, он просто по другому работает вот и всё.