DHCP. Классификация клиентов и индивидуальные возможности.
Можно ли настроить DHCP в OpenWrt так, чтобы он динамически назначал IP-адрес шлюза в зависимости от MAC-адреса?
по концепции похоже на статическую аренду IP для конкретных устройств, только мне нужен конкретный шлюз IP, назначенный одному конкретному устройству в качестве исключения (всем остальным назначается другой шлюз IP). Возможно?Вот моя ситуация (и почему мне это нужно):
Недавно я приобрел VPN-сервис, и я намерен заставить каждое устройство в моей домашней сети выходить в интернет через этот VPN.
Думал, что будет просто настроить мой шлюзовой роутер OpenWrt как OpenVPN-клиент, а дальше уже разбираться. Все прошло хорошо, за исключением того, что мой шлюзовой роутер оказался слишком старым и слабым, чтобы справиться с трафиком и шифрованием. Скачки до 90% загрузки процессора при наличии трафика, и скорость была слишком низкой, чтобы быть пригодной для использования.
ОК, подумал я, у меня есть другой роутер в моей локальной сети, который используется для объединения двух подсетей, и я решил, что этот роутер можно использовать вместо шлюзового роутера, чтобы стать OpenVPN-клиентом в дополнение к тому, что он уже делает. Бинго. Проблема (почти) решена.
Итак, теперь все устройства, у которых в качестве шлюза настроен IP-адрес моего шлюзового роутера, будут подключаться напрямую к интернету. Те, у кого в качестве шлюза настроен IP-адрес роутера-OpenVPN-клиента, будут маршрутизировать трафик через VPN. Так что теперь осталось только заставить DHCP-сервер в моем шлюзовом роутере назначить IP-адрес роутера-OpenVPN-клиента в качестве шлюза, как я и планировал, используя VPN-сервис для каждого устройства. Конец истории (типа).
В моей сети есть одно устройство, которое по какой-то причине не любит вручную назначенные статические IP-адреса (или по какой-то странной причине часто теряет соединение). И я не хочу маршрутизировать трафик через VPN для этого устройства, потому что скорость VPN недостаточно высока для потоковой передачи мультимедиа (это устройство - приставка). Поэтому конкретно для этого устройства мне нужен IP-адрес шлюза, который будет IP-адресом шлюзового роутера, и я не могу вручную настроить сетевые параметры по вышеуказанной причине (т. е. приходится полагаться на DHCP). Так что мой единственный вариант - покопаться в настройках DHCP-сервера, чтобы попытаться заставить DHCP назначить другой IP-адрес шлюза только для этого устройства.
Используйте tag
классификатор для создания помеченной группы.
Назначьте отдельные параметры DHCP хостам, помеченным tag1
. Укажите пользовательский DNS и, возможно, другие параметры DHCP .
uci set dhcp.tag1="tag" uci set dhcp.tag1.dhcp_option="6,8.8.8.8,8.8.4.4" uci add dhcp host uci set dhcp.@host[-1].name="j400" uci set dhcp.@host[-1].mac="00:21:63:75:aa:17" uci set dhcp.@host[-1].ip="10.11.12.14" uci set dhcp.@host[-1].tag="tag1" uci add dhcp host uci set dhcp.@host[-1].name="j500" uci set dhcp.@host[-1].mac="01:22:64:76:bb:18" uci set dhcp.@host[-1].ip="10.11.12.15" uci set dhcp.@host[-1].tag="tag1" uci commit dhcp service dnsmasq restart
Используйте mac
классификатор для создания помеченной группы. Назначьте различные параметры DHCP хостам с соответствующими MAC-адресами. Отключите шлюз по умолчанию и укажите пользовательский DNS .
uci set dhcp.mac1="mac" uci set dhcp.mac1.mac="00:FF:*:*:*:*" uci set dhcp.mac1.networkid="vpn" uci add_list dhcp.mac1.dhcp_option="3" uci add_list dhcp.mac1.dhcp_option="6,192.168.1.3" uci commit dhcp service dnsmasq restart
dhcp-option=3,192.168.1.1
: Опция 3 в DHCP используется для указания шлюза по умолчанию для клиента. Когда клиент получает IP-адрес от этого DHCP-сервера, ему также сообщат, что 192.168.1.1 — его шлюз по умолчанию.dhcp-option=6,192.168.1.1
: Опция 6 в DHCP используется для указания DNS-сервера(ов) для клиента. В этом случае клиент будет проинформирован о том, что 192.168.1.1 является его DNS-сервером.пример установки шлюза и DNS: "3,192.168.1.1 6,192.168.1.1"
Классификация клиентов и назначение индивидуальных опций
DHCP может предоставить клиенту множество параметров, таких как доменное имя, серверы NTP , параметры сетевой загрузки и т. д. В то время как некоторые параметры применимы ко всем хостам в сегменте сети, другие более специфичны и относятся только к группе хостов или даже только к одному хосту. dnsmasq предлагает группировать параметры DHCP и их значения по tag
, имеющему внутреннее имя networkid
, которое является буквенно-цифровым идентификатором, и отправлять параметры только тем хостам, которые были помечены этим networkid
.
В OpenWrt вы можете помечать хосты по диапазону DHCP , в котором они находятся (раздел dhcp
), или по ряду опций, которые клиент может отправить со своим запросом DHCP . В каждом из этих разделов вы можете использовать dhcp_option
список для добавления опций DHCP , которые будут отправлены хостам с этим тегом (или networkid).
Вы можете использовать следующие классификационные разделы:
Имя | Описание |
---|---|
mac
|
Аппаратный адрес клиента. |
tag
|
Буквенно-цифровая метка, обозначающая сеть. |
vendorclass
|
Строка, отправленная клиентом, представляющая поставщика клиента. dnsmasq выполняет сопоставление подстроки в строке класса поставщика, используя это значение. |
userclass
|
Строка, отправленная клиентом, представляющая пользователя клиента. dnsmasq выполняет сопоставление подстроки со строкой класса пользователя, используя это значение. |
circuitid
|
Соответствует идентификатору цепи, отправленному агентом ретрансляции, как определено в RFC3046. |
remoteid
|
Соответствует удаленному идентификатору, отправленному агентом ретрансляции, как определено в RFC3046. |
subscrid
|
Соответствует идентификатору абонента, отправленному агентом ретрансляции, как определено в RFC3993. |
Каждый классифицирующий раздел (кроме tag
) имеет одну опцию конфигурации: какой тег ему будет присвоен.
Например, mac
раздел с mac
записью, которая точно соответствует вашему MAC-адресу Ethernet, и тегом (он же networkid
) green
будет помечен green
.
Имя | Тип | Необходимый | По умолчанию | Описание |
---|---|---|---|---|
<classifier>
|
нить | да | (никто) | Используйте тип раздела в качестве имени параметра, а классифицирующий фильтр — в качестве значения параметра. |
networkid
|
нить | да | (никто) | Тег, который будет присвоен соответствующим клиентам. |
force
|
бул | нет | ЛОЖЬ | Отправлять ли дополнительные опции из dhcp_option списка клиентам, которые их не запрашивали.
|
tag
Разделы классификации имеют одну опцию конфигурации: значения опций DHCP для назначения этому тегу.
Например, продолжая предыдущий пример, green
помеченные DHCP- клиенты могут быть выборочно принудительно получены, dhcp_option
если есть tag
запись со tag
значением green
, где также указан список dhcp_option
и force
установлен .
Имя | Тип | Необходимый | По умолчанию | Описание |
---|---|---|---|---|
<classifier>
|
нить | да | (никто) | Используйте тип раздела в качестве имени параметра, а классифицирующий фильтр — в качестве значения параметра. |
dhcp_option
|
список строк | нет | (никто) | Для этого тега, также известного как networkid, необходимо добавить дополнительные параметры. |
force
|
бул | нет | ЛОЖЬ | Отправлять ли дополнительные опции из dhcp_option списка клиентам, которые их не запрашивали.
|