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

Исходное сообщение
"Либо меня глючит либо сетевую систему во FreeBSD"

Отправлено FOX , 23-Мрт-08 14:16 
Нужно наладить объмен информацией между сетям NET-A и NET-D по следующиму маршруту:


  NET-A(192.168.100.0/24)                               NET-D(192.168.5.0/24)
     |                                                     |
     |                                                     |
     |                                                     |
  Router A(192.168.100.1)                               Router D(192.168.5.1)
             |                                             |
         VPN |                                             |VPN
             |         <NAT<                               |
Router B(192.168.51.1)-----(192.168.51.2) Router C(192.168.1.1)-----NET-C(192.168.1.0/24)
             |
             |
             |
      NET-B(192.168.51.0/24)

Сети A и B объеденены через IPSec
Router B и Router С назодятся в одной сети
Сети С и В объеденены через IPSec

Из сети NET-С пингуются и сеть NET-A и NET-D NET-B.
Из сети NET-D пингется сеть NET-С, а вот с остальныйм НАЧИНАЕТСЯ ГЛЮК - Пинги проходят только в том случае если добавит следующие правило:

ipfw add 1 allow log ip from any to any

И работает через раз(превый раз запустишь пингует, остановишь и запустишь ещё раз - пинги не проходят. Ещё раз остановишь и запустишь опять пингуется).

На роутере D стоит FreeBSD 7.0, ipfw, vpn- IPsec
Вот маршрутизация:
default            77.XX.XX.XX       UGS         0    31331    vr0
77.XX.XX.XY/28    link#2             UC          0        0    vr0
77.XX.XX.XX       00:90:1a:42:49:6e  UHLW        2        0    vr0   1199
127.0.0.1          127.0.0.1          UH          0        0    lo0
172.16.0.0/29      link#5             UC          0        0 vlan11
172.16.1.0/29      link#6             UC          0        0 vlan12
172.16.1.8/29      link#7             UC          0        0 vlan13
172.16.1.16/29     link#8             UC          0        0 vlan14
172.16.1.24/29     link#9             UC          0        0 vlan15
192.168.1.0/24     gif2               US          0     7924   gif2
192.168.1.1        192.168.5.1        UH          1     4422   gif2
192.168.2.0/24     gif0               US          0      344   gif0
192.168.2.1        192.168.5.1        UH          0        0   gif0
192.168.4.0/24     gif1               US          0        0   gif1
192.168.4.1        192.168.5.1        UH          0        0   gif1
192.168.5.0/24     link#4             UC          0        0 vlan10
192.168.7.0/24     gif3               US          0      449   gif3
192.168.7.1        192.168.5.1        UH          0        0   gif3
192.168.8.0/24     gif4               US          0        0   gif4
192.168.8.1        192.168.5.1        UH          0        0   gif4
192.168.11.0/24    gif6               US          0        0   gif6
192.168.11.1       192.168.5.1        UH          0        0   gif6
192.168.12.0/24    gif7               US          0        0   gif7
192.168.12.1       192.168.5.1        UH          0        0   gif7
192.168.51.0/24    192.168.1.1        UGS         0     3374   gif2
192.168.77.0/24    link#1             UC          0        0    re0
192.168.100.0/24   gif2               US          0     3532   gif2

Правила IPFW:

