我想仅允许某些 MAC 地址从我的 DHCP 服务器获取 IP,目前我使用 dnsmasq,我不想更改 dhcp 服务器,但我也愿意使用其他软件。但是,我需要能够为特定 MAC 地址设置静态 IP 地址。
目前我的 dnsmasq conf 文件有一堆条目,为一系列 MAC 地址指定静态 IP,如下所示:
dhcp-host=00:11:22:33:44:55,192.168.1.100
dhcp-host=00:11:22:33:44:56,192.168.1.101
dhcp-host=00:11:22:33:44:57,192.168.1.102
有没有办法让所有未以上述方式指定的 MAC 地址都不会获取 IP?
答案1
您可以通过仅指定静态范围来实现此目的
dhcp 范围=192.168.0.0,静态
编辑:更改上面的地址范围以满足您的要求。
如果没有指定动态范围,dnsmask 将仅向具有相应 dhcp-host 配置的主机提供地址
# Specify a subnet which can't be used for dynamic address allocation,
# is available for hosts with matching --dhcp-host lines. Note that
# dhcp-host declarations will be ignored unless there is a dhcp-range
# of some type for the subnet in question.
# In this case the netmask is implied (it comes from the network
# configuration on the machine running dnsmasq) it is possible to give
# an explicit netmask instead.
#dhcp-range=192.168.0.0,static
答案2
除了@Chopper3 的解决方案之外,您还可以添加iptables
类似以下规则
# Create the DHCP_clients chain in the 'raw' table
iptables -t raw -N DHCP_clients
# Incoming DHCP, pass to chain processing DHCP
iptables -t raw -A PREROUTING -p udp --dport 67 -j DHCP_clients
# Allowed DHCP clients
iptables -t raw -A DHCP_clients -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
iptables -t raw -A DHCP_clients -m mac --mac-source 00:11:22:33:44:56 -j ACCEPT
iptables -t raw -A DHCP_clients -m mac --mac-source 00:11:22:33:44:57 -j ACCEPT
# Deny other clients not listed above
iptables -t raw -A DHCP_clients -j DROP
编辑:如果您需要添加额外的“已知”/允许的客户端,只需对每个额外的客户端执行以下操作:
# We insert a rule at the head of the chain using the '-I' command
iptables -t raw -I DHCP_clients -m mac --mac-source $CLIENT_MAC -j ACCEPT
(注意:它使用-I
(插入)而不是-A
(附加),因此新规则将是第一个要检查的规则。如果我们不插入,附加的规则将被规则覆盖-j DROP
)
答案3
# Ignore any clients which are not specified in dhcp-host lines
# or /etc/ethers. Equivalent to ISC "deny unknown-clients".
# This relies on the special "known" tag which is set when
# a host is matched.
#dhcp-ignore=tag:!known
答案4
我不同意之前的修复。除了 pepoluan 的回答。
虽然我不知道 pepoluan 的是否是真正的白名单技术,但它接近正确答案。阻止所有数据发送到错误的 mac 是您的目标。仅禁用未注册 mac 的 dhcp 并不能解决问题,如果他们设置手动 ip,通常是 3 个范围之一... 10.0.0.x、192.168.1.x 或 192.168.0.x 无法解决问题。
如果您确实使用了其他建议的答案,即不向未知的 mac 分发 dhcp,请确保将路由器的地址更改为唯一的不可猜测的选项,并将您的 ip 范围更改为一个非常奇怪的范围。例如 192.168.43.x,路由器为 192.168.43.43 或类似的。这将禁止他们猜测您的子网范围,并且无法链接到网络。
虽然它并非完美无缺,但它是保护网络的更好的方法。