CentOS 6.3搭建IPSec VPN
时间:2015-08-17 12:59 来源:linux.it.net.cn 作者:IT
1,安装必须的库
CentOS:
1
yum update
2
yum install pam-devel openssl-devel make gcc
2,下载strongswan并解压(*代表当前Strongswan版本号)
1
wget http://download.strongswan.org/strongswan.tar.gz
2
tar xzf strongswan.tar.gz
3
cd strongswan-*
3,编译Strongswan:
Xen、KVM使用以下参数:
1
./configure --enable-eap-identity --enable-eap-md5 \
2
--enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \
3
--enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \
4
--enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity \
5
--enable-certexpire --enable-radattr --enable-tools --enable-openssl --disable-gmp
OpenVZ需额外增加一个 enable-kernel-libipsec:
1
./configure --enable-eap-identity --enable-eap-md5 \
2
--enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \
3
--enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \
4
--enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity \
5
--enable-certexpire --enable-radattr --enable-tools --enable-openssl --disable-gmp --enable-kernel-libipsec
4,编译并安装:
1
make; make install
编译完成后如果没有报错,且使用ipsec version指令能出现版本信息,则表示安装成功.
配置证书
1,生成CA证书的私钥
1
ipsec pki --gen --outform pem > ca.pem
2,使用私钥,签名CA证书
1
ipsec pki --self --in ca.pem --dn "C=com, O=myvpn, CN=VPN CA" --ca --outform pem >ca.cert.pem
提示:多个vps使用同个CA根证书:
如果需要多个vps使用同一个CA根证书,则以上两步只执行一次,之后所有vps都使用上面生成的这两个ca.pem和ca.cert.pem文件进行后续的操作.
然后把多台vps解析到同一个域名的不同二级域名下.
这样客户端连接各个服务器时,只需要客户端安装一次根证书ca.cert.pem即可.
3,生成服务器证书所需的私钥:
1
ipsec pki --gen --outform pem > server.pem
4,用CA证书签发服务器证书
请先确认你的服务器的IP地址或域名,以后客户端连接时只能使用证书中的地址连接(多服务器使用相同根证书CA的,请先做好服务器的域名解析),
然后将下面命令中的123.123.123.123替换为自己服务器的IP地址或域名,一共需要替换两处:
1
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem \
2
--cakey ca.pem --dn "C=com, O=myvpn, CN=123.123.123.123" \
3
--san="123.123.123.123" --flag serverAuth --flag ikeIntermediate \
4
--outform pem > server.cert.pem
注意以上命令中的”C=”和”O=”的值要与第2步CA中的C,O的值保持一致.
5,生成客户端证书所需的私钥:
1
ipsec pki --gen --outform pem > client.pem
6,用CA签名客户端证书(C,O的值要与上面第2步CA的值一致,CN的值随意):
1
ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=myvpn, CN=VPN Client" --outform pem > client.cert.pem
7,生成pkcs12证书:
1
openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "VPN CA" -out client.cert.p12
注意以上命令中的”-caname”后面的引号里的值必须要与第2步CA中的”CN=”的值保持一致.
8,安装证书:
1
cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/
2
cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/
3
cp -r server.pem /usr/local/etc/ipsec.d/private/
4
cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/
5
cp -r client.pem /usr/local/etc/ipsec.d/private/
配置Strongswan
1,编辑/usr/local/etc/ipsec.conf文件:
1
vim /usr/local/etc/ipsec.conf
修改为以下内容(点击展开):
另附ipsec.conf文件下载,可通过sftp等上传到vps使用:
ipsec.conf:百度盘
2,使用vim编辑/usr/local/etc/strongswan.conf文件:
1
charon {
2
load_modular = yes
3
duplicheck.enable = no
4
compress = yes
5
plugins {
6
include strongswan.d/charon/*.conf
7
}
8
dns1 = 8.8.8.8
9
dns2 = 8.8.4.4
10
nbns1 = 8.8.8.8
11
nbns2 = 8.8.4.4
12
}
13
include strongswan.d/*.conf
3,使用vim编辑/usr/local/etc/ipsec.secrets文件:
1
: RSA server.pem
2
: PSK "myPSKkey"
3
: XAUTH "myXAUTHPass"
4
[用户名] %any : EAP "[密码]"
将上面的myPSKkey单词更改为你需要的PSK认证方式的密钥;
将上面的myXAUTHPass单词更改为你需要的XAUTH认证方式的密码,该认证方式的用户名是随意的;
将上面的[用户名]改为自己想要的登录名,[密码]改为自己想要的密码([]符号去掉),可以添加多行,得到多个用户,这即是使用IKEv2的用户名+密码认证方式的登录凭据.
提示:wp8.1客户端连接的用户名问题
由于wp8.1连接IKEv2的vpn时,默认会加上与手机名称相同的域,于是连接时会显示用户名或密码错误.这里有两种解决方法:
方法1:将上面/usr/local/etc/ipsec.secrets文件的最后一行改为%any %any : EAP “[密码]” ,这样就可以使用任意用户名登录,带上域也不会出错.
方法2:用FreeRADIUS过滤掉登录名的域,参考连接:让FreeRADIUS去掉登陆用户名中的Windows登录域
配置防火墙
1,编辑/etc/sysctl.conf,将net.ipv4.ip_forward=1一行前面的#号去掉(否则Ikev2 vpn连接上后将无法访问外网),保存后执行sysctl -p(如果执行后有报错的,重新打开sysctl.conf将报错的部分#注释掉保存,直到执行sysctl -p不再报错为止)。
此外,如果需要对TCP连接及速度进行进一步优化,可以参见本人的另一篇文章《各平台vps快速搭建shadowsocks及优化总结》中的TCP部分(注意不要把现有vpn配置的ip_forward给覆盖了).
2,配置iptables:
OpenVZ执行:
1
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
2
iptables -A FORWARD -s 10.31.0.0/24 -j ACCEPT
3
iptables -A FORWARD -s 10.31.1.0/24 -j ACCEPT
4
iptables -A FORWARD -s 10.31.2.0/24 -j ACCEPT
5
iptables -A INPUT -i venet0 -p esp -j ACCEPT
6
iptables -A INPUT -i venet0 -p udp --dport 500 -j ACCEPT
7
iptables -A INPUT -i venet0 -p tcp --dport 500 -j ACCEPT
8
iptables -A INPUT -i venet0 -p udp --dport 4500 -j ACCEPT
9
iptables -A INPUT -i venet0 -p udp --dport 1701 -j ACCEPT
10
iptables -A INPUT -i venet0 -p tcp --dport 1723 -j ACCEPT
11
iptables -A FORWARD -j REJECT
12
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o venet0 -j MASQUERADE
13
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o venet0 -j MASQUERADE
14
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o venet0 -j MASQUERADE
Xen、KVM则执行:
1
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
2
iptables -A FORWARD -s 10.31.0.0/24 -j ACCEPT
3
iptables -A FORWARD -s 10.31.1.0/24 -j ACCEPT
4
iptables -A FORWARD -s 10.31.2.0/24 -j ACCEPT
5
iptables -A INPUT -i eth0 -p esp -j ACCEPT
6
iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
7
iptables -A INPUT -i eth0 -p tcp --dport 500 -j ACCEPT
8
iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT
9
iptables -A INPUT -i eth0 -p udp --dport 1701 -j ACCEPT
10
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
11
iptables -A FORWARD -j REJECT
12
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE
13
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE
14
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE
3,开机自动载入iptables:
Ubuntu:
1
iptables-save > /etc/iptables.rules
2
cat > /etc/network/if-up.d/iptables<<EOF
3
#!/bin/sh
4
iptables-restore < /etc/iptables.rules
5
EOF
6
chmod +x /etc/network/if-up.d/iptables
CentOS:
1
service iptables save
至此,IPSec/IKEv2 VPN便搭建好了!现在启用服务就可以使用了:
1
ipsec start
参考链接:
使用Strongswan搭建IPSec/IKEv2 VPN
利用Strongswan搭建支持IKEv1/IKEv2的IPSec VPN服务器
(责任编辑:IT)
| 1,安装必须的库 CentOS:
2,下载strongswan并解压(*代表当前Strongswan版本号)
3,编译Strongswan:
OpenVZ需额外增加一个 enable-kernel-libipsec:
4,编译并安装:
编译完成后如果没有报错,且使用ipsec version指令能出现版本信息,则表示安装成功. 配置证书1,生成CA证书的私钥
2,使用私钥,签名CA证书
提示:多个vps使用同个CA根证书:
如果需要多个vps使用同一个CA根证书,则以上两步只执行一次,之后所有vps都使用上面生成的这两个ca.pem和ca.cert.pem文件进行后续的操作. 然后把多台vps解析到同一个域名的不同二级域名下. 这样客户端连接各个服务器时,只需要客户端安装一次根证书ca.cert.pem即可. 3,生成服务器证书所需的私钥:
4,用CA证书签发服务器证书
请先确认你的服务器的IP地址或域名,以后客户端连接时只能使用证书中的地址连接(多服务器使用相同根证书CA的,请先做好服务器的域名解析),
注意以上命令中的”C=”和”O=”的值要与第2步CA中的C,O的值保持一致. 5,生成客户端证书所需的私钥:
6,用CA签名客户端证书(C,O的值要与上面第2步CA的值一致,CN的值随意):
7,生成pkcs12证书:
注意以上命令中的”-caname”后面的引号里的值必须要与第2步CA中的”CN=”的值保持一致. 8,安装证书:
配置Strongswan1,编辑/usr/local/etc/ipsec.conf文件:
修改为以下内容(点击展开): 另附ipsec.conf文件下载,可通过sftp等上传到vps使用:
ipsec.conf:百度盘
2,使用vim编辑/usr/local/etc/strongswan.conf文件:
3,使用vim编辑/usr/local/etc/ipsec.secrets文件:
将上面的myPSKkey单词更改为你需要的PSK认证方式的密钥;
提示:wp8.1客户端连接的用户名问题
由于wp8.1连接IKEv2的vpn时,默认会加上与手机名称相同的域,于是连接时会显示用户名或密码错误.这里有两种解决方法: 方法1:将上面/usr/local/etc/ipsec.secrets文件的最后一行改为%any %any : EAP “[密码]” ,这样就可以使用任意用户名登录,带上域也不会出错. 方法2:用FreeRADIUS过滤掉登录名的域,参考连接:让FreeRADIUS去掉登陆用户名中的Windows登录域 配置防火墙
1,编辑/etc/sysctl.conf,将net.ipv4.ip_forward=1一行前面的#号去掉(否则Ikev2 vpn连接上后将无法访问外网),保存后执行sysctl -p(如果执行后有报错的,重新打开sysctl.conf将报错的部分#注释掉保存,直到执行sysctl -p不再报错为止)。
2,配置iptables:
Xen、KVM则执行:
3,开机自动载入iptables:
CentOS:
至此,IPSec/IKEv2 VPN便搭建好了!现在启用服务就可以使用了:
参考链接: 利用Strongswan搭建支持IKEv1/IKEv2的IPSec VPN服务器 (责任编辑:IT) |