背景
使用vultr.com提供的vps(收费)创建debian11,并搭建strongswan和frps。
strongswan搭建ikev2,需要证书。证书使用letsencrypt和nginx。我是顺便使用ngix。
frp为网络穿透软件。分客户端frpc和服务端frps。
下面假如一些资源:
email: xxxx@gmail.com
域名: vpn.test.site
本地网卡设备: enp1s0
vpn网络段: 192.168.4.0
apt-get
更新apt-get, 使用命令行:
apt-get update
更新软件(新系统,目前这句没有实际效果)
apt-get upgrade
防火墙ufw
系统默认防火墙
启动 ufw enable
停用 ufw disable
当前状态查询 ufw status
添加规则 ufw allow 端口
部署nginx
执行命令
apt-get install nginx
debian平台的nginx安装后自动运行,测试一下,执行命令
curl -I 127.0.0.1
添加防火墙规则
ufw allow 'Nginx Full'
常用命令:
启动 nginx
停止 nginx -s stop
重启 nginx -s restart
重新加载配置 nginx -s reload
版本查看 nginx -v 或 nginx -V
部署letsencrypt
执行命令
apt-get install python3-certbot-nginx
申请证书,执行命令
certbot --nginx --email xxxx@gmail.com -d vpn.test.site
后续更新证书,执行证书
certbot renew --dry-run
如果不依赖nginx,可以执行
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email xxxxx@gmail.com -d vpn.test.site
这个命令需要临时绑定本地80端口
部署strongswan
安装
执行命令
apt-get install strongswan
复制证书,执行命令(3条)
cp /etc/letsencrypt/live/vpn.test.site/fullchain.pem /etc/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.test.site/privkey.pem /etc/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.test.site/chain.pem /etc/ipsec.d/cacerts/
修改防火墙
开放端口: 500 1701 4500
执行命令(3条)
ufw allow 500
ufw allow 1701
ufw allow 4500
修改配置文件
配置文件位置: /etc/ipsec.conf
编辑内容如下:
config setup
# uniqueids=never
conn -ikev2
auto=add
keyexchange=ikev2
compress=no
rekey=no
fragmentation=yes
ike=aes256-sha1-modp1024,aes256-sha256-modp2048,3des-sha1-modp2048,aes256-sha1-modp2048!
esp=aes256-sha256,3des-sha1,aes256-sha1!
dpddelay=90s
dpdaction=clear
left=%any
leftid=vpn.test.site
leftauth=pubkey
leftcert=fullchain.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsendcert=never
rightsourceip=192.168.4.0/24
rightdns=1.1.1.1,9.9.9.9
eap_identity=%identity
修改账号信息文件
文件位置: /etc/ipsec.secrets
编辑内容如下:
vpn.test.site : RSA "/etc/ipsec.d/private/privkey.pem"
# 用户名 : EAP "密码"
# ……
username : EAP "password"
转发规则
修改配置文件: /etc/sysctl.conf
添加一行内容
net.ipv4.ip_forward=1
使刚修改的配置生效,执行命令
sysctl -p
设置转发规则,执行命令(4条)
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.4.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o enp1s0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o enp1s0 -j MASQUERADE
启动
重启,执行命令
ipsec restart
部署frps
到https://github.com/fatedier/frp/releases 下载一个合适的包,我使用的是linux_amd64.的最新版
解压后
拷贝frps到/usr/bin/
拷贝frps.ini到/etc/frp/
拷贝systemd/frps.service到/etc/systemd/system/
编辑frps.ini,内容如下:
[common]
bind_port = 3000
token = mytoken
dashboard_port = 3001
dashboard_user = username
dashboard_pwd = password
修改防火墙
ufw allow 3000
ufw allow 3001
重启服务
systemctl restart frps