Проблема с каналом IPSEC между FreeBsd 8.2+racoon и Dlink 804-HV.
Всем доброго времени суток!
Задача: Необходимо поднять VPN канал между главным офисом и филиалом.
В главном офисе FreeBSD 8.2-RELEASE + racoon (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/security/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