如何配置 NetBSD 以接受 VLAN 标记数据包

如何配置 NetBSD 以接受 VLAN 标记数据包

我正在尝试设置一个具有静态 IP 的 NetBSD 安装,该 IP 位于 vlan 上。路由器设置为仅允许其他 vlan 访问此 vlan,但不允许反过来。因此,NetBSD 安装应该能够 ping 外部世界并响应其他 vlan 上的设备的 ping。这与无法访问具有静态 IP 且网关为 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

并重新启动,但结果相同。我通过 vlan3 分配了 192.168.0.2,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。

我不确定网络接口是否以错误的顺序加载,或者是否存在我不知道的默认启用的防火墙/数据包过滤器,但我不知道哪里出了问题。

答案1

除了拥有 /etc/ifconfig.vlan3 并为 vlan3 设置 ip 之外,我还需要做的是在 vlan 接口上添加默认路由,并使用所选的 vid(在本例中为 3)。我不需要 ifconfig.vlan1 和 ifconfig.vlan2 文件。

在我发布持久设置的说明之前,对于那些想要了解的人,可以暂时运行为指定接口添加默认路由route add default <gateway ip> -ifp <interface>

首先,要配置默认路由以在启动时使用特定的接口,请更改 /etc/rc.conf(或 rc.local,我没有测试 rc.local,但它应该可以工作)以添加-ifp <interface>(行应类似于defaultroute="<gateway ip> -ifp <interface>)。

接下来需要在启动时创建 vlan 并分配一个 ip。无论你是否在 rc.conf/rc.local 或 ifconfig 中配置父接口(以太网/wifi/等...),都不要为其分配 ip 地址。当我使用分配给 vlan3 和主接口的 ip 进行测试时,我没有遇到任何问题,但你可能遇到一些问题。

/etc/ifconifg.vlan3: create vlan 3 vlanif bce0 up <static ip in vlan> netmask 255.255.255.0

然后service network restart(确保销毁或删除您不想要但仍配置为在启动时启动的任何接口的 IP)或重新启动机器。

相关内容