使用 iptables 进行端口转发会导致 apt-get 出现 404 错误

使用 iptables 进行端口转发会导致 apt-get 出现 404 错误

我有一台安装了 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

相关内容