我有一个简单的configuration。
心智地图如何看起来像一切
所以我有一个结构:
Proxmoxnetworking:
vmbr0 Link encap: Ethernet inet addr: 136.136.136.161 Bcast: 136.136.136.191 Mask: 255.255.255.192 vmbr1 Link encap: Ethernet inet addr: 192.168.1.254 Bcast: 136.136.1.255 Mask: 255.255.255.0
容器1networking:
eth0 Link encap: Ethernet inet addr: 136.211.123.180 Bcast: 136.211.123.180 Mask: 255.255.255.255
容器2networking:
eth0 Link encap: Ethernet inet addr: 192.168.1.1 Bcast: 192.168.1.255 Mask: 255.255.255.0
proxmox的正常iptables看起来像这样。 (TeamSpeak³udp端口9987的例子)
~# iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT udp -- anywhere anywhere udp dpt:9987 to:192.168.1.1:9987 Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 192.168.1.0/24 anywhere
这是通过添加:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j MASQUERADE iptables -t nat -A PREROUTING -i vmbr0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987
现在的问题是如何从容器1向容器2前进?
在请求到达Proxmox主机的那一刻,他们会通过iptables将这个请求转发给容器。 但容器1有一个静态IP地址分配,因为通常所有的端口应该去这个服务器。 – 除了我要转发到另一个容器的less数几个。
那么如何将请求转发到容器1的另一个静态IP地址到容器2呢?
容器2是TS³容器。 容器1是“静态IP地址”容器。 而proxmox主机也有一个自己的IP地址,目前用于所有这些请求。
感谢提前任何想法。
我只需在主机操作系统vmbr0接口上设置公共.180地址,然后在主机操作系统上进行端口转发。
我看不到在这里有单独的虚拟机的点。 如果你真的想要一个单独的虚拟机来增加复杂性,那么你可以试试这个。
您的容器1的networking设置很奇怪,您不能从该容器访问136.211.123.128/255.255.255.192networking中的任何其他主机。 您应该使用与主机操作系统中使用的相同的networking掩码和广播地址。
对于实际的转发,您需要将第二个接口添加到容器1,将其桥接到vmbr1 。 然后,您可以在容器1中创build一个端口转发规则:
iptables -t nat -A PRETROUTING -i eth0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987
因此,容器1在外部和内部networking都有一个接口,然后它可以使端口向前。