iptables 重定向仅从外部起作用

iptables 重定向仅从外部起作用

我在具有公共 IP(例如:65.12.12.12)的专用服务器上使用 VirtualBox 创建了一个 Kubernetes 集群。

该集群有一个基于子网 192.168.205.0/24 的内部网络,当我部署 Web 应用程序时,它会为其分配一个该子网的 IP。例如,我部署了一个 helloworld Nginx,它被分配了一个私有 IP 192.168.205.100。

现在,从外部世界来看,我无法使用它,curl 192.168.205.100因为它是私有的,所以我尝试将公共 IP(65.12.12.12)映射到这个。

所以我这样做了。

sudo iptables -t nat -A PREROUTING -d 65.12.12.12 -p tcp --dport 80 -j DNAT --to-destination 192.168.205.100:80
sudo iptables -t nat -A PREROUTING -d 65.12.12.12 -p tcp --dport 443 -j DNAT --to-destination 192.168.205.100:443
sudo iptables -t nat -A POSTROUTING -o vboxnet1 -j MASQUERADE

现在一切运行顺利。

从外部我可以获得curl公共 IP 并获取页面,因为它被重定向到私有 IP。

但是,当我在服务器内部时,我无法执行同样的事情,就像它iptables没有被使用一样。

我究竟做错了什么?

答案1

我究竟做错了什么?

… 抱有期望,但不研究事物如何运作?

本地发起的流量不会像外部流量那样遵循相同的路径。PREROUTING您需要使用OUTPUT

答案2

您正在谈论从内部访问外部资源,但只向我们展示您正在工作的 NAT。

尝试iptables -L -v --line-numbers打印整个链的配置并向我们展示其他的。:)

相关内容