将所有端口从一个本地 IP 地址转发到本地主机,同时还允许本地主机使用该 IP 地址

Forward all ports from one local IP address to localhost, while also allowing localhost to use that IP address

我正在尝试设置 WireGuard,以便我可以在 B 上访问 A 的本地主机。但是,这是不可能的,所以我想到了将 10.200.200.1(A 的 WireGuard IP)映射到 127.0.0.1 使用

sudo iptables -t nat -A  PREROUTING -d 10.200.200.1 -j DNAT --to-destination 127.0.0.1
sudo iptables -t nat -A POSTROUTING -s 127.0.0.1 -j SNAT --to-source 10.200.200.1

这有效(当 B 在 Wireguard 中请求 10.200.200.1:2001 时,它实际上从 A 的角度请求 127.0.0.1:2001),但 A 无法访问 10.200.200.1:2001。我该如何解决?

编辑:sudo iptables -t nat -A OUTPUT -d 10.200.200.1 -j DNAT --to-destination 127.0.0.1 可以在 A 上公开 10.200.200.1,但现在 B 无法连接到 10.200.200.1

好的,我想通了 -- 这包括三个部分:

sysctl

sudo sysctl -w net.ipv4.conf.all.route_localnet=1

sudo sysctl -w net.ipv4.ip_forward=1

为了在 A 上工作:

sudo iptables -t nat -A OUTPUT -d 10.200.200.1 -j DNAT --to-destination 127.0.0.1

要在 B 上工作的连接:

sudo iptables -t nat -A  PREROUTING -d 10.200.200.1 -j DNAT --to-destination 127.0.0.1

您可能还需要:

sudo iptables -t nat -A POSTROUTING -s 127.0.0.1 -j SNAT --to-source 10.200.200.1