网络接口名可以有多长?

35

我需要调整一些数据库表格来适应50个以上字符的网络接口名称。我想知道有没有关于接口名称长度的标准,这样我才能正确地映射它。


3
如果您查看此网址:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx,似乎适配器名称的最大长度为256个字符。 - Cyclonecode
1
似乎在某些Linux版本(在Centos 5上测试过)中,16个字符是正确的,但对于其他版本不确定。我需要支持win/unix两种操作系统。 - Andrei Matei
在这种情况下,我会选择256个字符,这似乎支持Linux和Windows。 - Cyclonecode
2个回答

45

就Linux特定部分而言,最近的内核版本使用IFNAMSIZ来定义名称为16个字节,因此可见用户字节数为15个(假设包括尾随的空字符)。IFNAMSIZ用于在此处定义结构体net_device的名称字段。

为了进行经验测试,您可以使用以下内容查看16个字节失败而15个字节成功:

# CLEAN SLATE
root# ip link ls dev 123456789012345
Device "123456789012345" does not exist.
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.

# FAIL
root# ip link add dev 1234567890123456 type dummy
Error: argument "1234567890123456" is wrong: "name" too long
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.

# PASS
root# ip link add dev 123456789012345 type dummy
root# ip link ls dev 123456789012345
40: 123456789012345: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
link/ether ... brd ff:ff:ff:ff:ff:ff

# CLEAN UP
root# ip link del dev 123456789012345

(假设您已经安装了来自iproute2包的 ip,这在过去十年左右的任何Linux发行版中都很可能已经安装好了。)


2
参见:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704072 (如果设备名称超过14个字符,则Linux DHCP客户端存在问题,如果设备名称超过16个字符,则“ip”命令会失败。) - Mikko Rantalainen

9

1
据 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704072 报告,这个问题在2015年的版本4.3.2-1中已经被修复了。 - András Korn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接