我用Linux开发了一个服务器。该服务器是一个 DHCP VLAN 服务器,由两个 VLAN 110 和 120 组成。我试图让它在客户端工作。
我的/etc/network/interfaces
VLAN 110
auto lo
iface lo inet loopback
#VLAN 110
auto enp0s9.110
iface enp0s9.110 inet static
address 192.168.110.1
netmask 255.255.255.0
network 192.168.110.0
broadcast 192.168.110.255
vlan_raw_device enp0s9
我的/etc/default/isc-dhcp-server
IPv4 接口
INTERFACESv5="enp0s9.110 enp0s10.120"
我/etc/dhcp/dhcpd.conf
的 VLAN 110 配置
subnet 192.168.110.0 netmask 255.255.255.0 {
option domain-name testdom.local;
option domain-name-servers ns1.testdom.local;
range 192.168.110.60 192.168.110.100;
option routers 192.168.110.1;
option broadcast-address 192.168.110.255;
}
我的客户端位于 Ubuntu 终端上,用于 VLAN 110
# VLAN 110 for Ubuntu Client
auto enp0s8
iface enp0s8 inet dhcp
gateway 192.168.110.1
重新启动客户端机器...
我跑了ip addr show enp0s8
,得到了地址行
inet 169.254.9.100/16 brd 169.254.255.255 scope link enp0s8:avahi
答案1
因为,正如OP的评论中所说,客户端应该获得标记的帧,然后由客户端的系统来取消标记以进行正常操作。这意味着客户端需要一个额外的 VLAN 接口来取消帧的标记。
vlan
应该安装该软件包,主要是为了它的插件vlan-interfaces
为...提供ifupdown
。然后可以通过将网络设置替换为以下内容来配置未标记的接口:
# VLAN 110 for Ubuntu Client
auto enp0s8.110
iface enp0s8.110 inet dhcp
gateway 192.168.110.1
当遵循此约定(原始接口名称 + vlan id)时,该接口enp0s8
将默认用作底层原始/链路接口。这个原始接口永远不应该被分配 IP,因为它没有多大意义(除非您还在线路上收到来自其他 VLAN 的未标记数据包,那就没问题)。