The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с policy routing, ipfw"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 11-Авг-09, 09:02 
Здравствуйте.
Есть маршрутизатор с FreeBSD 7.0 на борту, используется ipfw.
Возникла задача пробросить некоторую часть трафика до определённого узла через альтернативный маршрут.

ifconfig -a :

vlan900: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:13:20:c4:b0:85
        inet 192.168.0.22 netmask 0xfffffe00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
        vlan: 900 parent interface: em0
Дефолтный шлюз: 192.168.0.24

sk0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>                                        
        ether 00:17:9a:06:1b:dc                                                  
        inet 192.168.22.1 netmask 0xffffff00 broadcast 192.168.22.255            
        media: Ethernet autoselect (100baseTX <full-duplex>)                    
        status: active

Здесь есть адсл-модем, настроеный рутером, ip 192.168.22.2, его интернет адрес 89.###.###.3

/etc/rc.firewall :
/sbin/ipfw -q flush          

${ipfw} add pass tcp from any to any established
${ipfw} add check-state

${ipfw} add divert natd log  tcp from me to 77.###.###.158 80 out
                                            
${ipfw} add fwd 192.168.22.2 log  tcp from me to 77.###.###.158 80

${ipfw} add divert natd log ip from any to 192.168.22.1 in

Natd запущен просто natd -a 192.168.22.1

Какая получается картина:
Пакеты форвардятся через модем и доходят до хоста 77.###.###.158 нормально, о чем свидетельствует netstat, на том хосте.
netstat -na --inet
tcp        0      0 77.###.###.158:80       89.###.###.3:53542      SYN_RECV

natd с параметром -v показывает, что исходящие пакеты дивертятся нормально.
Out {default}[TCP]  [TCP] 192.168.0.22:53542 -> 77.###.###.158:80 aliased to
           [TCP] 192.168.22.1:53542 -> 77.###.###.158:80

но tcpdump на интерфейсе sk0(с адсл модемом) показывает только входящие пакеты, из чего я делаю вывод, что они не попадают в natd по какой-то причине.

08:54:55.468904 IP 77.###.###.158.80 > 192.168.22.1.53542: S 916117243:916117243(0) ack 4200163278 win 5792 <mss 1452,sackOK,timestamp 40956577 309862263,nop,wscale 0>

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема с policy routing, ipfw"  +/
Сообщение от Kos (??) on 11-Авг-09, 14:30 

>${ipfw} add divert natd log  tcp from me to 77.###.###.158 80
>out
>
>${ipfw} add fwd 192.168.22.2 log  tcp from me to 77.###.###.158 80
>
>
>${ipfw} add divert natd log ip from any to 192.168.22.1 in
>

странная конструкция какая-то. Но сначала покажите вывод
#sysctl net.inet.ip.fw.one_pass
и
#sysctl net.inet.ip.forwarding

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 11-Авг-09, 14:38 

>#sysctl net.inet.ip.fw.one_pass

>#sysctl net.inet.ip.forwarding

net.inet.ip.fw.one_pass: 0
net.inet.ip.forwarding: 1

В чем странность?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Проблема с policy routing, ipfw"  +/
Сообщение от Kos (??) on 11-Авг-09, 14:49 
>
>>#sysctl net.inet.ip.fw.one_pass
>>и
>>#sysctl net.inet.ip.forwarding
>
>net.inet.ip.fw.one_pass: 0
>net.inet.ip.forwarding: 1
>
>В чем странность?

если нужно указать путь ДО хоста, зачем вообще юзать форвард? что мешает прописать статический маршрут через нужный шлюз?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 11-Авг-09, 15:12 
>[оверквотинг удален]
>>>и
>>>#sysctl net.inet.ip.forwarding
>>
>>net.inet.ip.fw.one_pass: 0
>>net.inet.ip.forwarding: 1
>>
>>В чем странность?
>
>если нужно указать путь ДО хоста, зачем вообще юзать форвард? что мешает
>прописать статический маршрут через нужный шлюз?

Ну, вот возникла такая необходимость: на порт 80 нужно гнать через адсл, всё остальное -- через обычный маршрут.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Проблема с policy routing, ipfw"  +/
Сообщение от Kos (??) on 11-Авг-09, 15:22 
>[оверквотинг удален]
>>>net.inet.ip.fw.one_pass: 0
>>>net.inet.ip.forwarding: 1
>>>
>>>В чем странность?
>>
>>если нужно указать путь ДО хоста, зачем вообще юзать форвард? что мешает
>>прописать статический маршрут через нужный шлюз?
>
>Ну, вот возникла такая необходимость: на порт 80 нужно гнать через адсл,
>всё остальное -- через обычный маршрут.

догда правило с дивертом не нужно вообще. НАТ включен на самом адсл, достаточно просто отфорвардить трафик туда

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 11-Авг-09, 15:40 
>>>если нужно указать путь ДО хоста, зачем вообще юзать форвард? что мешает
>>>прописать статический маршрут через нужный шлюз?
>>
>>Ну, вот возникла такая необходимость: на порт 80 нужно гнать через адсл,
>>всё остальное -- через обычный маршрут.
>
>догда правило с дивертом не нужно вообще. НАТ включен на самом адсл,
>достаточно просто отфорвардить трафик туда

Убрал в правилах диверты, оставил просто форвард. Всеравно не работает. На удалённом хосте в нестате всё так же SYN_RECV. В tcpdump'e на интерфейсе с модемом:

15:36:56.110278 IP 77.###.###.158.80 > 192.168.0.22.62523: S 654993913:654993913(0) ack 3533674242 win 5792 <mss 1452,sackOK,timestamp 43368808 334018382,nop,wscale 0>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 13-Авг-09, 10:21 
>Убрал в правилах диверты, оставил просто форвард. Всеравно не работает. На удалённом
>хосте в нестате всё так же SYN_RECV. В tcpdump'e на интерфейсе
>с модемом:
>
>15:36:56.110278 IP 77.###.###.158.80 > 192.168.0.22.62523: S 654993913:654993913(0) ack 3533674242 win 5792 <mss 1452,sackOK,timestamp 43368808 334018382,nop,wscale 0>

Так почему не работает нормально форвард?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Проблема с policy routing, ipfw"  +/
Сообщение от YuryD (??) on 11-Авг-09, 15:25 
>Ну, вот возникла такая необходимость: на порт 80 нужно гнать через адсл,
>всё остальное -- через обычный маршрут.

Только определитесь, траффик должен уйти до divert или после divert ?

Порядок правил, если через natd, то сначала divert затем fwd но уже с адресом natd,


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (??) on 11-Авг-09, 20:46 
> Только определитесь, траффик должен уйти до divert или после divert ?
>
>
> Порядок правил, если через natd, то сначала divert затем fwd но
>уже с адресом natd,

Извините, но я вас не понял.
(несколько раз прочитал про себя и пару раз вслух, но так и не уловил сути)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Проблема с policy routing, ipfw"  +/
Сообщение от sad_but_true (ok) on 01-Сен-09, 16:58 
Проблема решена! Заключалась в самом верхнем правиле,
${ipfw} add pass tcp from any to any established

Передвинул ниже дивертов -- все отлично заработало.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру