有没有办法获取 WireGuard 隧道另一端接口的 IP 地址?

有没有办法获取 WireGuard 隧道另一端接口的 IP 地址?

服务器1是Wireguard服务器(监听)。其Wireguard接口wg0IP为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有一个插件:工作组


wgs​​d 通过 DNS-SD (RFC6763) 语义提供 WireGuard 对等信息。这可以动态发现 WireGuard 端点寻址(IP 地址和端口号),同时还具有支持 UDP 打洞的 NAT 到 NAT WireGuard 连接的额外优势。


  • corednspodman以非特权用户身份在无根只读容器中完美运行。官方 docker 镜像。我已经在接口coredns上监听了wireguard
  • 用作slirp4netns网络podman run在 rootless 中记录正确的源 ip podman

相关内容