赞
踩
这个不用我说了吧,我在阿里云购买的香港的服务器。
yum -y install gpm-devel pam-devel openssl-devel make gcc epel-release strongswan
设置别名
alias ipsec='strongswan'
进入软件目录
cd /etc/strongswan
ipsec pki --gen --outform pem > ca.pem ipsec pki --self --in ca.pem --dn "C=CN, O=VPN, CN=strongSwan CA" --ca --lifetime 3652 --outform pem > ca.cert.pem 这里C表示国家名,O表示组织名,CN为通用名。默认证书有效期为3年,这里配置3652天,即10年。 生成服务器私钥,然后从私钥中导出公钥,用CA证书签发服务器证书 ipsec pki命令可用来生成RSA密钥对,包含了私钥和公钥,公钥是在网络上传输的,而私钥是藏好用来和接收到的公钥配对的(因此私钥里也有整个公钥,用来配对)。 ipsec pki --gen --outform pem > server.pem ipsec pki --pub --in server.pem | ipsec pki --issue --lifetime 3652 --cacert ca.cert.pem --cakey ca.pem --dn "C=CN, O=VPN, CN=*.*.*.*" --san="*.*.*.*" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem 上述的“*.*.*.*”替换为你的服务器公网ip。IOS 客户端要求 CN 也就是通用名必须是你的服务器的 URL 或 IP 地址。除了上述要求,Windows 7 还要求必须显式说明这个服务器证书的用途(用于与服务器进行认证)--flag serverAuth。非 iOS 的 Mac OS X 要求了“IP 安全网络密钥互换居间(IP Security IKE Intermediate)”这种增强型密钥用法(EKU)--flag ikdeIntermediate。Android 和 iOS 都要求服务器别名(serverAltName)就是服务器的 URL 或 IP 地址,--san。所以这里C、O的值要跟第1步的一致,CN值及--san值是服务器公网地址或url,另外这里可以设置多个--san值。否则会出现错误 13801:IKE身份验证凭证不可接受。 ipsec pki --gen --outform pem > client.pem ipsec pki --pub --in client.pem | ipsec pki --issue --lifetime 3652 --cacert ca.cert.pem --cakey ca.pem --dn "C=CN, O=VPN, CN=strongSwan Client" --outform pem > client.cert.pem 这里C、O的值要跟第1步的一致。 生成 pkcs12 证书,用来导入手机或电脑(输入一下命令会让你输入密码,两次输入一直即可,请记住这个密码,在客户端导入此证书时需输入该密码。) openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "strongSwan Client" -certfile ca.cert.pem -caname "strongSwan CA" -out client.cert.p12
安装证书,把刚才生成的私钥和证书文件复制到目录/etc/strongswan/ipsec.d/下的指定目录下即可。
cp -r ca.cert.pem /etc/strongswan/ipsec.d/cacerts/ &&
cp -r server.cert.pem /etc/strongswan/ipsec.d/certs/ &&
cp -r server.pem /etc/strongswan/ipsec.d/private/ &&
cp -r client.cert.pem /etc/strongswan/ipsec.d/certs/ &&
cp -r client.pem /etc/strongswan/ipsec.d/private/
cacerts/目录下放置CA证书,certs/目录下放置服务器和客户端证书,private/目录下放置服务器和客户端私钥
strongSwan包含3个配置文件,在目录/etc/strongswan/下
strongswan.conf strongSwan各组件的通用配置
ipsec.conf IPsec相关的配置,定义IKE版本、验证方式、加密方式、连接属性等等
ipsec.secrets 定义各类密钥,例如:私钥、预共享密钥、用户账户和密码
(该配置文件可以直接覆盖原有文件)
vi /etc/strongswan/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 } compress = yes #传输启用压缩 plugins { include strongswan.d/charon/*.conf } dns1 = 8.8.8.8 #给远程端指定DNS服务器 dns2 = 8.8.4.4 nbns1 = 8.8.8.8 #指定Windows的WINS服务器 nbns2 = 8.8.4.4 filelog { #配置strongSwan日志级别和路径 /var/log/strongswanlog { #log前加.会报错 time_format = %b %e %T default = 2 append = no flush_line = yes } } } include strongswan.d/*.conf
(请注意该配置文件中包含公网ip配置请注意修改)
vi /etc/strongswan/ipsec.conf # ipsec.conf - strongSwan IPsec configuration file config setup uniqueids=never #关闭ID唯一性,即允许多个客户端使用同一个证书,多设备同时在线 conn %default #默认配置项,其他conn配置项都会调用此默认项 left=%any #left表示local,即本地端(服务器端)IP地址;%any是魔数字,表示任意地址 leftsubnet=0.0.0.0/0 #本地端网络,0.0.0.0/0为通配,表示所有IP网段 right=%any #right表示remote,即远程端(客户端)IP地址可为任意地址 rightsourceip=10.10.10.0/24 #分配给远程端的虚拟IP地址段,尽量避免使用常用私网地址段以免冲突 dpdaction=clear #dpd表示Dead Peer Detection,对端失效检测,clear表示对端失效时关闭连接 conn IKEv1-CERT-XAUTH #供老版本IOS使用。IKEv1,使用证书和XAUTH验证 keyexchange=ikev1 #密钥交换使用IKEv1 fragmentation=yes #允许分片 leftauth=pubkey #本地端使用公钥验证 leftcert=server.cert.pem #指定本地端证书 rightauth=pubkey #远程端使用公钥验证 rightauth2=xauth #远程端使用用户账号验证 rightcert=client.cert.pem #指定远程端证书 auto=add #auto定义strongSwan服务启动时该连接的行为,add是添加连接类型但不启动 conn IKEv1-PSK-XAUTH #供IOS, Android使用。IKEv1,使用预共享密钥和XAUTH验证 keyexchange=ikev1 #密钥交换使用IKEv1 leftauth=psk #本地端使用预共享密钥验证 rightauth=psk #远程端使用预共享密钥验证 rightauth2=xauth #远程端使用用户账号验证 auto=add #strongSwan启动时添加连接类型但不启动 conn IKEv2-CERT #供Windows 7+, Linux使用。IKEv2,使用证书验证 keyexchange=ikev2 #密钥交换使用IKEv2 leftauth=pubkey #本地端使用公钥验证 leftcert=server.cert.pem #指定本地端证书 rightauth=pubkey #远程端使用公钥验证 rightcert=client.cert.pem #指定远程端证书 auto=add #strongSwan启动时添加连接类型但不启动 conn IKEv2-EAP #供Windows 7+, IOS9+使用。IKEv2,EAP验证 keyexchange=ikev2 #密钥交换使用IKEv2 ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024! #第一阶段加密方式 esp=aes256-sha256,3des-sha1,aes256-sha1! #ESP的顺序与IKE一致 rekey=no #本地端对Windows远程端发出rekey请求会断开连接,所以需配置为no leftauth=pubkey #本地端使用公钥验证 leftcert=server.cert.pem #指定本地端证书 leftsendcert=always #本地端总是发送证书 leftid=*.*.*.* #本地端标识,使用本地端公网IP地址作为标识,和生成服务器证书时的--san参数对应 rightauth=eap-mschapv2 #远程端使用eap-mschapv2验证 rightsendcert=never #不要求远程端发送证书 eap_identity=%any #指定EAP验证身份,任意账户 fragmentation=yes #允许分片 auto=add #strongSwan启动时添加连接类型但不启动
3、配置ipsec.secrets
(如果文件不存在就自己生成该文件)
vi /etc/strongswan/ipsec.secrets
: RSA server.pem #指定服务器的RSA私钥文件
: PSK "psktest" #配置预共享密钥为:psktest
test1 : XAUTH "123456" #配置XAUTH验证的用户名test1和密码123456,可配置多个用户账户
test2 : EAP "123456" #配置EAP验证的用户名test2和密码123456,可配置多个用户账户
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
如果不成功就执行
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
执行
sysctl -p
看下加载情况
(配置文件中的ip与ipsec.conf配置文件中的ip要保持一致)
vi /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <interface name="eth0"/> <service name="ssh"/> <service name="dhcpv6-client"/> <service name="ipsec"/> <port protocol="tcp" port="1723"/> <port protocol="tcp" port="47"/> <port protocol="tcp" port="1701"/> <port protocol="tcp" port="22"/> <masquerade/> <rule family="ipv4"> <source address="10.10.10.0/24"/> <masquerade/> </rule> <rule family="ipv4"> <source address="10.10.10.0/24"/> <forward-port to-port="4500" protocol="udp" port="4500"/> </rule> <rule family="ipv4"> <source address="10.10.10.0/24"/> <forward-port to-port="500" protocol="udp" port="500"/> </rule> <masquerade/> </zone>
3、启动软件
systemctl enable firewalld && systemctl start firewalld && systemctl enable strongswan && systemctl start strongswan
登录阿里云管理控制台- -> 云服务器ECS- ->网络和安全- ->安全组- ->添加安全组规则: 授权策略:允许 协议类型:自定义UDP 端口范围:500/500 授权类型:地址段访问 授权对象:0.0.0.0/0 优先级:100 描述:随便填 授权策略:允许 协议类型:自定义UDP 端口范围:4500/4500 授权类型:地址段访问 授权对象:0.0.0.0/0 优先级:100 描述:随便填
打开网络偏好设置
新建连接,选择vpn
vpn类型选择Cisco/IPSec
填写服务器地址,XAUTH类型的帐号的密码,
并在认证设置中填入配置好的密钥
点击连接,测试成功。
浏览器输入https://www.google.com/,看到以下页面,成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。