在所述场景中这里,我最终在客户端中得到了这个配置(端点 WG 服务器有两个公共 IP)
[Interface]
Address = <ip_to_use>/32
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[Peer]
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
AllowedIPs = 0.0.0.0/0
Endpoint = <wg_server_ip>:51820
PersistentKeepalive = 10
现在我想从 Wireguard 隧道中排除某个用户的所有进程或者所有数据包(发往和来自)特定端口。
我注意到,这可以使用 WG 本身设置的 fwmark 来完成,而不需要像建议的那样使用其他标记这里。
这是 Ubuntu 16.04 上的 IPtables 1.6。如何使用 wg-quick 创建的标记(每个用户或每个端口)从 WG 隧道中排除?
答案1
我发现的解决方案是升级到 Ubuntu 18.04.1,它启用了以下新功能来用一行代码处理该问题:
PostUp = ip rule add uidrange 0-0 lookup main
PostDown = ip rule del uidrange 0-0 lookup main
运行内核为 4.15 的 16.04.5 不允许uidrange
。使用 uidrange 还要求 iproute2 的版本高于 Xenial repo 提供的版本。仅使用 Iptables 1.6.1 是不够的。