我有一个简单的配置。
所以我有一个结构:
- Proxmox 主机操作系统 (vmbr0, vmbr1)
- 容器 1 (eth0)
- 容器 2 (eth0)
Proxmox 网络:
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
容器 1 网络:
eth0
Link encap: Ethernet
inet addr: 136.211.123.180
Bcast: 136.211.123.180
Mask: 255.255.255.255
容器 2 网络:
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 地址,因为通常所有端口都应该转到该服务器。- 除了一些我想转发到另一个容器的东西。
那么如何将容器 1 的另一个静态 IP 地址的请求转发到容器 2 呢?
容器 2 是 TS³ 容器。容器 1 是“静态 IP 地址”容器。proxmox 主机也有自己的 IP 地址,目前用于所有这些请求。
提前感谢您的任何想法。
我只需在主机操作系统 vmbr0 接口上设置公共 .180 地址,然后在主机操作系统上进行端口转发。
我看不出这里有单独的虚拟机有什么意义。如果你真的想用一个单独的虚拟机做额外的复杂性,那么你可以试试这个。
您的容器 1 网络设置很奇怪,您无法
136.211.123.128/255.255.255.192
从该容器访问网络中的任何其他主机。您应该使用与主机操作系统中相同的网络掩码和广播地址。对于实际的转发,您需要在容器 1 中添加第二个接口,该接口桥接到
vmbr1
. 然后可以在容器1中做一个端口转发规则:所以,容器 1 在外部和内部网络中都有一个接口,然后它可以使端口转发。