Vlan

如何配置 NetBSD 以接受 vlan 標記的數據包

  • January 20, 2022

我正在嘗試使用 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 分配給 vlan3ifconfig 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)或重新啟動機器。

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