Linux

OpenBSD:子網外的網關(在 Linux 中工作)

  • May 9, 2020

我們需要設置一個 OpenBSD 主機以使用其子網之外的預設網關。這就是我在 Linux(不是實際的 IP)上需要做的所有事情來實現它:

ifconfig eth0 33.33.33.33/31 up
route add 33.33.33.254 dev eth0
route add default gw 33.33.33.254

問題是我們不知道 OpenBSD 中中間命令的正確等價物。手冊頁說:

如果可以通過不需要中間系統充當網關的介面直接到達目的地,則應指定 -iface 修飾符;

可悲的是,我們似乎無法弄清楚如何使它與它一起工作。這是 OVH 伺服器上的虛擬主機,他們有許多其他作業系統的文件顯示如何在此處執行此操作:http: //help.ovh.co.uk/BridgeClient

這是一個舊執行緒,但在這裡。

碰巧的是,我在 OVH 的子公司 SoYouStart 上執行的 ESXi 6.0 上執行了許多 OpenBSD 虛擬機。那裡的網路設置與 OVH 相同,我認為,雖然很奇怪,但它的主要目的是通過人為限制廣播域來盡可能地消除 ARP 流量,並且不需要使用 VLAN。

就我而言,我向 OVH 請求了額外的 IP 地址,它們來自完全不同的範圍。對於這裡的討論,假設這些是我的設置:

  • 我的主 IP 地址(ESXi 主機正在使用):213.0.113.78/32
  • VM 來賓的額外 IP 地址範圍:192.0.2.64/30
  • 以上所有的預設網關:213.0.113.254
  • 請注意 - 由於 OVH 網路的配置方式,所有主機都需要使用主機網路遮罩 (255.255.255.255)

要在 OpenBSD 主機上配置路由,我需要這樣做:

ifconfig vmx0 inet 192.0.2.64 255.255.255.255 
route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0 
route add -inet default 213.0.113.254

為了在開始時完成所有這些,我忽略該/etc/mygate文件並將以下內容放入/etc/hostname.vmx0

inet 192.0.2.64 255.255.255.255
!sleep 2
!route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0
!route add -inet default 213.0.113.254

您會注意到該sleep命令 - 出於某種原因,這在 OpenBSD 5.9 上是必需的,但以前不是。如果沒有,將不會執行sleep第一個 to命令,因此您的路由將無法正確配置。route

這使用以下技巧起作用:

  • 我們在介面上配置IP地址
  • 使用第一個route命令,我們將網關的 IP 地址(213.0.113.254)轉換為連結地址(MAC 地址);這是由-llinfo選項完成的;
  • 在同一route命令中,使用該-link選項,我們將連結地址安裝到路由表中,並使用-iface vmx0我們告訴核心該連結地址可通過哪個網路介面訪問;交換機將其-static標記為手動插入到路由表中的條目
  • 第二個route命令現在可以成功,因為到預設網關的路由現在已知

我在上面的設置中確實遇到了一件事,但我還沒有解決方案,那就是四個 OpenBSD 主機之一,以完全相同的方式配置,執行完全相同的作業系統版本和完全相同的核心建構,並且即使每 24 小時左右在同一台 VMware 主機上執行,似乎也從其路由表中“失去”了那條神奇的路由……

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