Ключевые слова:slaris, openbsd, tunnel, vpn, ipsec, (найти похожие документы)
From: BB
Newsgroups: email
Date: Mon, 1 Dec 2008 17:02:14 +0000 (UTC)
Subject: VPN между Solaris 10 (sparc64) и OpenBSD 4.3 (i386)
Попался мне тут на тестирование Sun Sparc Enterprise T2000, захотелось мне на него OpenBSD
взгромоздить, но не судьба, не работает пока что OpenBSD с его контролером SAS.
И решил я подружить его родную ОС (SunOS t2000 5.10 Generic_127127-11 sun4v sparc SUNW,
Sun-Fire-T200) с OpenBSD 4.3 GENERIC i386 на предмет VPN-IPSec
VPN строится в режиме туннеля между локальными сетями.
И вот что из этого получилось, по мотивам документации с doscs.sun.com:
VPN between Solaris 10 (sparc64) and OpenBSD 4.3 (i386) with IPSec by Using Tunnels in Tunnel
Mode with manually IPsec Security Associations
Схема стенда.
Курсивом будут выделены значимые места в конфигурационных файлах.
Ключи шифрования, аутентификации и SPI намерено сделаны такими что-бы было более наглядно что
куда и на какой стороне прописывается
На стороне Solaris
Редактируем /etc/inet/secret/ipseckeys
flush all
add esp spi 0x10000001 src 10.200.253.7 isrc 10.254.254.0/24 dst 10.200.130.26 idst 10.253.253.0/24 \
encr_alg AES auth_alg SHA encrkey \
00000000000000000000000000000000 authkey 0000000000000000000000000000000000000000
add esp spi 0x10000002 src 10.200.130.26 isrc 10.253.253.0/24 dst 10.200.253.7 idst 10.254.254.0/24 \
encr_alg AES auth_alg SHA encrkey \
11111111111111111111111111111111 authkey 1111111111111111111111111111111111111111
Файл /etc/inet/ipsec.conf
{tunnel ip.tun0 negotiate tunnel laddr 10.200.253.7 raddr 10.200.130.26} ipsec {encr_algs any \
encr_auth_algs any sa shared}
{tunnel ip.tun0 negotiate tunnel laddr 10.254.254.0/24 raddr 10.253.253.0/24} ipsec {encr_algs any \
encr_auth_algs any sa shared}
Выполняем следующие команды:
ifconfig ip.tun0 plumb
ifconfig ip.tun0 10.254.254.1 10.253.253.1 tsrc 10.200.253.7 tdst 10.200.130.26 encr_algs aes \
encr_auth_algs sha router up
ndd -set /dev/ip ip_strict_dst_multihoming 1
ipseckey -f /etc/inet/secret/ipseckeys
ipsecconf -f
ipsecconf -a /etc/inet/ipsec.conf
На стороне OpenBSD
Редактируем файл /etc/ipsec.conf
flow esp from 10.253.253.0/24 to 10.254.254.0/24 peer 10.200.253.7
flow esp from 10.200.130.26 to 10.200.253.7
esp from 10.200.130.26 to 10.200.253.7 spi 0x10000002:0x10000001 auth hmac-sha1 enc aes \
authkey 0x1111111111111111111111111111111111111111:0x0000000000000000000000000000000000000000 \
enckey 0x11111111111111111111111111111111:0x00000000000000000000000000000000
esp from 10.253.253.0/24 to 10.254.254.0/24 spi 0x10000002:0x10000001 auth hmac-sha1 enc aes \
authkey 0x1111111111111111111111111111111111111111:0x0000000000000000000000000000000000000000 \
enckey 0x11111111111111111111111111111111:0x00000000000000000000000000000000
Выполняем следующие команды:
ipsecctl -F -f /etc/ipsec.conf
На этом все, все что нужно работает, туннель установлен, на всякий случай для проверки:
На стороне соляриса:
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 2
inet 10.200.253.7 netmask ffffff00 broadcast 10.200.253.255
ether 0:14:4f:a8:a8:ea
e1000g1: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 3
inet 10.254.254.1 netmask ffffff00 broadcast 10.254.254.255
ether 0:14:4f:a8:a8:eb
ip.tun0:
flags=11028d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,UNNUMBERED,ROUTER,IPv4>
mtu 1419 index 9
inet tunnel src 10.200.253.7 tunnel dst 10.200.130.26
tunnel security settings --> use 'ipsecconf -ln -i ip.tun0'
tunnel hop limit 60
inet 10.254.254.1 --> 10.253.253.1 netmask ff000000
# netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default 10.200.253.254 UG 1 351
10.200.253.0 10.200.253.7 U 1 295 e1000g0
10.253.253.0 10.254.254.1 UG 1 0
10.253.253.1 10.254.254.1 UGH 1 0
10.253.253.1 10.254.254.1 UH 1 0 ip.tun0
10.254.254.0 10.254.254.1 U 1 6 e1000g1
224.0.0.0 10.200.253.7 U 1 0 e1000g0
127.0.0.1 127.0.0.1 UH 1 40 lo0
На стороне OpenBSD:
# ifconfig -A
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33208
groups: lo
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:0e:7f:6a:75:69
groups: egress
media: Ethernet autoselect (1000baseT full-duplex)
status: active
inet6 fe80::20e:7fff:fe6a:7569%bge0 prefixlen 64 scopeid 0x1
inet 10.200.130.26 netmask 0xffffff00 broadcast 10.200.130.255
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:04:23:ba:dc:5a
media: Ethernet autoselect (none)
status: no carrier
inet6 fe80::204:23ff:feba:dc5a%em0 prefixlen 64 scopeid 0x2
inet 10.253.253.1 netmask 0xffffff00 broadcast 10.253.253.255
enc0: flags=0<> mtu 1536
pflog0: flags=41<UP,RUNNING> mtu 33208
groups: pflog
# netstat -rn -f encap
Routing tables
Encap:
Source Port Destination Port Proto SA(Address/Proto/Type/Direction)
10.200.253.7/32 0 10.200.130.26/32 0 0 10.200.253.7/esp/require/in
10.200.130.26/32 0 10.200.253.7/32 0 0 10.200.253.7/esp/require/out
10.254.254/24 0 10.253.253/24 0 0 10.200.253.7/esp/require/in
10.253.253/24 0 10.254.254/24 0 0 10.200.253.7/esp/require/out
# ipsecctl -s a
FLOWS:
flow esp in from 10.200.253.7 to 10.200.130.26 peer 10.200.253.7 type require
flow esp out from 10.200.130.26 to 10.200.253.7 peer 10.200.253.7 type require
flow esp in from 10.254.254.0/24 to 10.253.253.0/24 peer 10.200.253.7 type require
flow esp out from 10.253.253.0/24 to 10.254.254.0/24 peer 10.200.253.7 type require
SAD:
esp tunnel from 10.254.254.0 to 10.253.253.0 spi 0x10000001 auth hmac-sha1 enc aes
esp tunnel from 10.200.253.7 to 10.200.130.26 spi 0x10000001 auth hmac-sha1 enc aes
esp tunnel from 10.200.130.26 to 10.200.253.7 spi 0x10000002 auth hmac-sha1 enc aes
esp tunnel from 10.253.253.0 to 10.254.254.0 spi 0x10000002 auth hmac-sha1 enc aes