写在前面
Q:为什么有两篇文章
A: 上一次的文章基本基于民间的搭建教程 有很多地方实际上没搞清楚。本篇的教程大多参考的都是strongSwan的官方教程搭建。
因为服务器迁移到了AWS上面 迁移的内容只能是数据和配置,所以又重新安装了一遍
Q:和上篇文章有什么区别吗
A:技术上没什么变化,版本更新到了最新。strongSwan到了最新,以及更优雅的配置和去除无关的配置。
strongSwan 5.6.3 -> 5.7.2
请不要参考上篇文章 如果你有问题 可以在下面评论 或许我可以帮助你
上篇文章 : Debian下配置ikev2服务
环境
Debian 9.5
Linux strongSwan U5.7.2/K4.9.0-8-amd64
可信任机构颁发的SSL证书(DV即可)
使用可信任机构办法的SSL证书是为了使用体验 就可以在绝大多数设备上直接使用账号密码登陆验证,无需手动导入证书。
安装strongSwan
更新apt索引
apt update
编译安装
安装编译环境(请确保有以下组件)
apt-get install libpam0g-dev libssl-dev make gcc
下载并解压代码
cd /tmp
# 此处进入到临时目录中 或者其他目录
wget http://download.strongswan.org/strongswan.tar.gz
# 下载源码
tar -zxf strongswan.tar.gz
# 解压
cd strongswan-*
# 进入strongswan的目录 注意后面是版本号 不要直接复制粘贴
配置编译
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 --enable-openssl --disable-gmp
OpenVZ需额外增加一个 enable-kernel-libipsec
./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 --enable-openssl --disable-gmp --enable-kernel-lib
大部分的云主机都是采用的KVM
请根据你的服务商提供的虚拟技术而使用不同的参数
编译和安装
make
make install
验证是否安装成功 (查看版本)
ipsec version
配置文件
SSL证书可以直接使用颁发给域名的证书(Apache和Nginx的所需证书)
默认安装的配置文件路径是/usr/local/etc/
拷贝证书
strongSwan寻找证书的路径都在ipsec.d/
下
/usr/local/etc/ipsec.d
该目录下有几个文件夹 他们有着不同的作用
目录名 | 作用 |
---|---|
private | 包含RSA和ECDSA私钥文件 |
certs | 包含X.509或PGP端实体证书 |
crls | 包含证书撤销列表 |
cacerts | 包含可信任的CA证书 |
ocspcerts | 包含可信任的OCSP签名者证书 |
aacerts | 包含可信任的授权授权证书 |
acerts | 包含属性证书 |
reqs | 包含PKCS#10证书请求 |
只需要把相应的证书拷贝进去就好了
修改ipsec配置文件
cd /usr/local/etc
vim ipsec.conf
# 默认的配置文件位置
修改成以下内容
# /etc/ipsec.conf - strongSwan IPsec configuration file
config setup #定义一般的配置参数
cachecrls=yes
strictcrlpolicy=yes
ca rootca ##定义CA证书颁发机构 可以不配 无关紧要
cacert=1_root_bundle.crt
conn %default #默认链接配置 其他的conn都会继承该配置
keyingtries=1
dpdaction=clear
left=%any
leftsubnet=0.0.0.0/0
right=%any
rightsourceip=10.0.0.0/24
rightdns=1.1.1.1
conn ikev2-eap #使用EAP认证的IKEV2的链接配置
keyexchange=ikev2
ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024!
esp=aes256-sha256,3des-sha1,aes256-sha1!
rekey=no
eap_identity=%any
fragmentation=yes
auto=add
leftauth=pubkey
leftcert=inmind.ltd.crt #服务器的公钥证书 默认路径是会从ipsec.d/cert中找
leftsendcert=always
leftid=inmind.ltd #服务器公钥证书的域名(必须匹配)
rightauth=eap-mschapv2
rightsendcert=never
可配置参数(官方)
config setup
ca
conn
配置ipsec的账号密码
同目录下
vim ipsec.secrets
配置模板
: RSA inmind.ltd.key # 与服务器证书对应的私钥文件 默认路径是会从ipsec.d/private中找
user1 : EAP "1234abcd" # 用户名 : 验证方式 "密码明文"
私钥必须配置 否链接会认证失败 配置路径如果错了 strongSwan是不会提示错误的
配置内核转发
在这个阶段 我们是已经可以连接上了,但是还不能通过VPN访问外部网络。
打开内核转发
路径:/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding=1 #ipv6 可用可不用,需要在conn配置ipv6的转发规则
用sysctl -p
立即生效
配置iptables转发
真正的转发数据…
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
注意上面的eth0 是你的网卡,有些主机可能不是这个名字,通过
ifconfig
或ip addr
这两个命令查看
最后
重启ipsec
ipsec restart
查看当前的链接可以使用ipsec status
tips
IKEV2使用到的端口:
因为我直接使用了AWS的防火墙 就不在iptables里配置规则了
只需要开启这两个端口就可以完成链接
协议 | 端口号 |
---|---|
UDP | 500 |
UDP | 4500 |
windows链接之后无法访问google
更改适配器设置 -> 属性 -> 网络 - ipv4属性 -> 高级 ,勾选“在远程网络上使用默认网关”。