Проблема с IPSEC между FreeBsd 8.2+raccoon и Dlink

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
GordonFree
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-09-15 8:56:16

Проблема с IPSEC между FreeBsd 8.2+raccoon и Dlink

Непрочитанное сообщение GordonFree » 2011-09-20 15:45:16

Это снова я :-)

Задача: Необходимо поднять VPN канал между главным офисом и филиалом.

В главном офисе FreeBSD 8.2-RELEASE + raccon (ipsec-tools-0.8.0_2) - внешний белый IP A.A.A.A, внутренняя сеть 192.168.126.0
В филиале ADSL модем в режиме моста – за ним железка Dlink 804-HV, серый IP выдается новый при каждом переподключении – B.B.B.B, внутренняя сеть 192.168.1.0

Проблема в следующем:
- с самой FreeBsd и с машин за ней можно пинговать внутренний интерфейс Dlink 192.168.1.2.
- c Dlink и с машин за ним можно пинговать внутренний интерфейс FreeBsd

Но на этом хорошие новости заканчиваются. Не пингуется ни машины за Dlink, ни машины за FreeBsd никак – ни с самих устройств, ни с друг друга.
Всю голову уже сломал что это может быть и как с этим справиться. ?

Подскажите люди добрые где копать.
Логи при попытке пинга компьютера за Dlink
VPN# tcpdump -vv -irl0 proto ESP
16:16:44.341383 IP (tos 0x0, ttl 245, id 3585, offset 0, flags [none], proto ESP (50), length 112)
ppp91-77-116-250.pppoe.mtu-net.ru > VPN.ru: ESP(spi=0x0af26cb5,seq=0xc0f), length 92
16:16:44.341434 IP (tos 0x0, ttl 64, id 13622, offset 0, flags [none], proto ESP (50), length 112)
VPN.ru > ppp91-77-116-250.pppoe.mtu-net.ru: ESP(spi=0x0b00bf7d,seq=0xbdb), length 92
16:16:45.343339 IP (tos 0x0, ttl 245, id 3586, offset 0, flags [none], proto ESP (50), length 112)
ppp91-77-116-250.pppoe.mtu-net.ru > VPN.ru: ESP(spi=0x0af26cb5,seq=0xc10), length 92
16:16:45.343385 IP (tos 0x0, ttl 64, id 13626, offset 0, flags [none], proto ESP (50), length 112)
VPN.ru > ppp91-77-116-250.pppoe.mtu-net.ru: ESP(spi=0x0b00bf7d,seq=0xbdc), length 92

То есть как будто все хорошо – пинги в канал заворачиваются. Что интересно при успешном пинге внутреннего интерфейса Dlink логи точно такие же – один в один.

VPN# ipfw show
00001 0 0 allow ipencap from any to any
00002 7 976 allow udp from any to me dst-port 500
00100 0 0 allow ip from any to any via lo0
00110 0 0 allow ip from any to any via gif0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 0 0 deny ip from any to ::1
00500 0 0 deny ip from ::1 to any
00503 0 0 allow ip from 192.168.126.0/24 to 192.168.1.0/24
00504 0 0 allow ip from 192.168.1.0/24 to 192.168.126.0/24
00505 6334 710032 allow esp from any to any
00600 0 0 allow ipv6-icmp from :: to ff02::/16
00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 0 0 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 0 0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
50000 1181 373663 divert 8668 ip4 from any to any via rl0
65000 28237 3560124 allow ip from any to any
65535 0 0 deny ip from any to any

Настройки FreeBSD 8.2
Внутренний интерфейс: em0 192.168.126.205
Внешний интерфейс: rl0 A.A.A.A
____________________________________________________________________________________

RF.CONF

# -- sysinstall generated deltas -- # Tue Sep 6 14:36:54 2011
# Created: Tue Sep 6 14:36:54 2011
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.

hostname="VPN.PobedaVkusa.ru"

ifconfig_rl0="inet A.A.A.A netmask 255.255.255.248 description inet"
ifconfig_em0="inet 192.168.126.205 netmask 255.255.255.0 description local"
gateway_enable="YES"
defaultrouter="X.X.X.X"

natd_enable="YES"
natd_interface="rl0"
natd_flags="-u -d"

#SSH
sshd_enable="YES"
sshd_flags="-u0 -4"

###IPFW
firewall_enable="YES"
firewall_type="/etc/ipfw.conf"
firewall_logging="YES"

#RACOON.
racoon_enable="YES"
racoon_flags="-4 -l /var/log/racoon.log"

#IPSEC
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
___________________________________________________________________________
Проблему динамического IP Dlink решил через Wild Raccon – статья с сайта http://www.lissyara.su/articles/freebsd ... ty/ipsec2/ – по инструкции поправил исходники – пересобрал теперь файл с preshared key выглядит вот так
PSK.TXT
* Secret
___________________________________________________________________
RACCON.CONF

path include "/usr/local/etc/racoon";

#указываем где будет лежать файл, с фразой авторизации
path pre_shared_key "/usr/local/etc/racoon/psk.txt";

# "log" определяет уровень логгирования. Он сопровождается одним из
# "notify", "debug" или "debug2".
log debug;

padding
{
maximum_length 20; # maximum padding length.
randomize off; # enable randomize length.
strict_check off; # enable strict check.
exclusive_tail off; # extract last one octet.
}


#указываем на каком интерфейсе слушать соединения
listen
{
isakmp A.A.A.A[500];
}

