CentOS 8 请移步《CentOS 8 使用 Strongswan 搭梯(IPsec IKEv2 VPN)》
更新于 2018-08-29
新写了一篇简单一点的文章,移步《CentOS 7 使用 Strongswan 配置 IKEv2 VPN》查看。
最近感觉我国”建筑行业龙头企业”的施工水平又有提升, ipsec + l2tp 方式也难逃厄运. so, 放弃, 改用 IKEv2.
google 到一款名为 strongSwan 的开源服务端. 官网为 https://www.strongswan.org.
本文只介绍 IKEv2 方式的 VPN 配置, 如果需要 PPTP 方式, 请参考 <<CentOS VPS 建立 PPTP VPN 服务>>
这里使用的 VPS 服务器配置:
- CentOS 7 / 512M / 20G ssd , $5/月. 详情请看 这里
- 禁用 firewallD, 启用 iptables.
- strongSwan 版本 5.2
- xl2tpd 版本 1.3.6
安装 strongSwan
strongSwan 的发行版已包含在 EPEL 源中, 如果没有添加 EPEL 源, 请看 <<CentOS 7 配置 LNMP + FTP 环境>> 添加 EPEL 源.
添加完 EPEL 源后输入如下命令
当前为 5.4.0 版本, 官网上最新为 5.5.0, 但是需要编译安装.
1 2 3 |
yum install strongswan systemctl enable strongswan systemctl start strongswan |
生成证书
生成 CA 根证书
1. 生成一个私钥:
1 |
strongswan pki --gen --outform pem > ca.key.pem |
2. 基于这个私钥自己签一个 CA 根证书:
1 |
strongswan pki --self --in ca.key.pem --dn "C=CN, O=ITnmg, CN=ITnmg StrongSwan CA" --ca --lifetime 3650 --outform pem > ca.cert.pem |
–self 表示自签证书
–in 是输入的私钥
–dn 是判别名
- C 表示国家名,同样还有 ST 州/省名,L 地区名,STREET(全大写) 街道名
- O 组织名称
- CN 友好显示的通用名
–ca 表示生成 CA 根证书
–lifetime 为有效期, 单位是天
生成服务器端证书
1. 同样先生成一个私钥
1 |
strongswan pki --gen --outform pem > server.key.pem |
2. 用我们刚才自签的 CA 证书给自己发一个服务器证书:
1 2 3 4 5 |
#从私钥生成公钥 strongswan pki --pub --in server.key.pem --outform pem > server.pub.pem #用刚生成的公钥生成服务器证书 strongswan pki --issue --lifetime 3600 --cacert ca.cert.pem --cakey ca.key.pem --in server.pub.pem --dn "C=CN, O=ITnmg, CN=vpn.itnmg.net" --san="vpn.itnmg.net" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem |
–issue, –cacert 和 –cakey 就是表明要用刚才自签的 CA 证书来签这个服务器证书。
–dn, –san,–flag 是一些客户端方面的特殊要求:
- 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。
生成客户端证书(可选)
客户端证书是在启用客户端证书验证的时候, 用于验证客户端用户身份的. 每个用户一个证书. 如果需要很高的安全性, 可以用客户端证书, 一般情况下, 不需要使用.
1. 依然是生成私钥:
1 |
strongswan pki --gen --outform pem > client.key.pem |
2. 然后用刚才自签的 CA 证书来签客户端证书:
1 2 3 4 5 |
#从私钥生成公钥 strongswan pki --pub --in client.key.pem --outform pem > client.pub.pem #这里就不需要上面那一堆特殊参数了 strongswan pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --in client.pub.pem --dn "C=CN, O=ITnmg, CN=vpn.itnmg.net" --outform pem > client.cert.pem |
打包证书为 pkcs12
1 |
openssl pkcs12 -export -inkey client.key.pem -in client.cert.pem -name "ITnmg StrongSwan Client Cert" -certfile ca.cert.pem -caname "ITnmg StrongSwan CA" -out client.cert.p12 |
此时会提示输入两次密码, 这个密码是在导入证书到其他系统时需要验证的. 没有这个密码即使别人拿到了证书也没法使用.
安装证书
1 2 3 4 5 6 7 |
cp -r ca.key.pem /etc/strongswan/ipsec.d/private/ cp -r ca.cert.pem /etc/strongswan/ipsec.d/cacerts/ cp -r server.cert.pem /etc/strongswan/ipsec.d/certs/ cp -r server.pub.pem /etc/strongswan/ipsec.d/certs/ cp -r server.key.pem /etc/strongswan/ipsec.d/private/ cp -r client.cert.pem /etc/strongswan/ipsec.d/certs/ cp -r client.key.pem /etc/strongswan/ipsec.d/private/ |
把 CA 证书(ca.cert.pem)、客户端证书(client.cert.pem)和 .p12 证书(client.cert.p12)用 FTP 复制出来给客户端用
配置 vpn
先修改主配置
1 |
nano /etc/strongswan/ipsec.conf |
下面是一些常用的设置说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
config setup #是否缓存证书吊销列表 #<em>cachecrls = yes</em> #是否严格执行证书吊销规则 # strictcrlpolicy=yes #如果同一个用户在不同的设备上重复登录,yes 断开旧连接,创建新连接;no 保持旧连接,并发送通知; never 同 no, 但不发送通知. uniqueids=no #配置根证书, 如果不使用证书吊销列表, 可以不用这段. 命名为 %default 所有配置节都会继承它 #ca %default #证书吊销列表url,可以是 LDAP, http, 或文件路径 #crluri = <uri> #定义连接项, 命名为 %default 所有连接都会继承它 conn %default #是否启用压缩, yes 表示如果支持压缩会启用. compress = yes #当意外断开后尝试的操作, hold, 保持并重连直到超时. dpdaction = hold #意外断开后尝试重连时长 dpddelay = 30s #意外断开后超时时长, 只对 IKEv1 起作用 dpdtimeout = 60s #闲置时长,超过后断开连接. inactivity = 300s #数据传输协议加密算法列表 esp = aes256-sha256,aes256-sha1,3des-sha1! #密钥交换协议加密算法列表 ike = aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! #默认的密钥交换算法, ike 为自动, 优先使用 IKEv2 keyexchange = ike #服务端公网ip, 可以是魔术字 %any,表示从本地ip地址表中取. left = %any #客户端ip, 同上 right = %any #指定服务端与客户端的dns, 多个用","分隔 leftdns = 8.8.8.8,8.8.4.4 rightdns = 8.8.8.8,8.8.4.4 #服务端用于ike认证时使用的端口, 默认为500,如果使用了nat 转发, 则使用4500 #leftikeport = <port> #服务器端虚拟ip地址 #leftsourceip = %config #客户端虚拟ip段 rightsourceip = 10.0.0.0/24 #服务器端子网, 魔术字 0.0.0.0/0. 如果为客户端分配虚拟 IP 地址的话,那表示之后要做 iptables 转发,那么服务器端就必须是用魔术字 leftsubnet = 0.0.0.0/0 #rightsubnet = <ip subnet>[[<proto/port>]][,...] conn IKEv2-BASE #服务器端根证书DN名称 leftca = "C=CN, O=ITnmg, CN=ITnmg StrongSwan CA" #服务器证书, 可以是 PEM 或 DER 格式 leftcert = server.cert.pem #不指定客户端证书路径 #rightcert = <path> #指定服务器证书的公钥 leftsigkey = server.pub.pem #rightsigkey = <raw public key> | <path to public key> #是否发送服务器证书到客户端 leftsendcert = always #客户端不发送证书 rightsendcert = never #服务端认证方法,使用证书 leftauth = pubkey #客户端认证使用 EAP 扩展认证 , 貌似 eap-mschapv2 比较通用 rightauth = eap-mschapv2 #服务端id, 可以任意指定, 默认为服务器证书的 subject, 还可以是魔术字 %any,表示什么都行. leftid = vpn.itnmg.net #客户端id, 任意 rightid = %any #ios, mac os, win7+, linux conn IKEv2-EAP also=IKEv2-BASE #指定客户端eap id eap_identity = %any #不自动重置密钥 rekey = no #开启IKE 消息分片 fragmentation = yes #当服务启动时, 应该如何处理这个连接项. add 添加到连接表中. auto = add |
我的设置项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
config setup uniqueids=no conn %default compress = yes esp = aes256-sha256,aes256-sha1,3des-sha1! ike = aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha1-modp2048,3des-sha1-modp2048,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! keyexchange = ike keyingtries = 1 leftdns = 8.8.8.8,8.8.4.4 rightdns = 8.8.8.8,8.8.4.4 conn ikev2-eap leftca = "C=CN, O=ITnmg, CN=ITnmg StrongSwan CA" leftcert = server.cert.pem leftsendcert = always rightsendcert = never leftid = vpn.itnmg.net left = %any right = %any leftauth = pubkey rightauth = eap-mschapv2 leftfirewall = yes leftsubnet = 0.0.0.0/0 rightsourceip = 10.1.0.0/16 fragmentation = yes rekey = no eap_identity=%any auto = add |
修改 dns 配置
v5.1.2 之后, 所有插件配置都分散在 /etc/strongswan/strongswan.d/ 目录中.
1 |
nano /etc/strongswan/strongswan.d/charon.conf |
修改如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
charon { duplicheck.enable = no #同时连接多个设备,把冗余检查关闭. # windows 公用 dns dns1 = 8.8.8.8 dns2 = 8.8.4.4 #以下是日志输出, 生产环境请关闭. filelog { /var/log/charon.log { # add a timestamp prefix time_format = %b %e %T # prepend connection name, simplifies grepping ike_name = yes # overwrite existing files append = no # increase default loglevel for all daemon subsystems default = 1 # flush each line to disk flush_line = yes } } } |
配置验证方式的用户名与密码
1 |
nano /etc/strongswan/ipsec.secrets |
下面添加用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#使用证书验证时的服务器端私钥 #格式 : RSA <private key file> [ <passphrase> | %prompt ] : RSA server.key.pem #使用预设加密密钥, 越长越好 #格式 [ <id selectors> ] : PSK <secret> %any : PSK "预设加密密钥" #EAP 方式, 格式同 psk 相同 用户名 : EAP "密码" #XAUTH 方式, 只适用于 IKEv1 #格式 [ <servername> ] <username> : XAUTH "<password>" 用户名 : XAUTH "密码" |
开启内核转发
1 |
nano /etc/sysctl.conf |
写入以下配置
1 2 3 |
# VPN net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding=1 |
保存退出, 执行下面命令.
1 |
sysctl -p |
配置防火墙
iptables 配置方法
将下面几条规则加入 iptables 规则中, 适当使用 -I 参数替换 -A 参数, 确保所有的项目位置都在拒绝项前面.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#开放端口 iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT #启用ip伪装 iptables -t nat -I POSTROUTING -s 10.1.0.0/16 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE #添加转发 iptables -A FORWARD -s 10.1.0.0/16 -j ACCEPT #保存规则 service iptables save #重启服务 systemctl restart iptables |
如果嫌上面的操作麻烦, 可以直接编辑 iptables 规则文件.
1 |
nano /etc/sysconfig/iptables |
将下面的规则部分贴进去, 不要整个复制粘贴, 根据原有规则适当调整每条规则的位置, 确保规则在拒绝项前, 使之能生效.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.1.0.0/16 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT -A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE COMMIT *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p udp -m udp --dport 500 -j ACCEPT -A INPUT -p udp -m udp --dport 4500 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -s 10.1.0.0/16 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT |
保存退出, 重启 iptables 使之生效.
1 |
systemctl restart iptables |
以下是 firewallD 的配置方法, 使用 iptables 的可以忽略.
firewalld 介绍请看 <<CentOS 7 firewalld 动态防火墙介绍>>
首先将公网网卡添加到当前区域中
1 2 |
#查看所有网卡信息, 找出公网网卡 ip addr |
编辑网卡配置
1 |
nano /etc/sysconfig/network-scripts/ifcfg-eth0 |
在最末尾加上区域配置
1 |
ZONE=public |
保存退出,重启服务
1 2 |
systemctl restart network systemctl restart firewalld |
然后新建一个服务
1 |
nano /etc/firewalld/services/strongswan.xml |
填入以下内容
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>Strongswan</short> <description>Strongswan VPN</description> <port protocol="udp" port="500,4500"/> </service> |
保存退出
添加服务到当前区域, 开启转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#以下命令没有指定 --zone 参数, 都是针对默认区域 public #为区域添加服务 firewall-cmd --permanen --add-service=strongswan #启用ip伪装 firewall-cmd --permanen --add-rich-rule='rule family="ipv4" source address="10.1.0.0/16" masquerade' #添加 nat 转发 firewall-cmd --permanen --add-rich-rule='rule family="ipv4" source address="10.1.0.0/16" forward-port port="4500" protocol="udp" to-port="4500"' firewall-cmd --permanen --add-rich-rule='rule family="ipv4" source address="10.1.0.0/16" forward-port port="500" protocol="udp" to-port="500"' #重新加载防火墙配置 firewall-cmd --reload |
除了用 firewall-cmd 命令外, 还可以换种方法添加上面的规则.
1 2 |
#编辑当前区域的xml配置文件 nano /etc/firewalld/zones/public.xml |
改成如下内容, 我这里只开放了 ssh 和 vpn 端口, 其他内容根据各自的情况修改.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?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> <service name="strongswan"/> <service name="ssh"/> <rule family="ipv4"> <source address="10.1.0.0/16"/> <forward-port to-port="4500" protocol="udp" port="4500"/> </rule> <rule family="ipv4"> <source address="10.1.0.0/16"/> <forward-port to-port="500" protocol="udp" port="500"/> </rule> <rule family="ipv4"> <source address="10.1.0.0/16"/> <masquerade/> </rule> </zone> |
1 2 |
#重新加载防火墙配置 firewall-cmd --reload |
配置完防火墙后重启 strongswan 服务
1 2 |
strongswan stop #使用strongswan 自身的命令停止服务 systemctl start strongswan #使用 systemctl 命令启动服务 |
这里不使用 strongswan restart 命令的原因是, 使用这条命令后, 再用 systemctl status strongswan 命令得不到正确的运行状态.
至此, 服务端配置已完成.
为了学用 firewalld , 特意用了两天时间研究, 学会了才发现, firewalld 要比 iptables 占太多内存. 小内存的 vps 用 firewalld 有点奢侈. 还是换回 iptables 了.
客户端配置
IOS:
先导入 CA 证书
将之前创建的 ca.cert.pem 用 ftp 导出 , 写邮件以附件的方式发到邮箱, 在 ios 浏览器登录邮箱, 下载附件, 安装 ca 证书.
1. 使用 IKEv2 + EAP 认证
找到手机上 “设置->VPN->添加配置”, 选 IKEv2
- 描述: 随便填
- 服务器: 填url或ip
- 远程ID: ipsec.conf 中的 leftid
- 用户鉴定: 用户名
- 用户名: EAP 项用户名
- 密码: EAP 项密码
2. 使用 IKEv2 + 客户端证书 认证
把之前的 .p12 证书(里面包含ca证书)发到邮箱在手机上打开. 导入到手机(此时需要之前设置的证书密码).
找到手机上 “设置->VPN->添加配置”, 选 IKEv2
- 描述: 随便填
- 服务器: 填url或ip
- 远程ID: ipsec.conf 中的 leftid
- 用户鉴定: 证书
- 证书: 选择安装完的客户端证书
3. 使用 IKEv2 + 预设密钥 认证
找到手机上 “设置->VPN->添加配置”, 选 IKEv2
- 描述: 随便填
- 服务器: 填url或ip
- 远程ID: ipsec.conf 中的 leftid
- 用户鉴定: 无
- 使用证书: 关
- 密钥: PSK 项密钥
Windows 10
导入证书:
- 将 CA 根证书 ca.cert.pem 重命名为 ca.cert.crt
- 双击 ca.cert.crt 开始安装证书
- 点击安装证书
- “存储位置” 选择 “本地计算机”, 下一步
- 选择 “将所有的证书都放入下列存储区”, 点浏览, 选择 “受信任的根证书颁发机构”, 确定, 下一步, 完成.
建立连接:
- “控制面板”-“网络和共享中心”-“设置新的连接或网络”-“连接到工作区”-“使用我的 Internet 连接”
- Internet 地址写服务器 IP 或 URL。
- 描述随便写。
- 用户名密码写之前配置的 EAP 的那个。
- 确定
- 转到 控制面板网络和 Internet网络连接
- 在新建的 VPN 连接上右键属性然后切换到“安全”选项卡
- VPN 类型选 IKEv2
- 数据加密选“需要加密”
- 身份认证这里需要说一下,如果想要使用 EAP 认证的话就选择“Microsoft:安全密码(EAP-MSCHAP v2)”; 想要使用私人证书认证的话就选择“使用计算机证书”。
- 再切换到 “网络” 选项卡, 双击 “Internet 协议版本 4” 以打开属性窗口, 这里说一下, 如果你使用的是老版本的 win10, 可能会打不开属性窗口, 这是已知的 bug, 升级最新版本即可解决.
- 点击 “高级” 按钮, 勾选 “在远程网络上使用默认网关”, 确定退出.
VPN 配置完成
Windows 7 导入证书略有不同
- 开始菜单搜索「cmd」,打开后输入 mmc(Microsoft 管理控制台)。
- 「文件」-「添加/删除管理单元」,添加「证书」单元
- 证书单元的弹出窗口中一定要选「计算机账户」,之后选「本地计算机」,确定。
- 在左边的「控制台根节点」下选择「证书」-「受信任的根证书颁发机构」-「证书」,右键 -「所有任务」-「导入」打开证书导入窗口。
- 选择 CA 证书 ca.cert.crt 导入即可
你好,我问下,我按照你的文档配置下来,我用苹果手机客服端登录不成功,同时,我也没看到后台有日志,
检查有没有安装证书
您好 我的证书ca.cert.pem 以邮件发送过来 没有安装项啊
也就是无法安装 我的是ios10.1.1系统
以附件的形式加到邮件里, 都可以安装的.
恩 可以了! 我一开始是发到了QQ邮箱,没有安装项。重新发到163邮箱就可以了。 您好,我的QQ781066768 。 我想做的是用ios手机在外部访问公司内网才能登上的网站,现在有点小问题。希望您能指导一下,跪谢!或者我加您QQ也好。
我每连接一次vpn,服务器都会产出日志。日志里没有error,但是有提示错误。然后vpn连接不上
我有写日志配置那段, 你可以看一下, 没日志谁也不清楚出了什么问题.
一般来说容易出问题的地方就那么几个, 配置, dns, 防火墙. 证书, 账号密码.
仔细检查一下. 一步步来. 要有耐心.
您好,感谢您的教程非常详尽!初步测试iOS没有问题。
但现在发现无法访问baidu。这个现象跟之前用pptp连接vpn的时候一样的毛病。
有一些网站在收到tcp的包的mss大小需要重新更改。
那个时候解决方案是在iptables转发的时候修改一下mss,具体如下:
-A FORWARD -i ppp+ -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS –set-mss 1356
但现在用了ipsec后,请问如何做类似的操作?可以指定ip段进行吗?
暂时试了一下 下面的规则好像就可以访问baidu了
-A FORWARD -s 10.8.0.0/24 -o eth0 -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS –set-mss 1356
博主你好,我初学linux,第一次搭VPN服务器,用的是strongswan-5.4.0,我参照了你的ikev2设置,客户机能连接上了但无法上网,我测试时服务器和客户机在同一内网,DNS我设置成了电信DNS地址。我客户机获得的虚拟IP地址的子网掩码是255.255.255.255,网关为空,这样是有问题的吗?我看了下日志,但大部分看不懂
Sep 13 14:43:12 00[DMN] Starting IKE charon daemon (strongSwan 5.4.0, Linux 3.10.0-327.el7.x86_64, x86_64)
Sep 13 14:43:12 00[LIB] openssl FIPS mode(2) – enabled
Sep 13 14:43:12 00[CFG] loading ca certificates from ‘/etc/strongswan/ipsec.d/cacerts’
Sep 13 14:43:12 00[CFG] loaded ca certificate “C=CN, O=XiaoMing, CN=XiaoMing StrongSwan CA” from ‘/etc/strongswan/ipsec.d/cacerts/ca.cert.pem’
Sep 13 14:43:12 00[CFG] loading aa certificates from ‘/etc/strongswan/ipsec.d/aacerts’
Sep 13 14:43:12 00[CFG] loading ocsp signer certificates from ‘/etc/strongswan/ipsec.d/ocspcerts’
Sep 13 14:43:12 00[CFG] loading attribute certificates from ‘/etc/strongswan/ipsec.d/acerts’
Sep 13 14:43:12 00[CFG] loading crls from ‘/etc/strongswan/ipsec.d/crls’
Sep 13 14:43:12 00[CFG] loading secrets from ‘/etc/strongswan/ipsec.secrets’
Sep 13 14:43:12 00[CFG] loaded RSA private key from ‘/etc/strongswan/ipsec.d/private/server.key.pem’
Sep 13 14:43:12 00[CFG] loaded IKE secret for %any
Sep 13 14:43:12 00[CFG] loaded EAP secret for xiaoming
Sep 13 14:43:12 00[CFG] loaded EAP secret for xiaoming
Sep 13 14:43:12 00[LIB] loaded plugins: charon aes des rc2 sha2 sha1 md4 md5 random nonce x509 revocation constraints acert pubkey pkcs1 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt fips-prf gmp xcbc cmac hmac ctr ccm gcm curl attr kernel-netlink resolve socket-default farp stroke vici updown eap-identity eap-md5 eap-gtc eap-mschapv2 eap-tls eap-ttls eap-peap xauth-generic xauth-eap xauth-pam xauth-noauth dhcp
Sep 13 14:43:12 00[JOB] spawning 16 worker threads
Sep 13 14:43:12 05[CFG] received stroke: add connection ‘ikev2-eap’
Sep 13 14:43:12 05[CFG] adding virtual IP address pool 10.0.0.0/24
Sep 13 14:43:12 05[CFG] loaded certificate “C=CN, O=XiaoMing, CN=192.168.60.71” from ‘server.cert.pem’
Sep 13 14:43:12 05[CFG] added configuration ‘ikev2-eap’
Sep 13 14:43:21 12[NET] received packet: from 192.168.60.30[500] to 192.168.60.71[500] (616 bytes)
Sep 13 14:43:21 12[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
Sep 13 14:43:21 12[IKE] received MS NT5 ISAKMPOAKLEY v9 vendor ID
Sep 13 14:43:21 12[IKE] received MS-Negotiation Discovery Capable vendor ID
Sep 13 14:43:21 12[IKE] received Vid-Initial-Contact vendor ID
Sep 13 14:43:21 12[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
Sep 13 14:43:21 12[IKE] 192.168.60.30 is initiating an IKE_SA
Sep 13 14:43:21 12[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep 13 14:43:21 12[NET] sending packet: from 192.168.60.71[500] to 192.168.60.30[500] (312 bytes)
Sep 13 14:43:21 10[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (1280 bytes)
Sep 13 14:43:21 10[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
Sep 13 14:43:21 10[IKE] received cert request for “C=CN, O=XiaoMing, CN=XiaoMing StrongSwan CA”
Sep 13 14:43:21 10[IKE] received 46 cert requests for an unknown ca
Sep 13 14:43:21 10[CFG] looking for peer configs matching 192.168.60.71[%any]…192.168.60.30[192.168.60.30]
Sep 13 14:43:21 10[CFG] selected peer config ‘ikev2-eap’
Sep 13 14:43:21 10[IKE] initiating EAP_IDENTITY method (id 0x00)
Sep 13 14:43:21 10[IKE] peer supports MOBIKE
Sep 13 14:43:21 10[IKE] authentication of ‘192.168.60.71’ (myself) with RSA signature successful
Sep 13 14:43:21 10[IKE] sending end entity cert “C=CN, O=XiaoMing, CN=192.168.60.71”
Sep 13 14:43:21 10[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep 13 14:43:21 10[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (1216 bytes)
Sep 13 14:43:21 13[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (96 bytes)
Sep 13 14:43:21 13[ENC] parsed IKE_AUTH request 2 [ EAP/RES/ID ]
Sep 13 14:43:21 13[IKE] received EAP identity ‘xiaoming’
Sep 13 14:43:21 13[IKE] initiating EAP_MSCHAPV2 method (id 0x8D)
Sep 13 14:43:21 13[ENC] generating IKE_AUTH response 2 [ EAP/REQ/MSCHAPV2 ]
Sep 13 14:43:21 13[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (112 bytes)
Sep 13 14:43:21 12[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (144 bytes)
Sep 13 14:43:21 12[ENC] parsed IKE_AUTH request 3 [ EAP/RES/MSCHAPV2 ]
Sep 13 14:43:21 12[ENC] generating IKE_AUTH response 3 [ EAP/REQ/MSCHAPV2 ]
Sep 13 14:43:21 12[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (144 bytes)
Sep 13 14:43:21 14[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (80 bytes)
Sep 13 14:43:21 14[ENC] parsed IKE_AUTH request 4 [ EAP/RES/MSCHAPV2 ]
Sep 13 14:43:21 14[IKE] EAP method EAP_MSCHAPV2 succeeded, MSK established
Sep 13 14:43:21 14[ENC] generating IKE_AUTH response 4 [ EAP/SUCC ]
Sep 13 14:43:21 14[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (80 bytes)
Sep 13 14:43:21 07[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (112 bytes)
Sep 13 14:43:21 07[ENC] parsed IKE_AUTH request 5 [ AUTH ]
Sep 13 14:43:21 07[IKE] authentication of ‘192.168.60.30’ with EAP successful
Sep 13 14:43:21 07[IKE] authentication of ‘192.168.60.71’ (myself) with EAP
Sep 13 14:43:21 07[IKE] IKE_SA ikev2-eap[1] established between 192.168.60.71[192.168.60.71]…192.168.60.30[192.168.60.30]
Sep 13 14:43:21 07[IKE] peer requested virtual IP %any
Sep 13 14:43:21 07[CFG] assigning new lease to ‘xiaoming’
Sep 13 14:43:21 07[IKE] assigning virtual IP 10.0.0.1 to peer ‘xiaoming’
Sep 13 14:43:21 07[IKE] peer requested virtual IP %any6
Sep 13 14:43:21 07[IKE] no virtual IP found for %any6 requested by ‘xiaoming’
Sep 13 14:43:21 07[IKE] CHILD_SA ikev2-eap{1} established with SPIs c76f3862_i 121227a6_o and TS 0.0.0.0/0 === 10.0.0.1/32
Sep 13 14:43:21 07[ENC] generating IKE_AUTH response 5 [ AUTH CPRP(ADDR DNS DNS DNS DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) ]
Sep 13 14:43:21 07[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (272 bytes)
Sep 13 14:43:46 10[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (80 bytes)
Sep 13 14:43:46 10[ENC] parsed INFORMATIONAL request 6 [ D ]
Sep 13 14:43:46 10[IKE] received DELETE for ESP CHILD_SA with SPI 121227a6
Sep 13 14:43:46 10[IKE] closing CHILD_SA ikev2-eap{1} with SPIs c76f3862_i (0 bytes) 121227a6_o (0 bytes) and TS 0.0.0.0/0 === 10.0.0.1/32
Sep 13 14:43:46 10[IKE] sending DELETE for ESP CHILD_SA with SPI c76f3862
Sep 13 14:43:46 10[IKE] CHILD_SA closed
Sep 13 14:43:46 10[ENC] generating INFORMATIONAL response 6 [ D ]
Sep 13 14:43:46 10[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (80 bytes)
Sep 13 14:43:46 06[NET] received packet: from 192.168.60.30[4500] to 192.168.60.71[4500] (80 bytes)
Sep 13 14:43:46 06[ENC] parsed INFORMATIONAL request 7 [ D ]
Sep 13 14:43:46 06[IKE] received DELETE for IKE_SA ikev2-eap[1]
Sep 13 14:43:46 06[IKE] deleting IKE_SA ikev2-eap[1] between 192.168.60.71[192.168.60.71]…192.168.60.30[192.168.60.30]
Sep 13 14:43:46 06[IKE] IKE_SA deleted
Sep 13 14:43:46 06[ENC] generating INFORMATIONAL response 7 [ ]
Sep 13 14:43:46 06[NET] sending packet: from 192.168.60.71[4500] to 192.168.60.30[4500] (80 bytes)
Sep 13 14:43:46 06[CFG] lease 10.0.0.1 by ‘xiaoming’ went offline
我的客户机ip地址是192.168.60.30,服务器地址是192.168.60.71,希望博主能指点下,谢谢
仔细设置检查过了iptables的转发规矩,如果是转发问题,还可能会是什么问题呢?
按照本文部署strongswan和xl2tpd以后,通过iOS和Android都可以使用PSK方式连接。但是在Windows 7系统下连接时候,报“错误628: 在连接完成前,连接被远程计算机终止。”,请问可能是什么原因导致的?还有在VPN属性的安全选项卡下,数据加密和身份验证选项应该怎么设置呢?
“安全”中VPN类型选 l2tp, 高级设置里填上预设密钥, 其他的默认就可以.
纠正了自己的一处错误,chap-secrets里面的server没有和xl2tpd.conf中的name保持一致。改正这个错误以后我用Windows 10可以用L2TP/IPSec连接了,但是Windows 7以及XP分别报809和800的错误,不知道你有没有遇到过此类的问题
再检查一下配置吧. 然后看看日志, 我用win7, win10都没问题.
我后来测试了,Windows 7和XP下面,安装并使用证书+用户名密码的时候L2TP是可以正常使用的,但是用PSK+用户名密码的方式不能连接;而Windows 10下面不需要安装证书,PSK+用户名密码也可以用的,不知道是哪里有问题?还有你说的是xl2tp的日志吗?这个日志应该在哪里开启和查看?
博主您好,按照您的设置,IKEv2能链接,QQ通讯正常,但网页无法访问。
想来应该是DNS的问题,但是我检查了我的的DNS配置,和您的一样。
另外我在该服务器上也搭建了PPTP,PPTP中的DNS又能正常解析。
噢,可以了。原来是您下面的启动日志的命令我把它注释掉的时候连带DNS也一起注释掉了。
所以DNS不能解析。
不好意思。(逃
你好,按照你的方式配置并连接成功了,但是并不能翻墙,这是怎么回事?我试过好多种方法来配置VPN,几乎都是能连接成功但是不能翻墙,VPS是香港的,VPS是可以直接访问到大陆被墙的网站的
能连成功,不能访问网站,大部分原因是因为转发没设置好,也有可能是DNS没设置对,仔细查查这两项吧.
我也遇到同样的问题,可以连接VPN,就是访问不了任何网站,转发和DNS设置似乎都没有问题,请问还有什么可能原因?
这就不好说了, 检查一下日志, 应该能找到问题所在.
我也是遇到了上面同样的问题,使用ipsec和ikev2方式可以连接,却无法正常上网,但使用l2tp是可以正常的
检查一下 dns 设置是否正确. 还有, 如果是用 win10 系统连接需要设置 vpn 连接 ipv4 高级属性, 启用远程dns.
你好,是否可以联系我一下呢?我按照步骤安装,但是无法连接上
您好,按照您的设置成功配置完成并且连接成功,但是我有一个黑莓classic手机是10.3的系统,请问在ipsec.conf中该如何配置呢?
黑莓的系统我没用过, 不好说, 不过主要就是改 IKE 那一条, 或者你每种都试一下.
您好,请教您一个问题:我架设的VPN在联通,电信,移动的宽带网络都能正常使用,但是联通的手机信号下完全无法建立链接。还没测试过其他手机网络,但是联通的无论在任何地点确定都无法使用。是需要额外有其他设定吗?
可能还是在配置文件上有问题, 打开调试日志看看. 另外vpn连接有时候可能很慢, 大概10几秒到20秒都有.
还有就是查一下你的手机系统是否支持相应的协议, 有问题时还是要请万能的 google 大神帮忙.
嗯,我再看看。之前用其他VPN的时候碰到过有线电视网络里VPN无法连接。
谢谢您的提示,我检查后感觉目前的问题焦点是在这里:
xl2tpd.service – Level 2 Tunnel Protocol Daemon (L2TP)
Loaded: loaded (/usr/lib/systemd/system/xl2tpd.service; enabled)
Active: failed (Result: start-limit) since Fri 2015-06-26 02:46:01 UTC; 15s ago
Process: 5942 ExecStartPre=/sbin/modprobe -q l2tp_ppp (code=exited, status=1/FAILURE)
这个start-limit始终导致服务进程起不来,请教您该如何改善呢?谢谢