您的位置:首页 > 其它

ubuntu14.04编译安装strongswan

2020-01-15 08:29 1516 查看

原文链接:https://www.geek-share.com/detail/2683647771.html

因为需要在strongswan基础上做些二次开发的东西,需要将自己修改后的代码添加进strongswan后再编译运行。而ubuntu中 apt-get install 命令来安装的strongswan是已经用编译好的包来安装的,无法达到修改代码的目的。另外由ubuntu编译好的包版本较低,目前是5.1.x版本,而strongswan官网上5.4.0版本已经发布。那么,追求新版本或指定版本安装就可以使用下载源码编译安装的方法。

strongswan的编译安装还是很简单的,终端中几行命令就可以轻松搞定,但是其配置却是很让人头疼的一件事,就在这里慢慢收集整理吧。

参考博文:http://blog.csdn.net/butyesbutno/article/details/52033238(验证成功)

下载&编译&安装:(可参考官网)

[code]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目录,设置基本配置与安装命令:

[code]./configure --sysconfdir=/etc --enable-openssl
make && make install

–sysconfdir //设置配置文件目录
–prefix //设置安装文件目录
–enable或–disable //按需设置各种启用与禁用

安装完成,超级用户下可验证是否可启用:

[code]ipsec start //启动ipsec
ipsec restart //重启ipsec

这样,编译安装就算完成了,接下来是证书的生成,与三个配置文件的配置。

首先需要生成一份CA证书,这个证书作为公用的证书,放到该系统中每一个安装strongswan的机器中。

[code]ipsec pki --gen --outform pem > gscakey.pem

然后使用这个证书生成一系列的证书。

[code]ipsec pki --self --in gscakey.pem --dn "C=CH, O=gateway, CN=gs" --ca --outform pem > gscacert.pem

服务器证书:

[code]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

客户端证书:

[code]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目录下。

接下来是三个配置文件:
 

[code]/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:

[code]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)

[code]# /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)

[code]# 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的网络配置

[code]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命令发起连接。
 

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
站内首发文章 ultra seven 发布了9 篇原创文章 · 获赞 8 · 访问量 3044 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: