我的路由器设置可以将转发端口80移植到运行caddy文件服务器的机器上。我可以成功地从局域网卷曲文件服务器,但我得到一个超时时,卷曲从广域网。运行caddy的机器还通过NetworkManager运行wireguard以连接到外部VPN。如果关闭wireguard连接,就可以从广域网中压缩文件服务器。
这个答案说我的AllowedIps=0.0.0.0,::0/0正在通过外部VPN路由所有流量。我如何设置wireguard来路由除了端口80和443流量通过VPN的所有东西?
发布于 2022-06-13 07:14:55
除了端口80和443之外,不可能配置Wireguard来路由所有的东西。这是因为查看OSI网络模型,端口位于与IP流量不同的层上。
但这个问题有两个(可能更多)答案:第一个答案是限制通过Wireguard隧道的路线。评估哪些IP网络需要通过Wireguard隧道并在AllowedIps中进行配置。
第二个答案更高级,但您可以在路由器上配置一个source NAT,它将传入的广域网IP地址隐藏到路由器的IP上。这意味着文件服务器认为WAN流量是来自路由器的流量,并将向路由器发回一个回复,后者将其发送回WAN。
发布于 2022-06-15 11:53:57
因为Wireguard使用的是另一个路由表,而不是默认的路由表,所以您可以使用ip rule来排除某种类型的流量。Wireguard将在将其重定向到本地之后,但在它转到main之前,添加一个规则来匹配流量。
然后,您应该能够在wireguard规则之前添加一个规则,该规则将将通信量从端口8043和443 (从服务器的回复)重定向到主表。它应该很简单,如:
ip rule add sport 80 table main
ip rule add sport 443 table main您可以通过以下方式验证规则放在wireguard规则之前:
ip rule虽然,如果您想使其持久,您可能希望在配置文件中添加一个PostUp操作:
PostUp=ip rule add sport 80 table main && ip rule add sport 443 table main
PreDown=ip rule del sport 80 table main && ip rule del sport 443 table main如果您只使用NetworkManager,则可以使用dispatcher.d放置脚本,以便在网络连接或断开连接时执行脚本。
#!/bin/bash
echo 'ip rule del sport 80 table custom
ip rule del sport 443 table custom
ip rule add sport 80 table custom
ip rule add sport 443 table custom' > /etc/NetworkManager/dispatcher.d/02-wg_exceptions.sh
chmod +x /etc/NetworkManager/dispatcher.d/02-wg_exceptions.shhttps://unix.stackexchange.com/questions/705962
复制相似问题