我所说的内部流量仅指源自服务器本身(而非 LAN 或其他服务器)的流量。我有一个云 VM,其中云供应商提供的公共 IP 未直接连接到 VM。假设公共 IP 为 。VM8.8.8.8
的实际 IP 为192.168.1.2
。有一个服务正在监听192.168.1.2:443
。公共客户端可以通过 访问它8.8.8.8:443
。服务器自己的客户端可以通过 和 访问192.168.1.2:443
它8.8.8.8:443
。
我假设如果服务器自己的客户端向 发出请求,8.8.8.8
它将首先转到服务器的默认网关,然后网关将对其进行 NAT 并将其转发回192.168.1.2
。所以我的问题是,如果内部客户端向 发出请求8.8.8.8
,如何将其直接转发到 而192.168.1.2
无需流量离开服务器,而客户端仍然认为它正在与 对话8.8.8.8
。
操作系统版本为 Debian 11(内核 5.10.0-26-cloud-amd64)
答案1
将相同的 NAT 规则添加到服务器自己的防火墙。您需要将它们放在“OUTPUT”链中,而不是通常的“PREROUTING”(但仍在“nat”表中)。例如,在 nftables 中:
表 ip nat { 链式输出 { 键入 nat hook 输出优先级目的地; ip daddr 8.8.8.8 tcp dport 443 dnat 到 192.168.1.2 } }
iptables 的等效项很可能是:
iptables-t nat -A 输出-d 8.8.8.8 -p tcp --dport 443 -j基因转移酶...