因为 安卓和ios 都默认支持ipsec 而不需要另外安装软件。所以 作为内网服务使用还是非常方便。
加上之前openwrt迁移到lxc后,发现自带的ipsec 有问题。所以干脆lxc单独运行一个,独立运行 备份和使用都方便太多了。
lxc 也应该遵守 one 容器 one server
废话到此为止
创建 一个lxc
母盘 我选的 alpine 3.16 , dhcp分配ip,然后在dhcp路由上绑定静态ip 。 系统盘1g就够用 内存随便给一点 swap关闭,cpu给12核心
运行一下命令先安装配置docker
之所以lxc套docker 是因为懒得折腾,而且alpine体积很小。
1
2
3
4
5
| sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk add docker
rc-update add docker boot
service docker start
docker version
|
准备配置文件
下面的命令 要一次性输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| cat > /root/ipsec.env <<EOF
# Define your own values for these variables
# - DO NOT put "" or '' around values, or add space around =
# - DO NOT use these special characters within values: \ " '
# psk密钥
VPN_IPSEC_PSK=密钥
# 配置用于登陆VPN的账号和密码
VPN_USER=主用户名
VPN_PASSWORD=主用户名的密码
# 如下应该填写本机的外网IP 不强制
# VPN_PUBLIC_IP=10.1.1.45
# (Optional) Define additional VPN users
# - Uncomment and replace with your own values
# - Usernames and passwords must be separated by spaces
# 配置额外的用户名和密码
VPN_ADDL_USERS=用户2 用户3
VPN_ADDL_PASSWORDS=用户2的密码 用户3的密码
# (Optional) Use alternative DNS servers
# - By default, clients are set to use Google Public DNS
# - Example below shows using Cloudflare's DNS service
VPN_DNS_SRV1=1.1.1.1
VPN_DNS_SRV2=223.6.6.6
EOF
|
启动docker
1
2
3
4
5
6
7
8
9
10
| docker run \
--name ipsec --network=host \
--env-file /root/ipsec.env \
--restart=always \
-v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
|
查看状态
1
| docker exec -it ipsec ipsec status
|
查看用户链接
1
| docker exec -it ipsec ipsec whack --trafficstatus
|
测试和公网访问
主路由上 或者 dmz上,创建 端口映射 500 和4500 两个端口的 udp即可。
备份
lxc 容器,直接在pve后台备份即可
更多
查看作者的:https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/docs/advanced-usage-zh.md