我有一台安装了 Proxmox OS 的服务器,里面有一些虚拟机。
按照网络上的指南,我修改了 /etc/network/interfaces,如下所示,创建一个名为 vmbr0:0 的虚拟接口。
然后我通过此命令将虚拟适配器连接到真实适配器
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o vmbr0 -j MASQUERADE
一切正常,直到我尝试使用此命令将端口 80 转发到我的 apache VM
iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
Apache VM 具有 10.0.0.2 IP,它可以正确 ping 网络,并且 Apache 在网络上运行良好,但 apt-get 不再工作,除非我禁用 PREROUTING 规则,否则每个源都会出现 404 错误。
我该如何解决这个问题?提前感谢大家
这是 /etc/network/interfaces 文件
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto vmbr0
iface vmbr0 inet static
address MY_PUBLIC_IP_ADDRESS
netmask 255.255.255.0
gateway MY_GATEWAY
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr0:0
iface vmbr0:0 inet static
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
答案1
尝试通过添加 --daddr MY_PUBLIC_IP_ADDRESS 选项来使预路由规则更加精确
apt-get 使用 http,你基本上用这条预路由规则将所有请求 DNAT 到你的 apache VM