虛擬化與母雞

PVE 母雞網絡卡配置:橋接與路由模式、額外 /24 IP 段、MAC 繫結與 IPv6 子網設定

6 個步驟 9 分鐘閱讀 44 次閱讀 0
本文目錄

Proxmox VE 母雞上的 VPS 故障,大多數是網路問題:小雞 ping 不通閘道器、額外的 /24 在母雞上能用但小雞裡不通、IPv6 始終沒有響應。解決方法取決於機房以何種方式交付 IP 地址。本文介紹兩種常見的交付模式:橋接(on-link)和路由(routed),給出各自對應的 /etc/network/interfaces 配置,講解 MAC 繫結的 IP、額外 /24 IP 段和 IPv6 子網,以及如何驗證和排錯。

網路配置一旦寫錯,SSH 和 Web 管理介面都會斷開。請保持 IPMI/KVM 控制臺可用,修改前先備份 /etc/network/interfaces,並在能連上控制臺的情況下用 ifreload -a 應用更改。

步驟 1:確認 IP 的交付方式

交付模式特徵小雞如何聯網
橋接 / on-linkIP 段自帶閘道器且閘道器在段內(例如 203.0.113.0/24 的閘道器為 203.0.113.1),與伺服器處於同一網路接在 vmbr0 上的小雞直接使用機房閘道器
路由機房把 IP 段路由到伺服器的主 IP,段內沒有閘道器母雞充當路由器,小雞以母雞作為閘道器
MAC 繫結只允許伺服器自身的 MAC(或已登記的虛擬 MAC)為這些 IP 傳送流量母雞上使用路由模式,或為每台小雞登記一個虛擬 MAC

伺服器的交付資訊中列出了每個 IP 段的閘道器和子網掩碼。如果沒有註明某個 IP 段是路由還是 on-link,請在配置前先諮詢技術支援;靠猜往往要浪費好幾個小時。

步驟 2:橋接模式(閘道器在 IP 段內)

物理網絡卡作為 vmbr0 的埠,母雞自身的 IP 移到網橋上。接在 vmbr0 上的小雞就像一台臺獨立伺服器一樣,直接處在機房網路中。

# /etc/network/interfaces  (main IP 198.51.100.10/24, gateway 198.51.100.1)
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 198.51.100.10/24
    gateway 198.51.100.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

以 on-link 方式交付的額外 IP 段(例如閘道器為 203.0.113.1 的 203.0.113.0/24)無需在母雞上做任何修改:小雞接在 vmbr0 上,配置該段中的地址和該段的閘道器即可,例如 ip=203.0.113.11/24,gw=203.0.113.1。

步驟 3:路由模式(IP 段路由到主 IP)

當機房把 203.0.113.0/24 路由到你的主 IP 時,把這個段放在一個不連線任何物理網絡卡的內部網橋上,母雞使用段內第一個地址作為小雞的閘道器,並開啟轉發。

# /etc/network/interfaces  (vmbr0 as in Step 2, plus:)
auto vmbr1
iface vmbr1 inet static
    address 203.0.113.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/80-forward.conf
sysctl --system
ifreload -a

小雞接在 vmbr1 上,使用 203.0.113.2–254 的地址,閘道器為 203.0.113.1。由於母雞佔用了 .1,網路地址和廣播地址也保留不可用,一個路由的 /24 可提供 253 個小雞可用地址。流量以小雞自己的源 IP 經母雞主網絡卡發出,不涉及 NAT。

步驟 4:MAC 繫結的 IP

有些網路只接受來自伺服器自身 MAC 地址的 IP 流量。橋接的小雞各自有獨立的 MAC,因此它們的資料包會被丟棄,表現為配置看起來沒錯卻“沒有網路”。有兩種解決辦法:

  • 路由模式:請機房把 IP 段路由到伺服器主 IP,然後按步驟 3 配置,這樣所有流量都通過母雞自身的 MAC 地址發出。
  • 虛擬 MAC:如果機房提供虛擬 MAC,為每個 IP 申請一個 MAC 並設定到小雞網絡卡上:qm set 101 --net0 virtio=02:00:00:AA:BB:CC,bridge=vmbr0。

步驟 5:為小雞配置 IPv6 子網

如果 IPv6 子網(例如 /64 或 /56)是路由到母雞的,處理方法與步驟 3 的路由 IPv4 段完全相同:在 vmbr1 上配置該子網中的一個地址,開啟 IPv6 轉發,並以該地址作為小雞的閘道器。

# /etc/network/interfaces: add an IPv6 stanza to vmbr1
iface vmbr1 inet6 static
    address 2001:db8:200::1/64

echo 'net.ipv6.conf.all.forwarding = 1' > /etc/sysctl.d/81-ipv6-forward.conf
sysctl --system
ifreload -a

# VM configuration (cloud-init)
qm set 101 --ipconfig0 ip=203.0.113.11/24,gw=203.0.113.1,ip6=2001:db8:200::11/64,gw6=2001:db8:200::1

注意:開啟轉發後,Linux 會忽略上聯口收到的路由通告(RA),因此母雞自己的 IPv6 預設路由必須在 vmbr0 上靜態配置(即新增一段 iface vmbr0 inet6 static 配置,寫明 address 和 gateway)。

如果你只有一個位於上聯口的 on-link /64(機房路由器期望通過鄰居發現直接找到每個地址),那麼接在獨立網橋上的小雞將無法被訪問,除非母雞代替它們響應鄰居發現(NDP 代理,例如使用 ndppd),並且仔細調整路由。更簡單可靠的做法是向機房申請一個路由到母雞的子網;IMIDC 技術支援可以告訴你的伺服器屬於哪種情況。

步驟 6:應用配置並驗證

cp /etc/network/interfaces /root/interfaces.bak.$(date +%F)
ifreload -a

ip -br addr          # addresses on vmbr0 / vmbr1
ip route             # default route via the provider's gateway
bridge link          # which ports and VM taps belong to which bridge

# Watch ARP and traffic for one VM address while it pings out
tcpdump -ni vmbr0 host 203.0.113.11

# From inside the VM
ping -c3 203.0.113.1   # gateway
ping -c3 1.1.1.1       # internet
ping -c3 google.com    # DNS

如果小雞能 ping 通閘道器但無法訪問外網,說明上遊丟棄了它的流量(MAC 繫結、缺少路由或子網掩碼錯誤)。如果連閘道器都 ping 不通,請檢查網橋、小雞的 IP 和字首,以及 Proxmox 防火牆的 IP 過濾是否放行了該地址。

常見問題

應該用橋接還是路由?

按機房的交付方式來定。IP 段自帶 on-link 閘道器時,橋接最簡單。IP 段路由到主 IP 時必須使用路由模式;IP 與 MAC 繫結時,路由模式也是更穩妥的選擇。

同一台母雞上可以同時跑公網 IP 小雞和 NAT 小雞嗎?

可以。公網 IP 小雞放在 vmbr0 或 vmbr1 上,NAT 小雞放在單獨的內網網橋上,具體參見 Proxmox VE NAT 網路配置。

IMIDC 的 IP 段是橋接交付還是路由交付?

取決於機房和伺服器。閘道器和子網掩碼都寫在交付資訊中;如有任何不清楚的地方,請提交工單,我們會確認交付模式並協助你完成配置。

如果按以上步驟操作後問題仍未解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上母雞伺服器 IP、你的 IP 段、/etc/network/interfaces 的內容以及 ip -br addr 和 ip route 的輸出,方便工程師快速定位。

這篇文章有幫助嗎?

相關教程