Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Sweeper_jr
ефрейтор
Сообщения: 61
Зарегистрирован: 2006-01-19 12:48:12
Контактная информация:

Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение Sweeper_jr » 2009-11-24 15:54:32

Имеется три удаленных между собой хоста A, B и C. Между хостами A и B поднят туннель по статье http://www.lissyara.su/?id=1328, все работает нормально, претензий нет. A и B работают на FreeBSD 4.11.
Нужно поднять такой же туннель между хостами A и С. Хост C работает на FreeBSD 7.1 (с kernel nat, если это важно).
Все вроде просто. Делаем все по инструкции - http://www.lissyara.su/?id=1328. В результате на хосте A создается еще один гиф - gif1, с туннелем и роутингом. Правится ipsec.conf и racoon.conf. Плюс правила для IPFW (в самом вверху до дивертов и форвардов).
Для хоста C по такой же схеме. Правила IPFW запихиваю в самый вверх (ну почти, IPFW по-умолчанию ставит первыми правила для lo0). И все должно работать. Но не работает.
Хост A имеет айпи 192.168.2.100
Хост C имеет айпи 192.168.1.100
Делаю пинг с хоста A на хост C:

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

#ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100): 56 data bytes
^C
--- 192.168.1.100 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
14:28 bess@box [bess]#ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100): 56 data bytes
^C
--- 192.168.1.100 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
tcpdump на хосте A

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

#tcpdump -i gif1
tcpdump: listening on gif1
14:28:42.065241 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:43.069211 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:44.079221 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:45.089228 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:46.099238 192.168.2.100 > 192.168.1.100: icmp: echo request
tcpdump на хосте C

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

tcpdump -i gif0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gif0, link-type NULL (BSD loopback), capture size 96 bytes
и тишина... :no:
Делаю пинг с хоста C на хост A - тут намного интереснее:

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

# ping 192.168.2.100
PING 192.168.2.100 (192.168.2.100): 56 data bytes
^C
--- 192.168.2.100 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
tcpdump на хосте C

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

tcpdump -i gif0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gif0, link-type NULL (BSD loopback), capture size 96 bytes
14:37:11.783882 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 0, length 64
14:37:12.784145 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 1, length 64
14:37:13.785110 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 2, length 64
14:37:14.786083 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 3, length 64
14:37:15.787051 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 4, length 64
tcpdump на хосте A

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

#tcpdump -i gif1
tcpdump: listening on gif1
14:35:18.292822 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:18.292832 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:19.294324 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:19.294334 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:20.295794 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:20.295804 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:21.295979 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:21.295989 192.168.2.100 > 192.168.1.100: icmp: echo reply
Получается хост A получает риквесты и выдает реплаи, а хост C на отрез отказывается как получать риквесты, так и отдавать реплаи. У меня подозрения на IPFW хоста C.
Народ! Хелп! :cz2: Подскажите какие правила должны быть для туннеля? Наверное в семерке в специфика другая? :unknown:
Самое важное - уметь отличить важное от срочного.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-25 10:50:27

специфика таже.
1. без фаервола работает?
2. маршруты описаны правильно?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
Sweeper_jr
ефрейтор
Сообщения: 61
Зарегистрирован: 2006-01-19 12:48:12
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение Sweeper_jr » 2009-11-25 11:25:51

schizoid писал(а):специфика таже.
1. без фаервола работает?
2. маршруты описаны правильно?
1. сделал firewall_type="OPEN" - все равно, картина таже.
2. netstat -rn хост A (192.168.2.100):

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

#netstat -rn | grep gif
Destination        Gateway            Flags    Refs      Use  Netif Expire
192.168.1          gif1               USc         0        0   gif1
192.168.1.100      192.168.2.100      UH          0       49   gif1
192.168.3          gif0               USc         0    83431   gif0
192.168.3.100      192.168.2.100      UH          0     7092   gif0
netstat -rn хост C (192.168.1.100):

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

# netstat -rn | grep gif
Destination        Gateway            Flags    Refs      Use  Netif Expire
192.168.2.0/24     gif0               US          0        0   gif0
192.168.2.100      192.168.1.100      UH          0      208   gif0
Самое важное - уметь отличить важное от срочного.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-25 12:36:34

а не можешь на время положить второй туннель и проверить? что б тока один одновременно работал...
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
Sweeper_jr
ефрейтор
Сообщения: 61
Зарегистрирован: 2006-01-19 12:48:12
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение Sweeper_jr » 2009-11-25 13:40:57

Положил один туннель, один из двух тот который рабочий. Ситуация ни как не изменилась.
Но по ходу заметил в netstat -rn в колонке Use для маршрута который определяет шлюз - значения по нулям:

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

