URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84918
[ Назад ]

Исходное сообщение
"FreeBSD 6.0R PBR: куда делись icmp?"

Отправлено Four , 15-Апр-09 13:48 
Доброго времени суток!
имеем машину на фре 6.0-релиз с тремя интерфейсами.
rl0 - lan
rl1 - к инету со статическим ипом на интерфейсе
rl2 - к провайдеру для доступа к впн серверу
ng1 - впн к инету на динамике.
# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:80:48:32:b1:34
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 81.30.*.* netmask 0xffffffe0 broadcast 81.30.222.127
        ether 00:50:22:9f:fb:ff
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 10.66.46.70 netmask 0xffffff00 broadcast 10.66.46.255
        ether 00:80:48:3a:cd:4a
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
        inet 89.189.145.81 --> 10.8.0.8 netmask 0xffffffff

Дефолт роут идет через ng1.
фаервол - ipfw


#generic NAT
ipfw add 50 divert 8778 ip from 192.168.0.0/16 to not 192.168.0.0/16 via ng1
ipfw add 50 divert 8778 ip from any to any in via ng1
#PBR
ipfw add 100 fwd 81.30.222.97  ip from 81.30.222.126 to any

#allow own gate's traffic
ipfw add 500 allow all from any to me
ipfw add 500 allow all from me to any

#LuckyNet <-> JuiceNet
ipfw add 700 allow all from 192.168.0.0/24 to 192.168.1.0/24
ipfw add 700 allow all from 192.168.1.0/24 to 192.168.0.0/24

#Table 1: dest hosts allowed for all
#Table 2: Trusted hosts


#registrar count
#ipfw add 910 count all from plast.virtualufa.ru to any

#allow traffit to trusted hosts
ipfw add 10000 allow all from 192.168.0.0/16 to table\(1\)

#NOD32 Update
ipfw add 15000 allow all from 192.168.0.3 to 89.202.0.0/16
ipfw add 15001 allow all from 192.168.0.3 to 72.32.7.91
#Mail
ipfw add 15100 allow ip from 192.168.0.4 to smtp.mail.ru 25
ipfw add 15400 allow ip from 192.168.0.199 to any 25
ipfw add 15400 deny ip from any to any 25
#WEB Access (fwd to tr. proxy)
ipfw add 30000 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80
#ICQ Users
ipfw add 40001 allow ip from ov to any 5190
ipfw add 40001 allow ip from 192.168.0.195 to any 5190
ipfw add 40001 allow ip from ov to any https
ipfw add 40001 allow ip from 192.168.0.195 to any https
#Computerz wid full access
ipfw add 50000 allow all from table\(2\) to any
#returned traffic
ipfw add 65000 allow ip from any to 192.168.0.0/24

работает все, кроме icmp - не могу пингануть по 81.30..... По вебу/ссх/прочему обращаюсь без проблем. Пробовал отдельно прописать форвард для icmp. Пакеты на правило попадают, но на этом все.
Где затык?


Содержание

Сообщения в этом обсуждении
"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено tiv , 15-Апр-09 16:40 
почему у вас идут правила с одинаковыми номерами?
ipfw add 50 divert 8778 ip from 192.168.0.0/16 to not 192.168.0.0/16 via ng1
ipfw add 50 divert 8778 ip from any to any in via ng1

ipfw add 500 allow all from any to me
ipfw add 500 allow all from me to any

ipfw add 700 allow all from 192.168.0.0/24 to 192.168.1.0/24
ipfw add 700 allow all from 192.168.1.0/24 to 192.168.0.0/24


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 15-Апр-09 16:59 
Изменил номера. Толку не стало.
Просто когда конфиг писал так было удобнее.
>[оверквотинг удален]
> 15000 allow ip from 192.168.0.3 to 89.202.0.0/16
> 15001 allow ip from 192.168.0.3 to 72.32.7.91
> 15100 allow ip from 192.168.0.4 to 94.100.177.1 dst-port 25
> 15400 allow ip from 192.168.0.199 to any dst-port 25
> 15450 deny ip from any to any dst-port 25
> 30000 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80
> 50000 allow ip from table(2) to any
> 65000 allow ip from any to 192.168.0.0/24
> 65100 allow ip from 192.168.0.0/24 to 192.168.1.0/24
> 65535 deny ip from any to any


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено tiv , 15-Апр-09 17:09 
а если убрать это правило
ipfw add 100 fwd 81.30.222.97  ip from 81.30.222.126 to any
из локальной сети нет пинга?

"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 15-Апр-09 17:15 
>а если убрать это правило
>ipfw add 100 fwd 81.30.222.97  ip from 81.30.222.126 to any
>из локальной сети нет пинга?

если убрать это правило, из локашки будет пинг (он же приходит на машину прямиком).
но не будет извне ничего работать по этому адресу (81.30.222.126), только по ng1 (который динамика).


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено tiv , 15-Апр-09 17:52 
ну так и измените это правило под свои нужды, привяжите его к интерфейсу,исключите локальную подсеть, примерно вот так
ipfw add 100 fwd 81.30.222.97 all from 81.30.222.126 to not 192.168.0.0/24 via rl1
синтаксис не проверял

"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 15-Апр-09 23:07 
Хм... странная фича. Видимо, я чего то где то недопонял. Вот что значит проверять узел на доступность пингами.

После удаления форвардинга (правило 100) веб и ссх ВСЕ РАВНО РАБОТАЮТ при обращении на 81.30.222.126. А пинги все равно не идут (сейчас уже не вспомню, но судя по всему я и решил что надо ковырять пбр из за того что не получил доступа пингами).