00100 allow ip from any to any via lo0
00400 allow log ip from any to any via lo0
00500 allow log tcp from any to any dst-port 22 via vr0
00600 allow log udp from 82.162.XX.XX 500 to 77.34.XX.XX dst-port 500 in via vr0
00700 allow log udp from 77.34.XX.XX 500 to 82.162.XX.XX dst-port 500 out via vr0
00800 allow log esp from 82.162.XX.XX to 77.34.XX.XX in via vr0
00900 allow log esp from 77.34.XX.XX to 82.162.XX.XX out via vr0
01000 allow log ip from any to any via gif0
01100 allow log udp from 80.243.XX.XX 500 to 77.34.XX.XX dst-port 500 in via vr0
01200 allow log udp from 77.34.XX.XX 500 to 80.243.XX.XX dst-port 500 out via vr0
01300 allow log esp from 80.243.XX.XX to 77.34.XX.XX in via vr0
01400 allow log esp from 77.34.XX.XX to 80.243.XX.XX out via vr0
01500 allow log ip from any to any via gif1
01600 allow log udp from 82.162.XX.XX 500 to 77.34.XX.XX dst-port 500 in via vr0
01700 allow log udp from 77.34.XX.XX 500 to 82.162.XX.XX dst-port 500 out via vr0
01800 allow log esp from 82.162.XX.XX to 77.34.XX.XX in via vr0
01900 allow log esp from 77.34.XX.XX to 82.162.XX.XX out via vr0
02100 allow log udp from 82.162.XX.XX 500 to 77.34.XX.XX dst-port 500 in via vr0
02200 allow log udp from 77.34.XX.XX 500 to 82.162.XX.XX dst-port 500 out via vr0
02300 allow log esp from 82.162.XX.XX to 77.34.XX.XX in via vr0
02400 allow log esp from 77.34.XX.XX to 82.162.XX.XX out via vr0
02500 allow log ip from any to any via gif3
02600 allow log udp from 82.162.XX.XX 500 to 77.34.XX.XX dst-port 500 in via vr0
02700 allow log udp from 77.34.XX.XX 500 to 82.162.XX.XX dst-port 500 out via vr0
02800 allow log esp from 82.162.XX.XX to 77.34.XX.XX in via vr0
02900 allow log esp from 77.34.XX.XX to 82.162.XX.XX out via vr0
03000 allow log ip from any to any via gif4
03100 allow log tcp from any to 77.34.XX.XX dst-port 123 via vr0
03200 allow log udp from any to 77.34.XX.XX dst-port 123 via vr0
03300 allow log tcp from any 123 to 77.34.70.162 via vr0
03400 allow log udp from any 123 to 77.34.70.162 via vr0
04110 divert 8001 log ip from 192.168.5.0/24 to 192.168.51.0/24 via gif2
04110 divert 8001 log ip from 192.168.51.0/24 to 192.168.5.0/24 via gif2
04120 allow log ip from any to any via gif2
04200 deny log ip from any to 240.0.0.0/4 via vr0
04300 divert 199 log ip from 192.168.5.8 to any out xmit vr0
04400 divert 8668 log ip from 192.168.5.8 to any via vr0
04500 divert 8668 log ip from 172.16.0.0/29 to any via vr0
04600 divert 199 log ip from 172.16.1.0/29 to any out xmit vr0
04700 divert 8668 log ip from 172.16.1.0/29 to any via vr0
04800 divert 199 log ip from 172.16.1.8/29 to any out xmit vr0
04900 divert 8668 log ip from 172.16.1.8/29 to any via vr0
05000 divert 199 log ip from 172.16.1.16/29 to any out xmit vr0
05100 divert 8668 log ip from 172.16.1.16/29 to any via vr0
05200 divert 8668 log ip from any to 77.34.70.162 via vr0
05300 divert 199 log ip from any to 192.168.5.8 in recv vr0
05400 divert 199 log ip from any to 172.16.1.0/29 in recv vr0
05500 divert 199 log ip from any to 172.16.1.8/29 in recv vr0
05600 divert 199 log ip from any to 172.16.1.16/29 in recv vr0
05700 deny log ip from 10.0.0.0/8 to any via vr0
05800 deny log ip from 172.16.0.0/12 to any via vr0
05900 deny log ip from 0.0.0.0/8 to any via vr0
06000 deny log ip from 169.254.0.0/16 to any via vr0
06100 deny log ip from 192.0.2.0/24 to any via vr0
06200 deny log ip from 198.18.0.0/15 to any via vr0
06300 deny log ip from 224.0.0.0/4 to any via vr0
06600 allow log ip from any to any via re0
06700 deny log ip from 172.16.0.0/16 to any via vlan10
06800 deny log ip from any to 172.16.0.0/16 via vlan10
06900 allow log ip from 192.168.5.0/24 to any via vlan10
07000 allow log ip from any to 192.168.5.0/24 via vlan10
07100 allow log ip from 192.168.5.8 to any via vr0
07200 allow log ip from any to 192.168.5.8 via vr0
07400 deny log ip from any to 192.168.0.0/16 via vlan11
07500 allow log ip from 172.16.0.0/29 to any via vlan11
07600 allow log ip from any to 172.16.0.0/29 via vlan11
07700 allow log ip from 172.16.0.0/29 to any via vlan11
07800 allow log ip from any to 192.168.1.0/24 via vlan11
07900 allow log ip from 192.168.5.8 to any via vr0
08000 allow log ip from any to 192.168.5.8 via vr0
08100 allow log ip from any to any via vlan11
08200 allow log ip from any to any via vlan12
08300 allow log ip from any to any via vlan13
08400 allow log ip from any to any via vlan14
08500 allow log ip from 77.34.XX.XX to any out via vr0
08600 allow log tcp from any to any established via vr0
08700 allow log ip from any to any frag
08800 allow log udp from any 53 to any via vr0
08900 deny log ip from any to any


Содержание

Сообщения в этом обсуждении
"Либо меня глючит либо сетевую систему во FreeBSD"
Отправлено mixa , 23-Мрт-08 15:09 
Уж простите великодушно, но тут явно косяк либо с фаерволом, либо маршрутизацией, и не исключено, что и с тем и другим одновременно.
Ещё раз проверяйте и перепроверяйте правила фаервола и маршрутизацию.
А то до банального доходит, жалуются - "А-а-а-а! Караул! Не работает!"
Оказывается банально ядро не перекомпилировали с нужными опциями.
Откройте фаервол на всех маршрутирах полностью. ipfw add 1 allow ip from any to any
Разрешите всё и всем и куда угодно и откуда угодна (ессно для проверки).
Удалите все маршруты, а потом добавляйте вручную по одному, и уверяю вас - всё получиться.

