我有我的路由器设置端口转发端口 80 到运行caddy
文件服务器的机器。我可以成功地从 LAN 卷曲文件服务器,但从 WAN 卷曲时出现超时。正在运行的机器caddy
也正在运行wireguard
以NetworkManager
连接到外部 VPN。如果我关闭wireguard
连接,我可以从 WAN 卷曲文件服务器。
这个答案说我AllowedIps=0.0.0.0,::0/0
正在通过外部 VPN 路由所有流量。如何设置 Wireguard 以通过 VPN 路由除端口 80 和 443 流量之外的所有内容?
无法将 Wireguard 配置为路由除端口 80 和 443 之外的所有内容。这是因为查看 OSI 网络模型端口与 IP 流量位于不同的层。
但是这个问题有两个(可能更多)答案:第一个答案是限制通过 Wireguard 隧道的路由。评估哪些 IP 网络需要通过 Wireguard 隧道并在
AllowedIps
.第二个答案更高级,但您可以
source NAT
在路由器上配置一个,将传入的 WAN IP 地址屏蔽为路由器的 IP。这意味着文件服务器认为 WAN 流量是来自路由器的流量,并将向路由器发送回一个回复,路由器将其发送回 WAN。由于 Wireguard 使用的路由表不是默认路由表,因此您可以使用
ip rule
它来排除某种类型的流量。Wireguard 将在流量重定向到本地之后添加一条规则来匹配流量,但在它转到主之前。然后,您应该能够在wireguard 之前添加一条规则,它将流量从端口80 和443(来自您的服务器的回复)重定向到主表。它应该很简单:
您可以使用以下方法验证规则是否放置在wireguard 之前:
虽然,如果你想让它持久化,你可能想在你的配置文件中添加一个 PostUp 操作:
如果您只使用 NetworkManager,您可以使用 dispatcher.d 放置一个脚本,以便在网络连接或断开连接时执行。