端口转发,iptables apt-get 不起作用

端口转发,iptables apt-get 不起作用

我目前正在设置我的服务器。我使用proxmox类似于vmware。需要知道的重要一点是,我只有 1 个外部 IP 地址。在我的服务器上,我apache使用以下命令将端口 80 和 443 转发到虚拟主机:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.43.113
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 10.0.43.113

我的网络还与以下内容相关:

iptables -t nat -D POSTROUTING -s '10.0.43.0/24' -o eth0 -j MASQUERADE

现在的问题是,如果我以这种方式重定向端口 80 和 443,则当我从 VM(我的门后面)使用它时,apt-get 会抛出 404 错误。

如何在 apt-get 仍可正常工作的情况下将端口重定向到我的虚拟机?我做错了什么?

谢谢,

答案1

将所有数据包重定向到端口 80 和 443 到您的客户机,包括其自己的数据包。添加

-i eth0 

条件到您的 DNAT 规则。

答案2

您能用 tcpdump 检查一下 Web 服务器上发生了什么吗?我假设缺少这样的规则(假设 eth1 是您的内部接口):

iptables -t nat -A PREROUTING -i eth1 -o eth1 -j SNAT --to $INTERNAL_GATEWAY_IP

如果没有这个,客户端会尝试连接到 1.2.3.4,网关会将数据包转向 10.0.43.113,Web 服务器看到来自客户端的连接(例如 10.0.43.112),因此将其回复发送到 10.0.43.112,而客户端发送到 1.2.3.4 并收到来自 10.0.43.113 的回复后,就会说“WTF?”... 但是有了 SNAT,Web 服务器就会响应网关,网关会重写源地址和目标地址,每个人都会很高兴。

相关内容