OpenBSD:子網外的網關(在 Linux 中工作)
我們需要設置一個 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 主機上執行,似乎也從其路由表中“失去”了那條神奇的路由……