Networking

將埠從一個橋接介面轉發到主機作業系統上的來賓容器

  • March 31, 2016

我有一個簡單的配置。

思維導圖一切看起來如何

所以我有一個結構:

  • 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 在外部和內部網路中都有一個介面,然後它可以使埠轉發。

引用自:https://serverfault.com/questions/767188