服务器1是Wireguard服务器(监听)。其Wireguard接口wg0
IP为10.100.100.1。
服务器 2 是通过 Internet 连接到服务器 1 的 Wireguard 客户端。其 Wireguard 接口的 IP 地址为 10.100.100.2。
有没有什么方法可以从服务器 2 以编程方式确定服务器 1 上接口的 IP 地址?也就是说,我想从服务器 2 以编程方式获取该值10.100.100.1
。
编辑:值得注意的是,隧道的两端都运行 Linux,因此无需担心 Windows。
这对我来说很重要,因为我正在客户端编写一些脚本来设置一些复杂的路由和 NAT 规则,并且我需要知道来自服务器的数据包通过 Wireguard 隧道到达客户端的 IP 地址。换句话说,我需要对来自的数据包进行一些操作10.100.100.1
。我想以编程方式执行此操作,因为我想复制此设置,并且我不喜欢在脚本中对隧道主机接口 IP 地址进行硬编码的想法。
我不想简单地匹配进入客户端的数据包,wg0
因为根据我的高级路由设置,可能会有其他源 IP 的数据包进入。例如,数据包可能通过10.100.100.3
隧道从另一台客户端计算机进入。换句话说,来自隧道服务器本身的数据包需要与从服务器路由到隧道的数据包区别对待。
答案1
coredns
有一个插件:工作组
wgsd 通过 DNS-SD (RFC6763) 语义提供 WireGuard 对等信息。这可以动态发现 WireGuard 端点寻址(IP 地址和端口号),同时还具有支持 UDP 打洞的 NAT 到 NAT WireGuard 连接的额外优势。
coredns
podman
以非特权用户身份在无根只读容器中完美运行。官方 docker 镜像。我已经在接口coredns
上监听了wireguard
。- 用作
slirp4netns
网络podman run
在 rootless 中记录正确的源 ippodman
。