如何配置 NetBSD 以接受 vlan 標記的數據包
我正在嘗試使用 vlan 上的靜態 ip 設置 NetBSD 安裝。路由器設置為只允許其他 vlan 訪問此 vlan,反之則不允許。因此,NetBSD 安裝應該能夠 ping 外部世界並響應其他 vlan 上的設備的 ping。這與Unable to reach host with static ip and gateway is vlan - Debian 10只是不同的作業系統。我能夠讓那台機器使用相同的網關/伺服器/網路遮罩值。只是一個快速的總結……
路由器配置:
IP: 192.168.2.1 Netmask: 255.255.255.0 DHCP range: 192.168.2.2 - 192.168.2.10
這個特定的 VLAN 配置(VLAN 3):
VLAN IP: 192.168.0.1 Netmask: 255.255.255.0 DHCP range: 192.168.0.10 - 192.168.0.254
NetBSD/伺服器配置:地址 192.168.0.2 網路遮罩:255.255.255.0 網關:192.168.0.1
vlan 的手冊頁說要執行以下設置(適用於目前設置):
ifconfig vlan3 create ifconfig vlan3 vlan 3 vlanif bce0
但是,我無法 ping 外部世界,也無法響應來自其他 vlan 的 ping。然後我嘗試這樣做:
create vlan 3 vlanif bce0
並重新啟動,但這產生了相同的結果。我通過將 192.168.0.2 分配給 vlan3
ifconfig vlan3 192.168.0.2 netmask 255.255.255.0
得到了相同的結果。我不確定是否缺少其他 vlan 干擾所以我創建了 ifconfig.vlan1 - ifconfig.vlan3 然後重新啟動:
/etc/ifconfig.vlan1:
create vlan 1 vlanif bce0 up
/etc/ifconfig.vlan2:
create vlan 2 vlanif bce0 up
/etc/ifconfig.vlan3:
create vlan 3 vlanif bce0 up
但我得到了同樣的結果。我給vlan3分配了192.168.0.2,結果還是一樣。
我嘗試創建一個 tap (
ifconfig tap0 create
) 然後分配它 192.168.0.2 然後創建 vlan3 (我事先銷毀了 vlan3 )然後做ifconfig vlan 3 vlanif tap up
,但結果是一樣的。如果我回到 /etc/ifconfig.vlan1-3 文件,沒有分配給任何 vlan 介面的 ip
tcpdump -vv -e vlan
,然後從其他 vlan ping 192.168.0.2,這是一個片段:05:35:06.932765 90:a7:c1:b6:37:44 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 3, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.0.2 tell 192.168.0.1, length 42 05:35:07.932679 90:a7:c1:b6:37:44 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 3, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.0.2 tell 192.168.0.1, length 42
這是原始 tcpdump:https ://web.archive.org/web/20220112142651/https://tmpfiles.org/dl/188092/tcpdumpout
我確保我的預設路由是 192.168.0.1。
我不確定網路介面是否以錯誤的順序載入,或者是否有預設情況下打開的防火牆/數據包過濾器,我不知道,但我不知道出了什麼問題。
除了擁有 /etc/ifconfig.vlan3 和為 vlan3 設置 ip 之外,我需要做的是在 vlan 介面上添加預設路由以及選擇的 vid(在本例中為 3)。我不需要 ifconfig.vlan1 和 ifconfig.vlan2 文件。
在我發布持久設置的說明之前,對於那些想知道的人,為指定的介面添加預設路由臨時執行
route add default <gateway ip> -ifp <interface>
。首先,配置 defaultroute 以在啟動時使用特定介面更改 /etc/rc.conf(或 rc.local,我沒有測試 rc.local,但它應該可以)添加
-ifp <interface>
(行應該看起來像defaultroute="<gateway ip> -ifp <interface>
)。接下來需要創建 vlan 並在啟動時分配一個 ip。無論您是否在 rc.conf/rc.local 或 ifconfig 中配置父介面(ethernet/wifi/etc…)。不要為其分配IP地址。當我使用分配給 vlan3 的 ip 和我的主界面進行測試時,我沒有任何問題,但可能有一些適合你。
/etc/ifconifg.vlan3:
create vlan 3 vlanif bce0 up <static ip in vlan> netmask 255.255.255.0
然後
service network restart
(確保銷毀或刪除您不想要但仍配置為在啟動時啟動的任何介面的 ips)或重新啟動機器。