И где косяк на этот раз?


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено tiv , 16-Апр-09 02:43 
>Хм... странная фича. Видимо, я чего то где то недопонял. Вот что
>значит проверять узел на доступность пингами.
>
>После удаления форвардинга (правило 100) веб и ссх ВСЕ РАВНО РАБОТАЮТ при
>обращении на 81.30.222.126. А пинги все равно не идут (сейчас уже
>не вспомню, но судя по всему я и решил что надо
>ковырять пбр из за того что не получил доступа пингами).
>
>И где косяк на этот раз?

Работает потому что пакеты приходят через одного провайдера(rl1), а уходят через другого(
ng1 - впн к инету на динамике), если отключить интернет через ng1 то скорее всего перестанет работать, значит 100 правило нужно, а icmp видимо гдето режит провайдер, попробуйте проверить пинг при сброшенном фаерволе и дефолтном маршруте через rl1 81.30.222.97  


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 16-Апр-09 06:48 
Провайдер, кстати, один и тот же.
В случае если дефольный роут через 81.30.222.97, то пинг на 81.30.222.126 идет (ситуация как при положеной впнке). Позволю себе немножно описать ситуацию, надеюсь, станет понятнее.
Наш провайдер предоставляет доступ по IPN (статика вешается на интерфейс) и по впн. на Впн есть возможность подключить безлимит, но при безлимите нет возможности статики. На IPN же нет безлимита. Поэтому получилось, что у нас 2 подключения. IPN на котором хочу держать сервисы и vpn, через который все кормятся инетом.
Для 81.30.222.126 шлюз по умолчанию 81.30.222.97. Если я опускаю впн и прописываю такой шлюз (и меняю правило наттинга) - вся контора бежит через дорогой инет. Идут пинги в обе стороны. Когда я поднимаю впн и пускаю траффик через ng1 - контора сидит через безлимит, а пинги, приходящие на 81.30.222.126 уходят через ng1. А так как на пингующей стороне ждут ответов не от 89.х.х.х, а он 81.30.222.126, ответы на пинги отбрасываются и толку нет. Да и само по себе не дело, чтобы ответы шли через ng1 - ширина то там зарезана.

"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Pahanivo , 16-Апр-09 07:40 
>[оверквотинг удален]
>через который все кормятся инетом.
>Для 81.30.222.126 шлюз по умолчанию 81.30.222.97. Если я опускаю впн и прописываю
>такой шлюз (и меняю правило наттинга) - вся контора бежит через
>дорогой инет. Идут пинги в обе стороны. Когда я поднимаю впн
>и пускаю траффик через ng1 - контора сидит через безлимит, а
>пинги, приходящие на 81.30.222.126 уходят через ng1. А так как на
>пингующей стороне ждут ответов не от 89.х.х.х, а он 81.30.222.126, ответы
>на пинги отбрасываются и толку нет. Да и само по себе
>не дело, чтобы ответы шли через ng1 - ширина то там
>зарезана.

хватит лепетать
нарисуйте схему для начала


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 16-Апр-09 08:20 
http://fouriki.ru/routing.gif

По tcpdump проблема ясна. Но не понятно, как решать: запускаю tcpdump на rl1 и ng1. ECHO_REQUEST приходит на rl1, а ECHO_REPLY уходит через ng1.


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Pahanivo , 16-Апр-09 12:28 
>http://fouriki.ru/routing.gif
>
>По tcpdump проблема ясна. Но не понятно, как решать: запускаю tcpdump на
>rl1 и ng1. ECHO_REQUEST приходит на rl1, а ECHO_REPLY уходит через
>ng1.

есно, уходит оно обратно по default route


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 16-Апр-09 15:29 
Вот именно. Пытался завернуть с помощью fwd на 100м правиле. Не пойму, почему не заворачивается: по идее пакет же улетает тогда в rl1.

"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено tiv , 16-Апр-09 11:08 
>[оверквотинг удален]
>через который все кормятся инетом.
>Для 81.30.222.126 шлюз по умолчанию 81.30.222.97. Если я опускаю впн и прописываю
>такой шлюз (и меняю правило наттинга) - вся контора бежит через
>дорогой инет. Идут пинги в обе стороны. Когда я поднимаю впн
>и пускаю траффик через ng1 - контора сидит через безлимит, а
>пинги, приходящие на 81.30.222.126 уходят через ng1. А так как на
>пингующей стороне ждут ответов не от 89.х.х.х, а он 81.30.222.126, ответы
>на пинги отбрасываются и толку нет. Да и само по себе
>не дело, чтобы ответы шли через ng1 - ширина то там
>зарезана.

icmp ответы у вас будут уходить от 81.30.222.126 он же у вас не натится на интерфейсе ng1, видимо они гдето режутся по дороге, вы правильно вначале делали используя policy  routing в 100 правиле, вот его и модифицируйте


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Dorlas , 16-Апр-09 23:00 
Привет пользователю Уфанет :)

Если есть желание и время - данные задачки легко и красиво решаются с помощью PF:

Пример (не полностью Ваш случай, но модифицируется просто):

http://forum.ufanet.ru/mvnforum/viewthread?thread=26578&offs...

Насчет Ваших правил:

Попробуйте в правиле с fwd вместо протокола ip поставить tcp - после этого icmp работают?


"FreeBSD 6.0R PBR: куда делись icmp?"
Отправлено Four , 17-Апр-09 08:49 
:) привет

Да в моем случае что на новый фаер пересесть, что на 7 перейти... с пф не работал вообще.
Заодно и kernel nat сделать можно. В 7 вроде появилась возможность нескольких таблиц маршрутизации. Там, судя по всем, вообще с пол пинка делается.

При добавлении tcp вместо ip icmp туда вообще не попадают (они же вроде не tcp как раз - установления то соединения нет. пакет пришел, пакет ушел)