假设我在主机的/ etc / network / interfaces文件中具有以下内容,并且没有其他路由条目或iptables规则:
auto lo
iface lo inet loopback
iface ens3 inet manual
auto vmbr0
iface vmbr0 inet static
address 1.2.3.4
netmask 255.255.255.0
gateway 1.2.3.1
bridge_ports ens3
bridge_stp off
bridge_fd 0
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 25 -j DNAT --to 10.10.10.101:25
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 25 -j DNAT --to 10.10.10.101:25
我还有两个来宾系统作为主机上的LXC容器运行:
服务在端口1的来宾1上运行。
现在,我希望访客2与访客1的服务联系。为此,我可以使用10.10.10.101:25,它也可以正常工作。
但是,我希望将呼叫发送给主机,并且主机决定将请求转发给哪个来宾。但是通过带有1.2.3.4:25的公共IP地址的呼叫无法正常工作。通过IP地址可以访问主机,但是显然不会将请求转发给来宾1。由于主机系统的端口25上没有服务,因此答案为“连接被拒绝”。