Networking
將埠從一個橋接介面轉發到主機作業系統上的來賓容器
我有一個簡單的配置。
所以我有一個結構:
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中做一個埠轉發規則:iptables -t nat -A PRETROUTING -i eth0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987
所以,容器 1 在外部和內部網路中都有一個介面,然後它可以使埠轉發。