Назад | Перейти на главную страницу

Как мне фильтровать MAC-адреса с DHCP-сервером

Я хочу разрешить только определенным MAC-адресам получать IP-адрес от моего DHCP-сервера, в настоящее время я использую dnsmasq и предпочитаю не менять dhcp-сервер, но я открыт и для другого программного обеспечения. Однако мне нужно иметь возможность устанавливать статические IP-адреса для определенных MAC-адресов.

в настоящее время в моем файле конфигурации dnsmasq есть несколько записей, которые определяют статические IP-адреса для диапазона MAC-адресов, например:

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?

В качестве альтернативы решению @ 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)

Вы можете сделать это, указав только статический диапазон

dhcp-range = 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
# 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

Если вы хотите, чтобы только определенные MAC-адреса получали DHCP-адреса, просто создайте свой список резервирований, поскольку вы затем установите диапазон, чтобы охватить только эти IP-адреса. Таким образом, у него не будет больше адресов для раздачи.

Я не согласен с предыдущими исправлениями. кроме ответа pepoluan.

Хотя я не знаю, является ли метод pepoluan истинным белым списком, он близок к правильному ответу. Ваша цель - заблокировать все данные для неправильного Mac. Простое отключение dhcp для незарегистрированных Mac не является исправлением, если они устанавливают ручной IP, который обычно является одним из трех диапазонов ... 10.0.0.x, 192.168.1.x или 192.168.0.x не решает проблему.

Если вы используете другой предложенный ответ - не передавать dhcp на неизвестные Mac, не забудьте также изменить адрес вашего маршрутизатора на уникальный нераспознаваемый параметр и изменить диапазон IP-адресов на действительно странный. например 192.168.43.x с маршрутизатором 192.168.43.43 или что-то в этом роде. это лишит их возможности угадать диапазон вашей подсети и лишит их связи с сетью.

Это не безупречно, но это гораздо лучший способ защитить вашу сеть.