Destination        Gateway            Flags    Refs      Use  Netif Expire
192.168.1          gif1               USc         0        0   gif1
192.168.1.100      192.168.2.100      UH          0       49   gif1

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

Destination        Gateway            Flags    Refs      Use  Netif Expire
192.168.2.0/24     gif0               US          0        0   gif0
192.168.2.100      192.168.1.100      UH          0      208   gif0
А так не должно быть как я понимаю. У другого туннеля показывает количество пакетов отличное от нуля, и оно увеличивается по мере передачи.

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

Destination        Gateway            Flags    Refs      Use  Netif Expire
192.168.3          gif0               USc         0     6851   gif0
192.168.3.100      192.168.2.100      UH          0      108   gif0
Все равно не пойму куда копать... :unknown:
Самое важное - уметь отличить важное от срочного.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-25 13:51:38

arp -a -d
трассу пусти, в шлюз идет?
где-то наверна мелкий косяк какой-то...
может когда копировал настройки с рабочего туннеля -не все поправил...
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-25 13:59:19

ну и по внешним Ипам жеж они нормально видят друг друга?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
Sweeper_jr
ефрейтор
Сообщения: 61
Зарегистрирован: 2006-01-19 12:48:12
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение Sweeper_jr » 2009-11-25 17:02:14

schizoid писал(а):arp -a -d
трассу пусти, в шлюз идет?
где-то наверна мелкий косяк какой-то...
может когда копировал настройки с рабочего туннеля -не все поправил...
arp -a -d сделал...
traceroute в сети нашего провайдера вообще не пашет (все три хоста находятся у одного провайдера), за пределами, например, traceroute yandex.com - все ок. Но если трейсить из локалки (A), то трейс пытается пройти через нужный gif1 по заданному маршруту.
Все настройки перепроверил еще раз, все вроде пучком.
По внешним айпишниках все гуд - ssh, ftp, ping..
Вот правила IPFW того хоста который не хочет принимать пакеты, посмотрите все ли нормально?

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

00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
# Тунель
01021 allow ip from any to any via gif0
01022 allow udp from C.C.C.C to A.A.A.A dst-port 500
01023 allow udp from A.A.A.A to C.C.C.C dst-port 500
01024 allow esp from C.C.C.C to A.A.A.A
01025 allow esp from A.A.A.A to C.C.C.C
#
01040 allow ip from any to any via sis0
01050 deny ip from any to 192.168.0.0/16 in recv sis0
01060 deny ip from 192.168.0.0/16 to any in recv sis0
01070 deny ip from any to 172.16.0.0/12 in recv sis0
01080 deny ip from 172.16.0.0/12 to any in recv sis0
01090 deny ip from any to 10.0.0.0/8 in recv sis0
10100 deny ip from 10.0.0.0/8 to any in recv sis0
10110 deny ip from any to 169.254.0.0/16 in recv sis0
10120 deny ip from 169.254.0.0/16 to any in recv sis0
10126 allow icmp from me to any
10127 allow icmp from any to me
ipfw nat 1 config if xl0 log same_ports reset redirect_port tcp C.C.C.C:21 21 redirect_port tcp C.C.C.C:22 22
10130 nat 1 tcp from any to any out xmit xl0 limit src-addr 100
10140 nat 1 ip from any to any out xmit xl0
10150 nat 1 ip from any to any in recv xl0
10153 allow icmp from any to any via sis0
65534 deny ip from any to any
net.inet.ip.fw.enable: 0 -> 1
Самое важное - уметь отличить важное от срочного.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-26 10:36:45

вообще на все deny поставьте логирование.
и еще, я вот не помню, gif туннель gre не использует часом? а то тоже нуно б ipfw add allow gre from any to any поставить...
ну и давайте в догонку тогда уже ifconfig с обоих серваков. rc.conf.
и еще. без ipsec через туннель пакетики ходють?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение schizoid » 2009-11-26 10:46:59

ну и коменты к статье почитай
ядерный взрыв...смертельно красиво...жаль, что не вечно...

sch
сержант
Сообщения: 282
Зарегистрирован: 2009-05-28 14:36:50
Откуда: Кишинев

Re: Второй туннель через IPSec и правила для IPFW FreeBSD 7.1

Непрочитанное сообщение sch » 2009-11-27 18:15:39

Через IPSEC пакеты типа ICMP проходят с ограничениями - например пинги на маршрутизатор, терминирующий туннель, тупо где-то теряются в сетевой подсистеме. Также из-за этого очень плохо работает технология PMTUD.
В общем для диагностики советую пинговать не маршрутизатор, а хост за ним.

В 7.2-R исправили несколько проблем в работе IPSEC через gif, по моему эту фигню с ICMP тоже поправили.