timer
{
# These value can be changed per remote node.
counter 5; # maximum trying count to send.
interval 10 sec; # maximum interval to resend.
persend 1; # the number of packets per send.

# maximum time to wait for completing each phase.
phase1 90 sec;
phase2 90 sec;
}

#указываем, что любой аутентифицированный хост будет приниматься как anonymous.
remote anonymous
{
exchange_mode main, aggressive;
doi ipsec_doi;
situation identity_only;
my_identifier address;

passive on;
generate_policy on;

#This directive is for the responder. Therefore you should set
#passive to on in order that racoon(8) only becomes a responder. If
#the responder does not have any policy in SPD during phase 2 negotia-
#tion, and the directive is set to on, then racoon(8) will choose the
#first proposal in the SA payload from the initiator, and generate
#policy entries from the proposal. It is useful to negotiate with
#clients whose IP address is allocated dynamically. Note that an
#inappropriate policy might be installed into the responder's SPD by
#the initiator, so other communications might fail if such policies
#are installed due to a policy mismatch between the initiator and the
#responder. This directive is ignored in the initiator case. The
#default value is off.

nonce_size 16;
lifetime time 12 hour;
initial_contact on;
support_proxy on;
proposal_check obey;.

proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 1;
}
}
sainfo anonymous
{
pfs_group 1;
lifetime time 12 hour;
encryption_algorithm 3des;
#authentication_algorithm hmac_sha1, hmac_md5;
authentication_algorithm hmac_md5, hmac_sha1;
compression_algorithm deflate;
}

Так как в racoon.conf стоят параметры
passive on;
generate_policy on;
то ipsec.conf выглядит так:

IPSEC.CONF
flush;
spdflush;

VPN# setkey -D
A.A.A.A B.B.B.B
esp mode=tunnel spi=251667493(0x0f002425) reqid=0(0x00000000)
E: 3des-cbc ee2ec77c 7da3d904 f217c678 ea4b7c4e 58587372 339551f1
A: hmac-md5 9d531edc 59e057dc 47e665ee 8483a4d2
seq=0x00000054 replay=4 flags=0x00000000 state=mature
created: Sep 20 16:28:44 2011 current: Sep 20 16:30:31 2011
diff: 107(s) hard: 86000(s) soft: 68800(s)
last: Sep 20 16:30:31 2011 hard: 0(s) soft: 0(s)
current: 9408(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 84 hard: 0 soft: 0
sadb_seq=1 pid=1317 refcnt=2
B.B.B.B A.A.A.A
esp mode=tunnel spi=1712030(0x001a1f9e) reqid=0(0x00000000)
E: 3des-cbc 459d2631 c0ac4af9 ad46731e 92292272 276c2cc2 63daae11
A: hmac-md5 b18f7b35 9075887d 4ebcc643 f1041582
seq=0x00000054 replay=4 flags=0x00000000 state=mature
created: Sep 20 16:28:44 2011 current: Sep 20 16:30:31 2011
diff: 107(s) hard: 86000(s) soft: 68800(s)
last: Sep 20 16:30:31 2011 hard: 0(s) soft: 0(s)
current: 6720(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 84 hard: 0 soft: 0
sadb_seq=0 pid=1317 refcnt=1


VPN# setkey -DP
192.168.1.0/24[any] 192.168.126.0/24[any] any
in ipsec
esp/tunnel/B.B.B.B-A.A.A.A/require
created: Sep 20 16:28:44 2011 lastused: Sep 20 16:28:44 2011
lifetime: 86000(s) validtime: 0(s)
spid=1 seq=1 pid=1318
refcnt=1
192.168.126.0/24[any] 192.168.1.0/24[any] any
out ipsec
esp/tunnel/A.A.A.A-B.B.B.B/require
created: Sep 20 16:28:44 2011 lastused: Sep 20 16:31:40 2011
lifetime: 86000(s) validtime: 0(s)
spid=2 seq=0 pid=1318
refcnt=1


IPFW.CONF
add 1 allow ipencap from any to any
add 2 allow udp from any to me dst-port 500

add 503 allow ip from 192.168.126.0/24 to 192.168.1.0/24
add 504 allow ip from 192.168.1.0/24 to 192.168.126.0/24

add 505 allow esp from any to any
add 50000 divert 8668 ip4 from any to any via rl0
add 65000 allow ip from any to any
add 65535 deny ip from any to any

Настройки Dlink 804HV
Firmware Version: V1.51, Fri, Jun 27 2008.
Local Subnet 192.168.1.0
Local Netmask 255.255.255.0
Remote Subnet 192.168.126.0
Remote Gateway A.A.A.A
Auto-reconnect Enable
____________________________________________________________________________
Вот что выводит в VPN Status
ESP tunnel IKE established 3223

Хостинговая компания 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/

GordonFree
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-09-15 8:56:16

Re: Проблема с IPSEC между FreeBsd 8.2+raccoon и Dlink

Непрочитанное сообщение GordonFree » 2011-09-21 12:51:12

И снова я отвечаю сам себе - проблема решилась подкруткой ipfw

Теперь правила выглядят так и все работает.

add 1 allow ipencap from any to any
add 2 allow udp from any to me dst-port 500

add 503 allow ip from 192.168.126.0/24 to 192.168.1.0/24 via em0
add 504 allow ip from 192.168.1.0/24 to 192.168.126.0/24 via em0

add 505 allow esp from any to any
add 50000 divert 8668 ip4 from any to any via rl0
add 65000 allow ip from any to any

Еще добавил в rc.conf

#Routes
static_routes="vpn"
route_DKvpn="192.168.1.0/24 192.168.126.205"