Linux

如何將多個子網應用於具有一個 NIC 的伺服器?

  • April 6, 2013

我正在嘗試通過專用伺服器上的一個物理 NIC 路由多個 IP,以與 Proxmox KVM VM 一起使用。我有一個專用伺服器,目前正在執行 Debian 4.4.5-8,有 3 個可用的 IP 地址供使用,將顯示為 176.xxx.xxx.196(主)、176.xxx.xxx.198(在同一子網上)作為主)和 5.xxx.xxx.166(不同的子網)。我目前正在嘗試使用 dedi 路由第三個 IP 地址,以便與我使用 proxmox v2.x 設置的 vps 一起使用,但這樣做真的很難。綁定額外 IP 地址的虛擬介面按預期工作,排除了外部路由問題。

提供商提供了主子網上 IP 地址的以下資訊:

網關:176.xxx.xxx.193

網路遮罩:255.255.255.224

廣播:176.xxx.xxx.223

以及第二個子網上的 IP 地址的以下資訊:

網關:5.xxx.xxx.161

網路遮罩:255.255.255.248

廣播:5.xxx.xxx.167

我用 /etc/network/interfaces 嘗試過的所有東西要麼不起作用,要麼使網路完全無用。

這是文件的目前狀態,它的輔助 IP 地址在同一子網上工作,IPv6 也在工作,但不是第二個子網。

# Nativen IPv6 Schnittstelle
iface eth0 inet6 manual


# Bridge IPv4 Schnittstelle (176.xxx.xxx.193/27)
auto vmbr0
iface vmbr0 inet static
   address 176.xxx.xxx.196
   netmask 255.255.255.224
   gateway 176.xxx.xxx.193
   broadcast 176.xxx.xxx.223
   bridge_ports eth0
   bridge_stp off
   bridge_fd 0
   bridge_maxwait 0
   post-up ip addr add 176.xxx.xxx.198/27 dev vmbr0

auto vmbr1
iface vmbr1 inet static
   address 5.xxx.xxx.166
   netmask 255.255.255.248
   gateway 5.xxx.xxx.161
   broadcast 5.xxx.xxx.167
   bridge_ports eth0
   bridge_stp off
   bridge_fd 0
   bridge_maxwait 0
   post-up ip addr add 5.xxx.xxx.166/29 dev vmbr1

# Bridge IPv6 Schnittstelle (Reichweite: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx::/64)
iface vmbr0 inet6 static
   address xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
   netmask 64
   up ip -6 route add xxxx:xxxx:xxxx:xxxx:xxxx:xxxx dev vmbr0
   down ip -6 route del xxxx:xxxx:xxxx:xxxx:xxxx:xxxx dev vmbr0
   up ip -6 route add default via xxxx:xxxx:xxxx:xxxx:xxxx:xxxx dev vmbr0
   down ip -6 route del default via xxxx:xxxx:xxxx:xxxx:xxxx:xxxx dev vmbr0

通過重新安裝來賓 vm完全解決了這個問題。專用伺服器的提供者為每個訪客分配了 MAC 地址,然後通過 dhcp 為其分配一個 IP 地址,這解決了問題。

您有兩個橋 (vmbr0vmbr1),它們都作為eth0成員,因此您基本上有一個第 2 層域,我懷疑這會引起怪異。您是否嘗試向 VM 公開兩個 NIC?如果是這樣,您應該公開一個 NIC 並將兩個地址附加到 VM 內部的那個。主機應該有一個包含eth0.

由於輔助子網已經有網關,主機不需要充當網關。不要在主機上為輔助子網配置任何地址或路由。在來賓中,將一個輔助 IP 附加到其 NIC,並將預設網關配置為 5.xxx.xxx.161。主機將僅充當第二層橋接器,以允許 VM 到達網關。

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