"Либо меня глючит либо сетевую систему во FreeBSD"
Отправлено FOX , 23-Мрт-08 16:32 
>[оверквотинг удален]
>и не исключено, что и с тем и другим одновременно.
>Ещё раз проверяйте и перепроверяйте правила фаервола и маршрутизацию.
>А то до банального доходит, жалуются - "А-а-а-а! Караул! Не работает!"
>Оказывается банально ядро не перекомпилировали с нужными опциями.
>Откройте фаервол на всех маршрутирах полностью. ipfw add 1 allow ip from
>any to any
>Разрешите всё и всем и куда угодно и откуда угодна (ессно для
>проверки).
>Удалите все маршруты, а потом добавляйте вручную по одному, и уверяю вас
>- всё получиться.

Сейчас объясню почему гдюк:

Применяю правило ipfw add 1 allow LOG ip from any to any

далее c routera-d делаем:

ping 192.168.51.1


Вот что пишет log router-D:

Mar 23 23:02:56 g-shluz kernel: ipfw: 1 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:02:56 g-shluz kernel: ipfw: 1 Accept ICMP:0.0 192.168.51.1 192.168.5.1 in via gif2
Mar 23 23:02:57 g-shluz kernel: ipfw: 1 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:02:57 g-shluz kernel: ipfw: 1 Accept ICMP:0.0 192.168.51.1 192.168.5.1 in via gif2
Mar 23 23:02:58 g-shluz kernel: ipfw: 1 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:02:58 g-shluz kernel: ipfw: 1 Accept ICMP:0.0 192.168.51.1 192.168.5.1 in via gif2
Mar 23 23:02:59 g-shluz kernel: ipfw: 1 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:02:59 g-shluz kernel: ipfw: 1 Accept ICMP:0.0 192.168.51.1 192.168.5.1 in via gif2

А вот лог router-d

000000 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 35116, seq 0, length 64
001039 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 0, length 64
000038 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 0, length 64
1. 000827 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 35116, seq 1, length 64
000997 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 1, length 64
000036 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 1, length 64
1. 000306 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 35116, seq 2, length 64
001008 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 2, length 64
000034 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 35116, seq 2, length 64
1. 000761 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 35116, seq 3, length 64


Согластно этому роутинг работает, а в firewall на router-d добавить правила (Если я не прав поправьте меня):

ipfw add 2 allow log ip from 192.168.5.0/24 to 192.168.51.0/24 out via gif2
ipfw add 3 allow log ip from 192.168.51.0/24 to 192.168.5.0/24 in via gif2

и удаляем наше первое правило (ipfw add 1 allow LOG ip from any to any)

Смотрим что у нас в логах:
Router-D

Mar 23 23:19:40 g-shluz kernel: ipfw: 4 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:19:41 g-shluz kernel: ipfw: 4 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:19:42 g-shluz kernel: ipfw: 4 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:19:43 g-shluz kernel: ipfw: 4 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2
Mar 23 23:19:44 g-shluz kernel: ipfw: 4 Accept ICMP:8.0 192.168.5.1 192.168.51.1 out via gif2

Router-C:
000000 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 42284, seq 0, length 64
001031 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 0, length 64
000038 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 0, length 64
1. 000374 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 42284, seq 1, length 64
001020 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 1, length 64
000033 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 1, length 64
999504 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 42284, seq 2, length 64
000999 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 2, length 64
000034 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 2, length 64
1. 000075 rule 10/0(match): pass in on gif2: 192.168.5.1 > 192.168.51.1: ICMP echo request, id 42284, seq 3, length 64
000998 rule 147/0(match): pass in on rl0: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 3, length 64
000032 rule 10/0(match): pass out on gif2: 192.168.51.1 > 192.168.5.1: ICMP echo reply, id 42284, seq 3, length 64

Вот и получается, что правила верные, но пакеты не доходят и теряются они ipfw. А траффик межуду 192.168.5.0/24 и 192.168.1.0/24 ходят без проблем.

Поэтому разговор и идет про глюк

PS Маршруты я уже удалял


"Либо меня глючит либо сетевую систему во FreeBSD"
Отправлено PavelR , 24-Мрт-08 06:04 
>[оверквотинг удален]
>>Оказывается банально ядро не перекомпилировали с нужными опциями.
>>Откройте фаервол на всех маршрутирах полностью. ipfw add 1 allow ip from
>>any to any
>>Разрешите всё и всем и куда угодно и откуда угодна (ессно для
>>проверки).
>>Удалите все маршруты, а потом добавляйте вручную по одному, и уверяю вас
>>- всё получиться.
>
>Сейчас объясню почему гдюк:
>

Да поровну почему глюк, список правил постороннему человеку читать просто ужасно.

Повторю еще раз предыдущего отвечающего:
Удаляешь все правила на маршрутизаторах, потом добавляешь по одному.

Учти, что пакет проходит через IPFW _два_! раза, один раз на входе в рутер, второй раз на выходе. Переписывай правила. Еще у тебя какие-то диверты на какой-то нат есть, не понятно зачем оно надо для внутренних сеток.