介绍使用strongswan配置IPsec VPN(网关到网关)
强大的警告支持网关到网关(到)和公路战士类型的VPN。
在第一类中,网络流量在组织的网关(入口/退出)上加密/解密。
但是在公路战士案中,从最终客户端(机器)加密到远程端网关的流量。
在本文中,我们将解释组织的两个站点之间的隧道创建,以确保沟通。
基于强大的VPN服务器/网关展示位置如下图所示。
我们希望在10.1.0.0/16和11.1.0.0/16组织网络之间进行沟通。
如上图所示,我们有兴趣保护从A到B的通信,反之亦然。
重要的是要确保在组织网络中的基于强大的VPN网关的路由。
我们假设从Office A的机器可以在B办公室网络中ping机器。
这将确保网络中设备的连接。
在我们以前,我们已经在VM上安装了Strongswan。
但是,在生产环境中,StroneWan安装在硬件上以获得更好的性能。
在本文中,我们正在使用VM来显示两个站点之间的隧道创建。
缺省情况下,stronfswan的配置位于/usr/local/etc /目录下,如下图所示。
网关到网关隧道(预共享密钥)
在此隧道中,我们在两台机器之间使用共享秘密。
这种共享秘密由Diffie-Hellman算法用于相互认证之前共享对称加密算法。
本地(左)机器(一侧)上斯特朗湾的配置
IPSec.conf是strongswan的主要配置文件。
在此文件中,我们定义隧道策略参数,例如加密算法,散列算法等。
config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn %default conn tunnel # left=192.168.1.10 leftsubnet=10.1.0.0/16 right=192.168.1.11 rightsubnet=11.1.0.0/16 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=clear authby=secret auto=start keyexchange=ikev2 type=tunnel
IPSec.secrets文件包含秘密信息,如共享密钥,智能卡密码和密码的私钥等。
在我们的情况下,A和B之间的预共享密钥是SharedSecret
192.168.1.10 192.168.1.11 : PSK 'sharedsecret'
遥控器(右)机器(B侧)上的Stronfswan配置
config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn %default conn tunnel # left=192.168.1.11 leftsubnet=11.1.0.0/16 right=192.168.1.10 rightsubnet=10.1.0.0/16 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=clear authby=secret auto=start keyexchange=ikev2 type=tunnel
和IPsec.secrets的远程的内容是
192.168.1.11 192.168.1.10 : PSK 'sharedsecret'
在两侧更改后,运行以下命令隧道创建。
# ipsec restart
要检查两台机器上隧道状态,请在终端中运行以下命令。
本地和远程机器命令的输出如下所示。
#ipsec statusall
VM A上的IPSec StateAll输出
Status of IKE charon daemon (strongSwan 5.2.1, Linux 3.13.0-24-generic, x86_64): uptime: 8 minutes, since Jan 03 13:44:32 2014 malloc: sbrk 1351680, mmap 0, used 250048, free 1101632 worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 5 loaded plugins: charon pkcs11 aes des rc2 sha1 sha2 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem fips-prf gmp xcbc cmac hmac attr kernel-netlink resolve socket-default stroke updown xauth-generic Listening IP addresses: 192.168.1.10 Connections: tunnel: 192.168.1.10...192.168.1.11 IKEv2, dpddelay=30s tunnel: local: [192.168.1.10] uses pre-shared key authentication tunnel: remote: [192.168.1.11] uses pre-shared key authentication tunnel: child: 10.1.0.0/16 === 11.1.0.0/16 TUNNEL, dpdaction=clear Security Associations (1 up, 0 connecting): tunnel[1]: ESTABLISHED 8 minutes ago, 192.168.1.10[192.168.1.10]...192.168.1.11[192.168.1.11] tunnel[1]: IKEv2 SPIs: cafdf24210e8e503_i* 7ee6557a1d297e35_r, pre-shared key reauthentication in 25 minutes tunnel[1]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024 tunnel{1}: INSTALLED, TUNNEL, ESP SPIs: cbd51ed8_i c7243b49_o tunnel{1}: AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying in 7 hours tunnel{1}: 10.1.0.0/16 === 11.1.0.0/16
VM B上的IPSec StateAll输出
Status of IKE charon daemon (strongSwan 5.2.1, Linux 3.13.0-24-generic, x86_64): uptime: 6 minutes, since Jan 03 13:44:21 2014 malloc: sbrk 1351680, mmap 0, used 250944, free 1100736 worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 8 loaded plugins: charon pkcs11 aes des rc2 sha1 sha2 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem fips-prf gmp xcbc cmac hmac attr kernel-netlink resolve socket-default stroke updown xauth-generic Listening IP addresses: 192.168.1.11 Connections: tunnel: 192.168.1.11...192.168.1.10 IKEv2, dpddelay=30s tunnel: local: [192.168.1.11] uses pre-shared key authentication tunnel: remote: [192.168.1.10] uses pre-shared key authentication tunnel: child: 11.1.0.0/16 === 10.1.0.0/16 TUNNEL, dpdaction=clear Security Associations (1 up, 0 connecting): tunnel[3]: ESTABLISHED 6 minutes ago, 192.168.1.11[192.168.1.11]...192.168.1.10[192.168.1.10] tunnel[3]: IKEv2 SPIs: cafdf24210e8e503_i 7ee6557a1d297e35_r*, pre-shared key reauthentication in 36 minutes tunnel[3]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024 tunnel{3}: INSTALLED, TUNNEL, ESP SPIs: c7243b49_i cbd51ed8_o tunnel{3}: AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying in 7 hours tunnel{3}: 11.1.0.0/16 === 10.1.0.0/16
具有XFRM参数的IP命令可用于查看Linux框中的IPSec隧道策略和状态。
两个设备上的命令IP XFRM状态的输出如下所示。
VM A上的IP XFRM状态命令的输出
src 192.168.1.10 dst 192.168.1.11 proto esp spi 0xc7243b49 reqid 1 mode tunnel replay-window 32 flag af-unspec auth-trunc hmac(sha256) 0x3077c888d622b899532a5f1b8e9399efe65684ffa694bf072ea4de8a44898b2f 128 enc cbc(aes) 0x8fafb23d824c1e898dc42f6d59b14c52e6a33b2183c0c9c762de8cacfd355a6f src 192.168.1.11 dst 192.168.1.10 proto esp spi 0xcbd51ed8 reqid 1 mode tunnel replay-window 32 flag af-unspec auth-trunc hmac(sha256) 0x50b63121299e97339cf2a78bb86b958ae0c3e594b1c535a0a12ce0a165d4e0ef 128 enc cbc(aes) 0x41447fea3021a3b13838f076dbe72139389be93960a641664bb7e1e6fc34b01a
VM B上IP XFRM状态命令的输出
src 192.168.1.11 dst 192.168.1.10 proto esp spi 0xcbd51ed8 reqid 3 mode tunnel replay-window 32 flag af-unspec auth-trunc hmac(sha256) 0x50b63121299e97339cf2a78bb86b958ae0c3e594b1c535a0a12ce0a165d4e0ef 128 enc cbc(aes) 0x41447fea3021a3b13838f076dbe72139389be93960a641664bb7e1e6fc34b01a src 192.168.1.10 dst 192.168.1.11 proto esp spi 0xc7243b49 reqid 3 mode tunnel replay-window 32 flag af-unspec auth-trunc hmac(sha256) 0x3077c888d622b899532a5f1b8e9399efe65684ffa694bf072ea4de8a44898b2f 128 enc cbc(aes) 0x8fafb23d824c1e898dc42f6d59b14c52e6a33b2183c0c9c762de8cacfd355a6f
如图所示,XFRM命令显示敏感信息(键)。
所以请避免在生产强大服务器上的此类命令。