写在前面
虽然有可能被block..
但因为折腾的过程太痛苦了…
所以还是要发布出来,顺便装x….
技术无罪 低调低调
环境
Debian 9.5
Linux strongSwan U5.6.3/K4.9.0-8-amd64
可信任机构颁发的SSL证书(DV即可)
使用可信任机构办法的SSL证书是为了使用体验 就可以在绝大多数设备上直接使用账号密码登陆验证,无需手动导入证书。
安装strongSwan
有两种安装方式
- 源码编译安装
- 包管理软件安装
更新索引
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
详情请参阅tips的其他文章这一不一一列举
大部分的云主机都是采用的KVM
请根据你的服务商提供的虚拟技术而使用不同的参数
编译
make
make install
验证是否安装成功 (查看版本)
ipsec version
以上就是编译安装 过程比较复杂 (本站使用的这个)
包管理软件安装(apt)
!!!请不要使用该方法!!!
debian的源一般都会老一些版本,第二配置文件的路径会变化很多,并且配置好了也不能连接。
apt install strongswan libcharon-extra-plugins
完成了 可以ipsec version
验证安装 是不是非常简单….
该方法本站没有验证过
配置文件
SSL证书可以直接使用颁发给域名的证书(我这里是crt+key)
修改ipsec配置文件
cd /usr/local/etc
vim ipsec.conf
# 默认的配置文件位置
修改成以下内容
conn ikev2-eap
left=%any
leftsubnet=0.0.0.0/0
right=%any
rightsourceip=10.0.0.0/24
dpdaction=clear
keyexchange=ikev2
ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024!
esp=aes256-sha256,3des-sha1,aes256-sha1!
rekey=no
leftauth=pubkey # 服务器端使用公钥方式验证
leftcert=/usr/local/etc/ssl/cert.crt # 服务器公钥
leftsendcert=always
leftid=your_demain.com # 需要和申请CA签发证书中的域名一致
rightauth=eap-mschapv2 # 客户端使用eap方式认证
rightsendcert=never
eap_identity=%any
fragmentation=yes
auto=add
采用的是EAP认证方式
配置ipsec的账号密码
同目录下
vim ipsec.secrets
配置模板
: RSA /usr/local/etc/ssl/privkey.key # 与证书对应的私钥文件(服务器私钥)
user1 : EAP "1234abcd" # 用户名 : 验证方式 "密码明文"
配置内核转发
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding=1 #ipv6 可用可不用
使之生效
sysctl -p
配置防火墙规则
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens3 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens3 -j MASQUERADE
注意最后两行 ens3 那个是你的网卡名称
你可以使用ip addr 或者 ifconfig
来查看你的网卡名称 有些未必是ens3iptables -A FORWARD -j REJECT
这句好像没用到 待我研究研究
最后
重启ipsec
ipsec restart
查看当前的链接可以使用ipsec status
防火墙规则不是永久生效的重启就会消失,用下面的命令永久生效.
service iptables save
tips
确定服务器使用的虚拟技术和安装Strongswan
Ci昵称Void 的一篇文章
这个文章用的是自颁发证书
靠谱的一个参考
fish2bird 的一篇文章