LINUX.ORG.RU
ФорумAdmin

Проблема с каналом IPSEC между FreeBsd 8.2+racoon и Dlink 804-HV.


0

2

Всем доброго времени суток!

Задача: Необходимо поднять 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 	



Последнее исправление: GordonFree (всего исправлений: 7)

теги LORCODE [code][/code] или [pre][/pre]

adriano32 ★★★
()
Ответ на: есть - его роль выполняет ipsec.conf от GordonFree
Проблема решилась подкруткой 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»
GordonFree
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.