赞
踩
原文链接:https://blog.csdn.net/wwwangdeqqq/article/details/52388625
因为需要在strongswan基础上做些二次开发的东西,需要将自己修改后的代码添加进strongswan后再编译运行。而ubuntu中 apt-get install 命令来安装的strongswan是已经用编译好的包来安装的,无法达到修改代码的目的。另外由ubuntu编译好的包版本较低,目前是5.1.x版本,而strongswan官网上5.4.0版本已经发布。那么,追求新版本或指定版本安装就可以使用下载源码编译安装的方法。
strongswan的编译安装还是很简单的,终端中几行命令就可以轻松搞定,但是其配置却是很让人头疼的一件事,就在这里慢慢收集整理吧。
参考博文:http://blog.csdn.net/butyesbutno/article/details/52033238(验证成功)
下载&编译&安装:(可参考官网)
- wget http://download.strongswan.org/strongswan-5.4.0.tar.bz2
-
- apt-get install libgmp-dev
-
- apt-get install libssl-dev
-
- tar -jxvf strongswan-5.4.0.tar.bz2
然后进入解压后的strongswan目录,设置基本配置与安装命令:
- ./configure --sysconfdir=/etc --enable-openssl
- make && make install
–sysconfdir //设置配置文件目录
–prefix //设置安装文件目录
–enable或–disable //按需设置各种启用与禁用
安装完成,超级用户下可验证是否可启用:
- ipsec start //启动ipsec
- ipsec restart //重启ipsec
这样,编译安装就算完成了,接下来是证书的生成,与三个配置文件的配置。
首先需要生成一份CA证书,这个证书作为公用的证书,放到该系统中每一个安装strongswan的机器中。
ipsec pki --gen --outform pem > gscakey.pem
然后使用这个证书生成一系列的证书。
ipsec pki --self --in gscakey.pem --dn "C=CH, O=gateway, CN=gs" --ca --outform pem > gscacert.pem
服务器证书:
- ipsec pki --gen --outform pem > serverkey.pem
- ipsec pki --pub --in serverkey.pem | ipsec pki --issue --cacert gscacert.pem --cakey gscakey.pem --dn "C=CH, O=gateway, CN=@gateway.server.com" --san="192.168.X.X" --flag serverAuth --outform pem > servercert.pem
客户端证书:
- ipsec pki --gen --outform pem > clientkey.pem
- ipsec pki --pub --in clientkey.pem | ipsec pki --issue --cacert gscacert.pem --cakey gscakey.pem --dn "C=CH, O=gateway, CN=@gateway.client.com" --outform pem > clientcert.pem
生成的证书,clientcert.pem、servercert.pem要放在各自机器的/etc/ipsec.d/certs目录下;
clientkey.pem、serverkey.pem放在各自机器的/etc/ipsec.d/private目录下。
接下来是三个配置文件:
- /etc/ipsec.conf
- /etc/ipsec.secrets
- /etc/strongswan.conf
这时就需要明确双方的IP了,这里双方IP示例为192.168.X.A和192.168.X.B。子网IP任意给出一个示例。
先配置ipsec.conf (/etc/ipsec.conf)
主机A:
- config setup
- uniqueids=no
-
- conn %default
- ikelifetime=60m
- keylife=20m
- rekeymargin=3m
- keyingtries=1
- keyexchange=ikev2
- mobike=no
-
- conn networkmanager-strongswan
- keyexchange=ikev2
- left=%any
- leftid=@xxx.server.com
- leftauth=pubkey
- leftfirewall=yes
- leftsubnet=0.0.0.0/0
- leftcert=servercert.pem
- right=%any
- rightauth=pubkey
- rightsourceip=10.39.165.0/24
- rightcert=clientcert.pem
- auto=add
-
- conn net-net
- keyexchange=ikev2
- left=192.168.X.A
- leftsubnet=192.85.0.0/16
- leftid=@xxx.server.com
- leftfirewall=yes
- leftsourceip=%config
- leftcert=clientcert.remoteserver.pem
- right=192.168.X.B
- rightsubnet=192.86.0.0/16
- rightid=%any
- auto=add
-
- conn net-net-psk
- keyexchange=ikev2
- authby=secret
- left=192.168.X.A
- leftsubnet=192.85.0.0/16
- leftid=@xxx.server.com
- leftfirewall=yes
- right=192.168.X.B
- rightsubnet=192.86.0.0/16
- rightid=@xxx.server.com
- auto=add
主机B将上述配置中对应IP与子网互换即可。
ipsec.secrets (/etc/ipsec.secrets)
- # /etc/ipsec.secrets - strongSwan IPsec secrets file
-
- : RSA serverkey.pem
- : RSA clientkey.remoteserver.pem
- moon : EAP "moon"
- @xxx.server.com %any : PSK "hello"
strongswan.conf (/etc/strongswan.conf)
- # strongswan.conf - strongSwan configuration file
- #
- # Refer to the strongswan.conf(5) manpage for details
- #
- # Configuration changes should be made in the included files
-
- charon {
- load_modular = yes
- duplicheck.enable = no
- dns1=192.168.X.1
- nbns1 = 192.168.X.1
- plugins {
- include strongswan.d/charon/*.conf
- }
- filelog {
- /var/log/strongswan.charon.log {
- time_format = %b %e %T
- default = 2
- append = no
- flush_line = yes
- }
- }
- }
-
- include strongswan.d/*.conf
主机A、B的网络配置
- sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
- sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
- sudo iptables -t nat -A POSTROUTING -s 192.86.0.0/16 -o eth0 -j MASQUERADE
- sudo iptables -A FORWARD -s 192.86.0.0/16 -j ACCEPT
- sudo iptables -t nat -A POSTROUTING -s 192.85.0.0/16 -o eth0 -j MASQUERADE
- sudo iptables -A FORWARD -s 192.85.0.0/16 -j ACCEPT
- sudo echo 1 > /proc/sys/net/ipv4/ip_forward
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
由于在ipsec.conf中conn字段使用的是auto=add设置,连接不会随ipsec守护进程启动而启动,需要使用ipsec up命令。
如: ipsec up net-net-psk
将对方证书放在自己的/etc/ipsec.d/certs/clientcert.remoteserver.pem后,可以使用
ipsec up net-net命令发起连接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。