在当今的网络环境之中,由于电信套餐发生了变更,公网 IP 不再免费予以提供,这给那些需要远程访问家庭网络的用户带来了一定程度的困扰。以往常常使用的 frpc 方式尽管能够实现内网穿透,但是需要进行一一对应的端口设置,操作起来较为复杂。所以,寻找一种更为便捷的内网穿透方案成为了迫切之需。
WireGuard 作为一种新兴的网络技术,为解决内网穿透问题开辟了新的路径。通过对 WireGuard 进行深入的学习了解到,在 wg-easy 的助力下,其简单配置变得更加易于操作。然而,在实现内网穿透的过程中,关键的 AllowIPs 设置在 GUI 界面里却无法直接进行配置。
`# 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`
为了解决这个问题,作者采用了 fork wg-easy 仓库的办法。在这个项目的基础上进行小幅度的改造,以满足内网穿透的需求。具体的改造内容在 comment 记录中有体现。
配置 wg-easy:
通过访问服务器:51821,输入配置中设置的密码,进入到 wg-easy 的 GUI 管理界面。
新建一个 Client,假设取名为 Router。
为 Router 设置 allowedIPs 为家里的 IP 段,比如:192.168.52.0/24。
将配置文件下载下来并配置到路由器中。
通过这样的方式,作者成功地实现了利用 WireGuard 进行内网穿透,为那些面临公网 IP 缺失问题的用户提供了一种可行的解决方案。这种方法不但避免了繁琐的端口对应操作,还提升了内网穿透的效率和便捷性。
总之,WireGuard 结合适当的改造,可以成为一种强大的内网穿透工具,帮助用户在没有公网 IP 的情况下,依然能够轻松地远程访问家庭网络。