端口转发,iptables apt-get无法正常工作

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

 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 

我的networking也与:

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

现在的问题是,如果我这样redirect端口80和443,apt-get会抛出404错误,当我从VM(在我的门后面)使用它。

我怎样才能redirect端口到我的虚拟机仍然apt-get工作? 我究竟做错了什么 ?

谢谢,

您将所有数据包redirect到端口80和443到您的guest虚拟机,包括它自己的数据包。 添加一个

 -i eth0 

条件到您的DNAT规则。

你可以检查(与tcpdump)在networking服务器上发生了什么? 我假设缺less这样的一个规则(假设eth1是你的内部接口):

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

没有这个客户端试图连接到1.2.3.4,网关将数据包偏转到10.0.43.113,networking服务器看到来自客户端的连接(例如10.0.43.112),从而将其答复发送到10.0.43.112,并且已经发送到1.2.3.4,从10.0.43.113得到一个答复只是去“WTF?”…但与SNAT的networking服务器响应网关,网关重写源地址和目的地址,大家都很开心。