是否有人知道是否有办法将描述性名称与 OpenWRT/LEDE 上的 MAC 地址关联,而无需更改设备的主机名?
对于认为答案是主机名的用户来说,答案不是主机名。
目前,OpenWRT/LEDE 上的 DHCP 表显示了这些设备给出的(或其所有者给出的)设备名称,但是这些名称对我来说毫无意义。
例如,目前,DHCP 表显示
android-1boeusthaoeu <MAC address> <IP address>
? <another MAC address> <another IP address>
例如,我希望看到
"jim's device" <MAC address> <IP address>
"The TV" <another MAC address> <another IP address>
是否有一个包,或者我可以配置的东西来实现这一点?
答案1
如果您想根据 DHCP 客户端的 MAC 地址为其分配主机名,那么您可以使用/etc/config/dhcp
如下块进行配置:
config host
option name myhost
option mac de:ad:be:ef:ca:fe
您还可以添加来option ip
为其保留特定的 IP 地址。
uci
您可以使用命令行工具编辑文件,也可以通过 LuCI Web 应用程序进行编辑。请记住在使用/etc/init.d/dnsmasq restart
编辑器更改配置文件后或uci commit
使用 时执行此操作uci
。
我意识到这jim's device
可能不是一个主机名,但分配一个主机名(例如jim_device
)至少可以让设备通过您选择的名称识别。
答案2
这可以在 LuCI 接口上单独完成。
网络 -> DHCP 和 DNS -> 静态租约 -> 添加
在撰写本文时,“表格”如下所示:
您可以指定主机名、MAC 地址,并保留 IPv4 地址未指定。将添加相同的行,/etc/config/dhcp
就像您按照starfry 的回答并手动完成。
答案3
自 OpenWRT 22.03 起,分配静态租约是我发现通过 LuCI Web 界面将名称与 MAC 地址关联的最简单方法。请注意,您实际上不必分配静态 IP,此功能定义了用于该设备的 DHCP 租约设置,如果您不分配静态 IP,则可能包括动态 IP。无论哪种方式,名称都会添加到本地 DNS,因此如果 LAN 上的其他计算机使用路由器进行 DNS,它们可以使用该分配的名称。
UI 的主机名功能不允许您指定 MAC 地址。
答案4
将 MAC 地址与描述关联起来的方法是使用 Lua 程序并将代码与 LuCI 页面关联起来,我没有这样做:
function dump(o)
if type(o) == 'table' then
local s = '{ '.. string.char(10)
for k, v in pairs(o) do
if type(k) ~= 'number' then
k = '"' .. k .. '"'
end
s = s .. '[' .. k .. '] = ' .. dump(v) .. string.char(10)
end
return s .. '} '.. string.char(10)
else
return tostring(o)
end
end
HostData = {}
function HostData.new(macAddr, description)
return { MacAddress = macAddr, Description = description }
end
Dictionary = {}
hostdata = HostData.new("12:34:56:78", "My first Powerful Laptop")
Dictionary[1] = hostdata
hostdata = HostData.new("78:34:56:12", "My SuperDuper laptop")
Dictionary[2] = hostdata
print("dictionary: ", dump(Dictionary))
- 更好的版本可能可以从 DHCP 服务器获取 IP 地址和主机名,并将它们添加到上述数据中