目标:
我正在尝试设置分割隧道点到站点 WireGuard VPN 连接,以便我可以从本地 Windows PC 客户端连接到远程云资源,就好像我与它们位于同一网络上一样。
网络拓扑:
远程网络有 2 台服务器位于
10.0.0.0/24
子网中。这 2 台服务器的防火墙规则允许所有来自 10.0.0.0/24
和 10.0.1.0/24
子网的 IPv4 TCP、UDP 和 ICMP 流量通过。否则,它只允许传出流量到互联网并阻止任何其他传入流量。此外,允许从互联网到服务器 1 的端口 80/tcp
和 51820/udp
的传入流量。
服务器 1 是位于
10.0.0.249/24
的 Wireguard VPN 服务器,服务器 2 是位于 10.0.0.248/24
的测试服务器。我可以确认两台服务器通过 ping
和 netcat
相互连接。两台服务器都使用 Debian 12。
VPN 服务器设置:
服务器 1 使用以下设置
docker-compose
:
https://github.com/ngoduykhanh/wireguard-ui/raw/master/examples/docker-compose/linuxserver.yml
我使用
nginx
反向代理来使用 VPN 服务器的公共 IP 通过互联网访问仪表板。
运行
docker exec -it wireguard /bin/bash
,然后运行 cat /config/wg0.conf
会产生以下结果:
https://gist.github.com/sepsol/d26eae5da05e646769fb33bc1a9d0d8f
问题:
然后,我在 WIreGuard 客户端应用程序中加载生成的配置,并在连接成功“激活”后,检查我的 PC 的路由表并确认对于到
10.0.0.0/24
子网的所有连接,它将使用 WireGuard Tunnel
界面。但最终当我尝试 ping
或 netcat
服务器 1 或 2 时,我得到 Request Timeout
。
问题:
为什么在建立 VPN 连接后无法确认与远程服务器的连接以及如何修复该问题?
我解决了我的问题。
郑重声明,查看wireguard docker-compose 示例,我的wireguard-ui 问题也通过更改我允许的IP 中包含的wg 服务器接口得到解决。我特别缺少这一部分: