[文章改编自网络,并非完全原创]
本方法在Centos6、Centos7上测试通过,其他系统未作测试
一、下载编译源码
yum install pam-devel openssl-devel make gcc wget http://download.strongswan.org/strongswan.tar.gz tar xzf strongswan.tar.gz cd strongswan-*
配置编译参数:
OpenVZ:
./configure --enable-eap-identity --enable-eap-md5 \ --enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \ --enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \ --enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity \ --enable-certexpire --enable-radattr --enable-tools --disable-gmp \ --enable-kernel-libipsec
Xen、KVM:
./configure --enable-eap-identity --enable-eap-md5 \ --enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \ --enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \ --enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity \ --enable-certexpire --enable-radattr --enable-tools --disable-gmp
编译安装:
make; make install
编译完成后如果没有报错,且使用ipsec version指令能出现版本信息,则表示安装成功
二、配置证书
ipsec pki --gen --outform pem > ca.pem ipsec pki --self --in ca.pem --dn "C=CN, O=zxmvpn, CN=ZXM CA" --ca --outform pem >ca.cert.pem ipsec pki --gen --outform pem > server.pem
将下面命令中的123.123.123.123替换为自己服务器的IP地址或域名,这里一定要注意,要与VPN客户端拨号时的信息保持一致,拨号时用域名这里也用域名:
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=CN, O=zxmvpn, CN=123.123.123.123" \ --san="123.123.123.123" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem ipsec pki --gen --outform pem > client.pem ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=CN, O=zxmvpn, CN=VPN Client" --outform pem > client.cert.pem openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "ZXM CA" -out client.cert.p12
安装证书:
cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/ cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/ cp -r server.pem /usr/local/etc/ipsec.d/private/ cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/ cp -r client.pem /usr/local/etc/ipsec.d/private/
三、配置Strongswan
1 修改 /usr/local/etc/ipsec.conf:
config setup uniqueids=never conn iOS_cert keyexchange=ikev1 # strongswan version >= 5.0.2, compatible with iOS 6.0,6.0.1 fragmentation=yes left=%defaultroute leftauth=pubkey leftsubnet=0.0.0.0/0 leftcert=server.cert.pem right=%any rightauth=pubkey rightauth2=xauth rightsourceip=10.31.2.0/24 rightcert=client.cert.pem auto=add conn android_xauth_psk keyexchange=ikev1 left=%defaultroute leftauth=psk leftsubnet=0.0.0.0/0 right=%any rightauth=psk rightauth2=xauth rightsourceip=10.31.2.0/24 auto=add conn networkmanager-strongswan keyexchange=ikev2 left=%defaultroute leftauth=pubkey leftsubnet=0.0.0.0/0 leftcert=server.cert.pem right=%any rightauth=pubkey rightsourceip=10.31.2.0/24 rightcert=client.cert.pem auto=add conn windows7 keyexchange=ikev2 ike=aes256-sha1-modp1024! rekey=no left=%defaultroute leftauth=pubkey leftsubnet=0.0.0.0/0 leftcert=server.cert.pem right=%any rightauth=eap-mschapv2 rightsourceip=10.31.2.0/24 rightsendcert=never eap_identity=%any auto=add
2 修改/usr/local/etc/strongswan.conf文件:
charon { load_modular = yes duplicheck.enable = no //最新strongswan版本为5.7.1,此行必须删除,否则报错无法启动ipsec compress = yes plugins { include strongswan.d/charon/*.conf } dns1 = 8.8.8.8 dns2 = 8.8.4.4 nbns1 = 8.8.8.8 nbns2 = 8.8.4.4 } include strongswan.d/*.conf
3 新增/usr/local/etc/ipsec.secrets文件:
: RSA server.pem : PSK "[密码]" [用户名] : XAUTH "[密码]" [用户名] : EAP "[密码]"
将上面的myPSKkey单词更改为你需要的PSK认证方式的密钥;
将上面的myXAUTHPass单词更改为你需要的XAUTH认证方式的密码,该认证方式的用户名是随意的;
将上面的[用户名]改为自己想要的登录名,可以是%any ,[密码]改为自己想要的密码(记得去掉[]),可以添加多行,得到多个用户,这即是使用IKEv2的用户名+密码认证方式的登录凭据
简便起见可以将上面三个密码设置成一样,免得后面配置时搞错
四、配置防火墙
1,编辑/etc/sysctl.conf,将net.ipv4.ip_forward=1一行前面的#号去掉,保存后执行sysctl -p
2,配置iptables:
OpenVZ:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.31.0.0/24 -j ACCEPT iptables -A FORWARD -s 10.31.1.0/24 -j ACCEPT iptables -A FORWARD -s 10.31.2.0/24 -j ACCEPT iptables -A INPUT -i venet0 -p esp -j ACCEPT iptables -A INPUT -i venet0 -p udp --dport 500 -j ACCEPT iptables -A INPUT -i venet0 -p tcp --dport 500 -j ACCEPT iptables -A INPUT -i venet0 -p udp --dport 4500 -j ACCEPT iptables -A INPUT -i venet0 -p udp --dport 1701 -j ACCEPT iptables -A INPUT -i venet0 -p tcp --dport 1723 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o venet0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o venet0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o venet0 -j MASQUERADE
Xen、KVM则执行:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.31.0.0/24 -j ACCEPT iptables -A FORWARD -s 10.31.1.0/24 -j ACCEPT iptables -A FORWARD -s 10.31.2.0/24 -j ACCEPT iptables -A INPUT -i eth0 -p esp -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 500 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 1701 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE
3,保存iptables设置:
service iptables save
4.设置iptables开机自动启动
systemctl enable iptables.service
五、启动
ipsec start
开机自启动,在rc.local文件加入:
/usr/local/sbin/ipsec start
调试日志文件在/var/log/strongswan.charon.log
六、客户端配置
1.windows
win7、win8采用证书认证
导入证书:
- 开始菜单搜索“cmd”,打开后输入 mmc(Microsoft 管理控制台)。
- “文件”-“添加/删除管理单元”,添加“证书”单元
- 证书单元的弹出窗口中一定要选“计算机账户”,之后选“本地计算机”,确定。
- 在左边的“控制台根节点”下选择“证书”-“个人”,然后选右边的“更多操作”-“所有任务”-“导入”打开证书导入窗口。
- 选择刚才生成的cert.p12 文件。下一步输入私钥密码。下一步“证书存储”选“个人”。
- 导入成功后,把导入的 CA 证书剪切到“受信任的根证书颁发机构”的证书文件夹里面。
- 打开剩下的那个私人证书,看一下有没有显示“您有一个与该证书对应的私钥”,以及“证书路径”下面是不是显示“该证书没有问题”。
- 然后关闭 mmc,提示“将控制台设置存入控制台1吗”,选“否”即可。
至此,证书导入完成。
注意 千万不要双击 .p12 证书导入!因为那样会导入到当前用户而不是本机计算机中,ipsec 守护精灵是访问不了它的。
建立连接:
- “控制面板”-“网络和共享中心”-“设置新的连接或网络”-“连接到工作区”-“使用我的 Internet 连接”
- Internet 地址写服务器地址,都是 IP 或都是 URL。
- 描述随便写。
- 用户名密码写之前配置的 EAP 的那个。
- 确定
- 点击右下角网络图标,在新建的 VPN 连接上右键属性然后切换到“安全”选项卡。
- VPN 类型选 IKEv2
- 数据加密是“需要加密”
- 身份认证这里需要说一下,如果想要使用 EAP-MSCHAPV2 的话就选择“使用可扩展的身份认证协议”-“Microsoft 安全密码”,想要使用私人证书认证的话就选择“使用计算机证书”。
注意,win7、win8由于对于证书有限制,如果配置证书时输入的IP或域名(CN字段)与拨号时不一致,还需修改注册表,跳过名称检查:
打开注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
新增键值DisableIKENameEkuCheck,类型为DWORD,设置值为1
2.android
添加VPN网络,类型选“IPSec Xauth PSK”,ipsec预共享密钥填ipsec.secrets文件中PSK密钥,拨号用户名随便写,密码写ipsec.secrets文件中Xauth密码。
3、IOS苹果设备
添加VPN网络,类型选ipsec,帐号随便写,密码写ipsec.secrets文件中Xauth密码,密钥写ipsec.secrets文件中PSK密钥即可。
苹果设备如要采用证书验证,先将client.cert.p12和ca.cert.pem发到邮箱,然后在设备上安装这两个证书,在VPN连接设置中打开“使用证书”选项,选择刚才安装的证书即可。
暂无评论内容