运用WireGuard实现内网穿透
因为中国电信的相关优惠原因,就换了一下电信的套餐,然后我的公网IP,不见了呀,现在公网IP要钱了呀😭
然后就只能找一种方案穿透回家,以前比较常接触的是frpc的方式,需要一一对应端口,太麻烦的东西肯定就不用啦
最后选了 WireGuard 的方案
Fork wg-easy 仓库
通过各种学习了 WireGuard 内网穿透的关键点
了解到 WireGuard 的简单配置在 wg-easy 的加持下,更加简单,但内网穿透中有个关键的 AllowIPs 设置却没有在 GUI界面 中可配置。
所以我就直接 fork 了这个项目,在项目的基础上做些小改造。
comment 记录
👔 support edit allowIPs for setting intranet penetration [@13779ff]
项目链接:
已将 wg-easy 的镜像通过 Github Action 同步推送至 Docker hub 镜像仓库
docker pull kwokronny68/wg-easy
🚀 部署WireGuard
以下工作准备就绪后就可以开始部署啦
- 公网服务器
- 服务器安装了docker
- 防火墙为 wg-easy 放开需要的端口
🐳 docker-compose 方式部署
# docker-compose.yml
version: "2.1"
services:
wg_easy:
image: kwokronny68/wg-easy:latest
container_name: wg-easy
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- WG_DEFAULT_ADDRESS=[默认IP, 例如: 192.168.12.x]
- WG_POST_UP=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE
- WG_POST_DOWN=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o %i -j MASQUERADE
- WG_HOST=[服务器IP/域名]
- WG_CONFIG_PORT=[端口]
- WG_ALLOWED_IPS=[允许通信IPs, 默认是0.0.0.0,内网穿透的话还是要设置一下 例如: 192.168.12.0/24]
- WG_PERSISTENT_KEEPALIVE=15
- PASSWORD=[替换成密码]
ports:
- 51820:51820/udp
- 51821:51821/tcp # GUI界面端口
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
volumes:
- ./config:/etc/wireguard
⚒️ 配置 wg-easy
-
通过访问 服务器:51821 输入配置中设置的密码 进入到 wg-easy 的 GUI管理界面
-
New 一个 Client,假设取名为 Router
-
为 Router 设置 allowedIPs 为 家里的IP段 如:192.168.52.0/24
-
将配置文件下载并配置到路由器中
-
再 New 一个 Client,假设为公司的电脑设备,并下载配置文件,并配置到 wireguard 并连接
-
连接成功后,就可以直接通过 IP 端访问家里的服务啦