DHCP Snooping — что это такое и как защитить сеть от Rogue DHCP сервера
<p>Представьте: утро понедельника, офис, все приходят на работу — и никто не может подключиться к сети. Ноутбуки получают адреса из диапазона 192.168.100.x, хотя у вас давно настроен 10.0.0.x. Шлюз ведёт в никуда. Интернета нет. Люди злятся. Телефон директора уже разрывается. Вы судорожно смотрите в консоль и понимаете: <strong>в вашей <a class="wpil_keyword_link" title="Сети" href="https://it-apteka.com/category/networks/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="702">сети</a> завёлся Rogue DHCP сервер</strong>.</p>
<!-- /wp:post-content -->
<!-- wp:paragraph -->
<p>Один DHCP-сервер в сети — порядок. Два DHCP-сервера — начинаются приключения, которые обычно заканчиваются вашим незапланированным дежурством до полуночи.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Именно для таких случаев придуман <strong>DHCP Snooping</strong> — механизм защиты на уровне коммутатора, который отфильтрует левый DHCP ещё до того, как он успеет испортить вам рабочий день. В этом гайде разберём: что такое DHCP Snooping, как он работает, как настроить его на Cisco, D-Link, Huawei, Eltex и MikroTik, и какие грабли вас ждут на пути. Пристегнитесь.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Что такое DHCP Snooping и зачем он нужен</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>DHCP Snooping</strong> — это механизм безопасности на уровне L2-коммутатора, который инспектирует весь DHCP-трафик в сети и разрешает DHCP-ответы только с портов, которые вы явно пометили как доверенные (trusted). Все остальные порты считаются недоверенными (untrusted) и не имеют права слать DHCPOFFER, DHCPACK и DHCPNAK.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Простыми словами: <strong>DHCP Snooping — это фейсконтроль для DHCP-трафика</strong>. Ваш легитимный <a title="Настройка NTP на MikroTik: клиент и сервер - шпаргалка для ROS 6 и 7" href="https://it-apteka.com/nastrojka-ntp-na-mikrotik-klient-i-server-shpargalka-dlja-ros-6-i-7/" target="_blank" rel="noopener" data-wpil-monitor-id="689">сервер стоит за доверенным портом —</a> заходи, дорогой. Ноутбук вашего коллеги, случайно включившего <a title="NTP через DHCP Options в MikroTik: автоматическая раздача времени клиентам" href="https://it-apteka.com/ntp-cherez-dhcp-options-v-mikrotik-avtomaticheskaja-razdacha-vremeni-klientam/" target="_blank" rel="noopener" data-wpil-monitor-id="690">раздачу Wi-Fi с DHCP</a> — стоп, не пройдёшь.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>От чего защищает DHCP Snooping</h3>
<!-- /wp:heading -->
<!-- wp:list -->
<ul>
<li><strong>Rogue DHCP сервер (Мошеннический DHCP)</strong> — любое устройство, которое начало отвечать на DHCP-запросы вместо вашего сервера. Это может быть ноутбук с включённой точкой доступа, виртуалка с неправильно настроенным сетевым адаптером, или целенаправленная атака.</li>
<li><strong>DHCP Spoofing</strong> — атака, при которой злоумышленник намеренно поднимает DHCP-сервер и выдаёт клиентам свой шлюз и DNS, перехватывая весь трафик (man-in-the-middle).</li>
<li><strong>DHCP Starvation</strong> — атака исчерпания пула: атакующий засыпает сервер запросами с поддельными MAC-адресами и выжирает весь диапазон адресов, после чего поднимает свой DHCP.</li>
</ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Без DHCP Snooping ваша сеть абсолютно беззащитна перед всем этим. С ним — у вас есть надёжный привратник на каждом порту коммутатора.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Как работает DHCP Snooping: механика без воды</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Когда клиент запрашивает IP-адрес, происходит классический обмен DORA: Discover → Offer → Request → Ack. DHCP Snooping встраивается в этот процесс на уровне коммутатора и действует по следующей логике:</p>
<!-- /wp:paragraph -->
<!-- wp:list {"ordered":true} -->
<ol>
<li>Клиент на untrusted-порту отправляет <strong>DHCPDISCOVER</strong> — коммутатор пропускает его, это запрос, не ответ.</li>
<li>С untrusted-порта приходит <strong>DHCPOFFER</strong> (ответ с предложением адреса) — коммутатор <strong>дропает пакет</strong>. Не доверяем.</li>
<li>С trusted-порта приходит <strong>DHCPOFFER</strong> — пропускаем, всё по протоколу.</li>
<li>Клиент получает адрес — коммутатор записывает в <strong>Binding Table</strong> запись: IP + MAC + <a href="https://it-apteka.com/management-vlan-na-mikrotik-cpu-port-hardware-offload-i-diagnostika-polnyj-razbor/" target="_blank" rel="noopener" data-wpil-monitor-id="1980">VLAN + Port</a> + время аренды.</li>
</ol>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Именно эта таблица привязок становится фундаментом для двух других механизмов безопасности: <strong>Dynamic <a class="wpil_keyword_link" title="arp" href="https://it-apteka.com/tag/arp/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="700">ARP</a> Inspection (DAI)</strong> и <strong>IP Source Guard</strong>. Но об этом в отдельных статьях.</p>
<!-- /wp:paragraph -->
<!-- wp:image -->
<figure class="wp-block-image"></figure>
<!-- /wp:image -->
<!-- wp:heading -->
<h2>DHCP Snooping Binding Table — сердце механизма</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Таблица привязок (Binding Table) — это живой журнал, который коммутатор ведёт в реальном времени. Она хранит следующую информацию по каждому клиенту:</p>
<!-- /wp:paragraph -->
<!-- wp:table -->
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Поле</th>
<th>Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td>IP Address</td>
<td>Выданный DHCP-адрес</td>
</tr>
<tr>
<td>MAC Address</td>
<td>MAC клиента</td>
</tr>
<tr>
<td>VLAN</td>
<td>VLAN, в котором находится клиент</td>
</tr>
<tr>
<td>Interface</td>
<td>Порт коммутатора, к которому подключён клиент</td>
</tr>
<tr>
<td>Lease Time</td>
<td>Время аренды адреса</td>
</tr>
</tbody>
</table>
</figure>
<!-- /wp:table -->
<!-- wp:paragraph -->
<p>Посмотреть таблицу на Cisco можно командой:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
show ip dhcp snooping binding
</code></pre></pre>
<!-- wp:paragraph -->
<p>Пример вывода:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
AA:BB:CC:DD:EE:01 10.0.10.101 86400 dhcp-snooping 10 GigabitEthernet0/2
AA:BB:CC:DD:EE:02 10.0.10.102 86400 dhcp-snooping 10 GigabitEthernet0/3
</code></pre></pre>
<!-- wp:paragraph -->
<p>Эта таблица — не просто лог. На её основе работают дополнительные проверки: если с порта GigabitEthernet0/2 вдруг полетит трафик с IP 10.0.10.200 вместо 10.0.10.101 — IP Source Guard заблокирует его мгновенно.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Важный момент про сохранение таблицы.</strong> По умолчанию на многих платформах Binding Table хранится в оперативной памяти и теряется при перезагрузке. После ребута коммутатора все клиенты должны переполучить адреса, чтобы таблица восстановилась. На Cisco можно включить сохранение на диск:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
ip dhcp snooping database flash:dhcp-snooping.db
</code></pre></pre>
<!-- wp:heading -->
<h2>Trusted и Untrusted порты: логика разделения</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Это ключевая концепция, без понимания которой настройка DHCP Snooping превратится в хаос. Запоминайте как мантру:</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>По умолчанию все порты — untrusted.</strong> Это не баг, это фича. Безопасная позиция по умолчанию: никому не доверяем, пока явно не разрешим.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Какие порты делаем trusted</h3>
<!-- /wp:heading -->
<!-- wp:list -->
<ul>
<li><strong>Порт, к которому подключён легитимный DHCP-сервер</strong> — очевидно.</li>
<li><strong>Uplink-порты (транки до вышестоящих коммутаторов)</strong> — если ваш DHCP-сервер находится за другим коммутатором, uplink должен быть trusted, иначе ответы сервера будут дропаться.</li>
<li><strong>Порты DHCP relay агентов</strong> — если используете ip helper-address на маршрутизаторе, порт в его сторону — trusted.</li>
</ul>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<h3>Какие порты остаются untrusted</h3>
<!-- /wp:heading -->
<!-- wp:list -->
<ul>
<li>Все клиентские порты — рабочие станции, ноутбуки, телефоны, принтеры.</li>
<li>Порты точек доступа (если AP не является DHCP relay).</li>
<li>Любой порт, за которым может оказаться неконтролируемое устройство.</li>
</ul>
<!-- /wp:list -->
<!-- wp:quote -->
<blockquote class="wp-block-quote">Типичная ошибка новичка: поставить весь транк как untrusted «для безопасности» — и получить жалобы, что половина VLANов больше не получает адреса. Trusted ≠ незащищённый. Trusted = «DHCP-ответы с этого порта разрешены».</blockquote>
<!-- /wp:quote -->
<!-- wp:heading -->
<h2>DHCP Snooping и VLAN: почему включают по VLAN</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>DHCP Snooping работает не глобально для всей сети, а <strong>пер-VLAN</strong>. Это важно. Вы включаете глобально snooping на коммутаторе, но затем явно указываете, для каких VLAN он активен.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Зачем такая гранулярность? В реальных <a href="https://it-apteka.com/nastrojka-vlan-na-mikrotik-routeros-7-polnyj-gajd-po-bridge-trunk-i-wi-fi/" title="Настройка VLAN на MikroTik RouterOS 7 — полный гайд 2026" target="_blank" rel="noopener" data-wpil-monitor-id="1970">сетях десятки VLAN</a> с разной логикой. Например, в management VLAN у вас может быть свой отдельный DHCP, в VLAN для гостей — другой. Не всегда нужно включать snooping везде. Вы контролируете, где именно стоит защита.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>На практике для enterprise-сети рекомендация простая: <strong>включайте DHCP Snooping на всех пользовательских VLAN без исключений.</strong></p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>DHCP Snooping и DHCP Relay: не забудьте про uplink</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Очень частая ситуация в корпоративных сетях: DHCP-сервер стоит централизованно (<a class="wpil_keyword_link" title="Windows Server" href="https://it-apteka.com/category/windows-server/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="704">Windows</a> Server, ISC DHCP), а клиенты разбросаны по разным VLAN и L3-сегментам. В этом случае на маршрутизаторе (или L3-коммутаторе) настраивается DHCP relay — <strong>ip helper-address</strong>, который перенаправляет DHCP-запросы к серверу.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Как это взаимодействует с DHCP Snooping:</p>
<!-- /wp:paragraph -->
<!-- wp:list {"ordered":true} -->
<ol>
<li>Клиент шлёт DHCPDISCOVER на широковещательный адрес.</li>
<li>L3-устройство с ip helper-address перехватывает и пересылает unicast’ом на DHCP-сервер.</li>
<li>DHCP-сервер отвечает через тот же L3-агент.</li>
<li>L3-агент пересылает ответ клиенту через <strong>uplink-порт коммутатора</strong>.</li>
</ol>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Вот тут и засада: если uplink к L3-агенту не помечен как trusted — DHCP Snooping дропнет ответ сервера. Клиенты не получат адреса. Все будут смотреть на вас с немым вопросом.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Правило:</strong> Всегда помечайте uplink в сторону DHCP relay/сервера как trusted.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Общая схема настройки DHCP Snooping</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Независимо от вендора, алгоритм настройки выглядит одинаково:</p>
<!-- /wp:paragraph -->
<!-- wp:list {"ordered":true} -->
<ol>
<li>Глобально включить DHCP Snooping на коммутаторе.</li>
<li>Указать VLAN, на которых он активен.</li>
<li>Пометить нужные порты как trusted.</li>
<li>Проверить таблицу привязок после того, как клиенты получат адреса.</li>
<li>Убедиться, что легитимный DHCP работает, а левый — нет.</li>
</ol>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Теперь <a title="Docker Compose - установка, команды и настройка контейнеров" href="https://it-apteka.com/docker-compose-ustanovka-komandy-i-nastrojka-kontejnerov/" target="_blank" rel="noopener" data-wpil-monitor-id="691">— к конкретным командам</a> для каждого вендора.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Настройка DHCP Snooping на Cisco</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Cisco — классика жанра. DHCP Snooping здесь реализован наиболее полно, и именно на примере Cisco проще всего объяснить концепцию. Работает на IOS и IOS-XE, включая коммутаторы серий Catalyst 2960, 3560, 3750, 9200, 9300.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Включение DHCP Snooping на Cisco: пошаговая настройка</h3>
<!-- /wp:heading -->
<pre><pre><code class="language-bash">
! Шаг 1: Глобально включить DHCP Snooping
ip dhcp snooping
! Шаг 2: Включить для нужных VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20,30
! Шаг 3: Отключить option 82 если не нужен (часто вызывает проблемы с некоторыми серверами)
no ip dhcp snooping information option
! Шаг 4: Пометить trusted-порты (uplink, порт DHCP-сервера)
interface GigabitEthernet0/1
description Uplink to Core / DHCP Server
ip dhcp snooping trust
! Шаг 5: Опционально - ограничить rate на клиентских портах
interface GigabitEthernet0/2
description Client Port
ip dhcp snooping limit rate 15
</code></pre></pre>
<!-- wp:heading {"level":3} -->
<h3>Проверка настройки на Cisco</h3>
<!-- /wp:heading -->
<pre><pre><code class="language-bash">
! Общий статус
show ip dhcp snooping
! Таблица привязок
show ip dhcp snooping binding
! Статистика по дропнутым пакетам
show ip dhcp snooping statistics
</code></pre></pre>
<!-- wp:paragraph -->
<p>Вывод <code>show ip dhcp snooping</code> должен показать:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10,20,30
Insertion of option 82 is disabled
Interface Trusted Allow option Rate limit (pps)
------------------------- ------- ------------ ----------------
GigabitEthernet0/1 yes yes unlimited
GigabitEthernet0/2 no no 15
</code></pre></pre>
<!-- wp:paragraph -->
<p><strong>Сохранение Binding Table на Cisco:</strong></p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
ip dhcp snooping database flash:snooping.db
ip dhcp snooping database write-delay 300
</code></pre></pre>
<!-- wp:heading {"level":3} -->
<h3>Про option 82 на Cisco</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>По умолчанию <a title="DHCP Options в Cisco и MikroTik: Option 12, 42, 43, 60, 66, 67, 82 - примеры настройки" href="https://it-apteka.com/dhcp-options-v-cisco-i-mikrotik-option-12-42-43-60-66-67-82-primery-nastrojki/" target="_blank" rel="noopener" data-wpil-monitor-id="688">Cisco вставляет DHCP Option</a> 82 (relay agent information) в пакеты. Это полезно для некоторых сценариев, но если ваш DHCP-сервер не настроен её принимать — он будет дропать запросы и клиенты останутся без адресов. Поэтому в большинстве случаев рекомендуется выполнить <code>no ip dhcp snooping information option</code>.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Настройка DHCP Snooping на D-Link</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>D-Link — народный коммутатор малого и среднего бизнеса. DHCP Snooping здесь есть, настраивается через Web UI или CLI. Разберём оба варианта на примере серии DGS-1210/DGS-3000.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Через Web-интерфейс D-Link</h3>
<!-- /wp:heading -->
<!-- wp:list {"ordered":true} -->
<ol>
<li>Заходим в <strong>Security → DHCP Snooping → DHCP Snooping Settings</strong>.</li>
<li>Переводим <strong>DHCP Snooping State</strong> в <strong>Enabled</strong>.</li>
<li>В разделе <strong>DHCP Snooping VLAN Settings</strong> добавляем нужные VLAN.</li>
<li>Переходим в <strong>DHCP Snooping Port Settings</strong> и помечаем uplink-порты как <strong>Trusted</strong>.</li>
<li>Сохраняем конфигурацию.</li>
</ol>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<h3>Через CLI на D-Link</h3>
<!-- /wp:heading -->
<pre><pre><code class="language-bash">
# Включить DHCP Snooping глобально
enable dhcp_snooping
# Включить для VLAN
config dhcp_snooping vlan 10 state enable
# Настроить trusted порт
config dhcp_snooping ports 1 state trusted
# Проверить
show dhcp_snooping
show dhcp_snooping binding_entries
</code></pre></pre>
<!-- wp:paragraph -->
<p>На D-Link особенность: нумерация портов идёт как <code>1</code>, <code>2</code>, а не в формате <code>GigabitEthernet0/1</code>. Не путайтесь.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Настройка DHCP Snooping на Huawei</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Коммутаторы Huawei серии S (S5700, S6700 и другие) используются в корпоративных сетях. DHCP Snooping здесь называется так же, команды немного отличаются от Cisco, но логика та же.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# Войти в системный вид
system-view
# Включить DHCP Snooping глобально
dhcp snooping enable
# Включить на интерфейсе VLAN
vlan 10
dhcp snooping enable
quit
# Настроить trusted порт (в представлении интерфейса)
interface GigabitEthernet0/0/1
dhcp snooping trusted
quit
# Проверка
display dhcp snooping user-bind all
display dhcp snooping configuration
</code></pre></pre>
<!-- wp:paragraph -->
<p>На Huawei есть нюанс: DHCP Snooping включается сначала глобально командой <code>dhcp snooping enable</code>, затем дополнительно включается в каждом VLAN. Если забыть второй шаг — не заработает. Классические грабли.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Также на Huawei можно настроить проверку соответствия опций в DHCP-пакете:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
interface GigabitEthernet0/0/2
dhcp snooping check dhcp-chaddr enable
dhcp snooping check dhcp-request enable
</code></pre></pre>
<!-- wp:heading -->
<h2>Настройка DHCP Snooping на Eltex</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Eltex — российский вендор, набирающий популярность. Коммутаторы MES серии широко применяются в телекоме и enterprise. Команды во многом похожи на Cisco IOS, что упрощает жизнь.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
! Включить DHCP Snooping глобально
ip dhcp snooping
! Включить для VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20
! Отключить Option 82 (если не нужен)
no ip dhcp snooping information option
! Настроить trusted порт
interface gigabitethernet 1/0/1
ip dhcp snooping trust
! Ограничение rate на клиентских портах
interface gigabitethernet 1/0/2
ip dhcp snooping limit rate 15
! Проверка
show ip dhcp snooping
show ip dhcp snooping binding
</code></pre></pre>
<!-- wp:paragraph -->
<p>Настройка на Eltex максимально приближена к Cisco. Если вы знаете Cisco — освоитесь за пять минут. Синтаксис практически идентичен, разве что нумерация интерфейсов отличается.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>DHCP Snooping на MikroTik: альтернативный подход</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Вот тут начинается особый разговор. <strong><a href="https://it-apteka.com/mikrotik-chr-staticheskij-ip-dhcp-server-snat-i-marshrutizacija-cherez-proxmox/" target="_blank" rel="noopener" data-wpil-monitor-id="2069">MikroTik не имеет классического механизма DHCP</a> Snooping</strong> в том виде, как он реализован у Cisco, Huawei или Eltex. Это надо принять и двигаться дальше.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Однако похожая функциональность реализуется несколькими способами:</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Способ 1: DHCP Alert</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>MikroTik умеет оповещать об обнаружении чужого DHCP-сервера:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
/ip dhcp-client
add interface=ether1 disabled=no
/ip dhcp-server alert
add interface=bridge1 valid-server=AA:BB:CC:DD:EE:FF alert-timeout=1m
</code></pre></pre>
<!-- wp:paragraph -->
<p>Здесь <code>valid-server</code> — MAC вашего легитимного DHCP-сервера. Если на интерфейсе появится ответ с другого MAC — MikroTik отправит уведомление (и может выполнить <a class="wpil_keyword_link" title="Скрипты" href="https://it-apteka.com/category/scripts/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="703">скрипт</a>).</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Способ 2: Bridge Filter</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Более жёсткий вариант — блокировать DHCP-ответы (порт 67/68) с конкретных портов через Bridge Filter:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
/interface bridge filter
add chain=forward in-interface=ether2 mac-protocol=ip \
ip-protocol=udp dst-port=68 src-port=67 action=drop \
comment=&quot;Block DHCP Offers from untrusted ports&quot;
</code></pre></pre>
<!-- wp:paragraph -->
<p>Это правило дропает DHCP-ответы (src-port 67), приходящие с порта ether2 (клиентский порт). Trusted-порт (ether1, например) такого правила не имеет — его ответы пропускаются.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Способ 3: IP/Firewall + ARP статика</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>В небольших <a href="https://it-apteka.com/arp-mikrotik-nastrojka-tablica-proxy-arp-i-reply-only-polnyj-razbor/" target="_blank" rel="noopener" data-wpil-monitor-id="997">сетях на MikroTik</a> можно использовать комбинацию статических ARP-записей и firewall-правил для привязки IP к MAC и блокировки несанкционированных назначений. Это не DHCP Snooping в чистом виде, но для маленьких офисов работает.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Вывод по MikroTik:</strong> Если вам важна именно защита от Rogue DHCP на уровне коммутатора — лучше использовать MikroTik как маршрутизатор в связке с управляемым коммутатором (Cisco, Eltex, Huawei), где DHCP Snooping реализован нативно. MikroTik как L2-коммутатор в enterprise — не лучший выбор с точки зрения безопасности.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>5 практических примеров из жизни администратора</h2>
<!-- /wp:heading -->
<!-- wp:heading {"level":3} -->
<h3>Пример 1: Как поймать Rogue DHCP сервер в офисе</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>Ситуация:</strong> Часть клиентов получает адреса из неправильного диапазона. Жалобы на отсутствие интернета.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Диагностика без DHCP Snooping:</strong></p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# На клиенте Windows - смотрим кто выдал адрес
ipconfig /all | findstr &quot;DHCP Server&quot;
# На клиенте Linux
ip route | grep default
cat /var/lib/dhclient/dhclient.leases | grep &quot;dhcp-server-identifier&quot;
</code></pre></pre>
<!-- wp:paragraph -->
<p>Нашли подозрительный IP? Теперь находим порт в таблице MAC на коммутаторе:</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
show mac address-table | include [MAC-адрес злоумышленника]
</code></pre></pre>
<!-- wp:paragraph -->
<p><strong>Решение:</strong> Включаем DHCP Snooping — и проблема исчезает автоматически. Рогового сервера больше нет, его ответы дропаются на уровне коммутатора.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Пример 2: IP-телефоны перестали получать адреса после включения Snooping</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>Ситуация:</strong> Включили DHCP Snooping на коммутаторе. Компьютеры работают, IP-телефоны Cisco не получают адрес из VLAN Voice (VLAN 20).</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Причина:</strong> Забыли добавить VLAN 20 в список защищаемых VLAN для snooping, или не добавили uplink в trusted для этого VLAN.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# Проверяем какие VLAN защищены
show ip dhcp snooping
# Добавляем VLAN для телефонов
ip dhcp snooping vlan 20
# Если uplink уже trusted - всё должно заработать
# Проверяем binding после перезапроса адреса на телефоне
show ip dhcp snooping binding
</code></pre></pre>
<!-- wp:heading {"level":3} -->
<h3>Пример 3: DHCP работает в одном VLAN и не работает в другом</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>Ситуация:</strong> VLAN 10 — всё отлично. VLAN 30 — клиенты не получают адреса. DHCP-сервер один, централизованный, через relay.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Причина чаще всего одна из двух:</strong></p>
<!-- /wp:paragraph -->
<!-- wp:list {"ordered":true} -->
<ol>
<li>DHCP Snooping не включён для VLAN 30: <code>ip dhcp snooping vlan 30</code> — не выполнялось.</li>
<li>Uplink к relay-агенту не trusted для данного коммутатора.</li>
</ol>
<!-- /wp:list -->
<pre><pre><code class="language-bash">
# Диагностика
show ip dhcp snooping statistics
! Смотрим на строку &quot;Packets dropped&quot; - если растёт, пакеты дропаются
# Включаем debug (осторожно на production!)
debug ip dhcp snooping packet
</code></pre></pre>
<!-- wp:heading {"level":3} -->
<h3>Пример 4: Как посмотреть Binding Table и проверить всё ли ОК</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>Задача:</strong> Убедиться, что все клиенты корректно отражены в таблице привязок.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# Cisco
show ip dhcp snooping binding
# Фильтрация по VLAN
show ip dhcp snooping binding vlan 10
# Huawei
display dhcp snooping user-bind all
# Eltex
show ip dhcp snooping binding
# D-Link
show dhcp_snooping binding_entries
</code></pre></pre>
<!-- wp:paragraph -->
<p>Если таблица пустая после включения Snooping — это нормально до момента, когда клиенты заново запросят адреса. Можно на Windows-клиентах выполнить <code>ipconfig /renew</code>, на Linux — <code>dhclient -r && dhclient eth0</code>.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Пример 5: Классика — забыли trust на uplink и получили полный хаос</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><strong>Ситуация:</strong> Включили DHCP Snooping на всех коммутаторах в офисе. Через 10 минут звонки: «Интернет не работает!» У половины пользователей адреса есть, у половины — нет.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Причина:</strong> На access-коммутаторах не пометили trunk-порт в сторону distribution-коммутатора как trusted. DHCP-ответы от центрального сервера приходят через trunk, коммутатор их дропает.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# Срочная диагностика
show ip dhcp snooping statistics
! Видим огромный счётчик dropped packets
# Лечение
interface GigabitEthernet0/24
description Trunk to Distribution
ip dhcp snooping trust
</code></pre></pre>
<!-- wp:paragraph -->
<p>Урок: перед включением DHCP Snooping на продакшн — <strong>нарисуйте схему сети и отметьте на ней все trusted-порты</strong>. Это займёт 15 минут и сэкономит несколько часов нервотрёпки.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>DHCP Snooping не работает — разбираем частые ошибки</h2>
<!-- /wp:heading -->
<!-- wp:table -->
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Симптом</th>
<th>Вероятная причина</th>
<th>Решение</th>
</tr>
</thead>
<tbody>
<tr>
<td>Клиенты не получают адреса после включения Snooping</td>
<td>Uplink не помечен как trusted</td>
<td><code>ip dhcp snooping trust</code> на uplink-порту</td>
</tr>
<tr>
<td>Только часть VLAN работает</td>
<td>DHCP Snooping не включён для всех нужных VLAN</td>
<td><code>ip dhcp snooping vlan X</code> для каждого VLAN</td>
</tr>
<tr>
<td>DHCP через relay не работает</td>
<td>Порт в сторону relay не trusted</td>
<td>Пометить интерфейс к L3-агенту как trusted</td>
</tr>
<tr>
<td>После перезагрузки коммутатора все клиенты теряют связь</td>
<td>Binding Table не сохраняется</td>
<td>Настроить <code>ip dhcp snooping database</code></td>
</tr>
<tr>
<td>Сервер отбрасывает DHCP-запросы</td>
<td>Вставляется Option 82, сервер его не принимает</td>
<td><code>no ip dhcp snooping information option</code></td>
</tr>
<tr>
<td>На Huawei snooping включён, но не работает</td>
<td>Не включён на уровне VLAN (только глобально)</td>
<td>Войти в VLAN и выполнить <code>dhcp snooping enable</code></td>
</tr>
</tbody>
</table>
</figure>
<!-- /wp:table -->
<!-- wp:heading {"level":3} -->
<h3>Debug и диагностика</h3>
<!-- /wp:heading -->
<pre><pre><code class="language-bash">
# Cisco - статистика по дропам
show ip dhcp snooping statistics
# Cisco - детальный debug (использовать осторожно!)
debug ip dhcp snooping packet
debug ip dhcp snooping event
# Не забудьте отключить debug после диагностики!
undebug all
</code></pre></pre>
<!-- wp:heading -->
<h2>Сравнение DHCP Snooping у разных вендоров</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Если вы выбираете коммутаторы для новой сети или расширяете существующую, вот краткая сравнительная таблица реализации DHCP Snooping:</p>
<!-- /wp:paragraph -->
<!-- wp:table -->
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Вендор</th>
<th>Наличие Snooping</th>
<th>CLI / Web UI</th>
<th>Сохранение Binding Table</th>
<th>Сложность настройки</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cisco (IOS/IOS-XE)</td>
<td>✅ Полная поддержка</td>
<td>CLI + Web (на новых)</td>
<td>✅ Flash/TFTP</td>
<td>Средняя</td>
</tr>
<tr>
<td>Huawei (VRP)</td>
<td>✅ Полная поддержка</td>
<td>CLI + eSight</td>
<td>✅</td>
<td>Средняя</td>
</tr>
<tr>
<td>Eltex (MES)</td>
<td>✅ Полная поддержка</td>
<td>CLI + Web UI</td>
<td>✅</td>
<td>Низкая (как Cisco)</td>
</tr>
<tr>
<td>D-Link (DGS)</td>
<td>✅ Есть</td>
<td>CLI + Web UI</td>
<td>⚠️ Зависит от модели</td>
<td>Низкая</td>
</tr>
<tr>
<td>MikroTik (RouterOS)</td>
<td>⚠️ Нет нативного</td>
<td>CLI + Winbox</td>
<td>N/A</td>
<td>Высокая (через workaround)</td>
</tr>
</tbody>
</table>
</figure>
<!-- /wp:table -->
<!-- wp:paragraph -->
<p>Для корпоративных сетей, где <a class="wpil_keyword_link" title="Безопасность" href="https://it-apteka.com/category/security/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="701">безопасность</a> критична, рекомендуем управляемые коммутаторы с нативной поддержкой DHCP Snooping: Cisco Catalyst, Huawei S-серии или отечественный Eltex MES. Последний особенно актуален в условиях импортозамещения.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Профилактика и лучшие практики</h2>
<!-- /wp:heading -->
<!-- wp:heading {"level":3} -->
<h3>Чеклист перед включением DHCP Snooping в production</h3>
<!-- /wp:heading -->
<!-- wp:list -->
<ul>
<li>☑️ Нарисована схема сети с обозначением всех DHCP-серверов и relay-агентов.</li>
<li>☑️ Определены все trusted-порты (uplink, серверные порты).</li>
<li>☑️ Составлен список всех VLAN, на которых нужен Snooping.</li>
<li>☑️ Проверен вопрос с Option 82 (нужен ли вашему серверу).</li>
<li>☑️ Настроено сохранение Binding Table на энергонезависимое хранилище.</li>
<li>☑️ Запланировано окно обслуживания для включения (<a href="https://it-apteka.com/dhcp-snooping-chto-jeto-takoe-i-kak-zashhitit-set-ot-rogue-dhcp-servera-2/" target="_blank" rel="noopener" data-wpil-monitor-id="709">Snooping может кратковременно прервать DHCP</a>).</li>
<li>☑️ Под рукой консольный доступ на случай если что-то пойдёт не так.</li>
</ul>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<h3>Связка DHCP Snooping с другими механизмами безопасности</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>DHCP Snooping — это фундамент. На его основе строятся два более мощных механизма:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul>
<li><strong>Dynamic ARP Inspection (DAI)</strong> — использует Binding Table для проверки ARP-пакетов. Защищает от ARP Spoofing и отравления ARP-таблиц.</li>
<li><strong>IP Source Guard</strong> — разрешает трафик с порта только с тем IP-адресом, который зафиксирован в Binding Table. Полная защита от IP Spoofing на уровне L2.</li>
</ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Включение всех трёх механизмов вместе — это золотой стандарт безопасности для клиентских портов в корпоративной сети. Никаких посторонних DHCP, никакого ARP-спуфинга, никаких поддельных IP. Как на скриншоте ниже — схема защиты по уровням.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>Регулярный аудит Binding Table</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Не забывайте периодически просматривать Binding Table — это полезный срез состояния сети. Видите незнакомый MAC на порту? Это повод для расследования.</p>
<!-- /wp:paragraph -->
<pre><pre><code class="language-bash">
# Скрипт для периодического экспорта Binding Table (для EEM на Cisco)
event manager applet DHCP_SNOOPING_BACKUP
event timer cron cron-entry &quot;0 */6 * * *&quot;
action 1.0 cli command &quot;enable&quot;
action 2.0 cli command &quot;show ip dhcp snooping binding | redirect tftp://10.0.0.100/snooping-backup.txt&quot;
</code></pre></pre>
<!-- wp:heading -->
<h2>Итог: что мы сделали и что получили</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Итак, подведём диагноз и рецепт в одном флаконе. <strong>DHCP Snooping — это обязательный механизм безопасности</strong> для любой управляемой корпоративной сети. Не факультативная опция, не «можно сделать потом», а базовая гигиена, которая:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul>
<li>Устраняет угрозу <a title="DHCPScan - утилита для поиска Rogue DHCP" href="https://it-apteka.com/dhcpscan-utilita-dlja-poiska-rogue-dhcp/" target="_blank" rel="noopener" data-wpil-monitor-id="687">Rogue DHCP —</a> главного источника хаоса в плоских сетях.</li>
<li>Защищает от DHCP Spoofing и man-in-the-middle атак через подмену шлюза.</li>
<li>Формирует Binding Table как основу для DAI и IP Source Guard.</li>
<li>Настраивается за 5-10 минут на любом управляемом коммутаторе.</li>
</ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Мы разобрали настройку на Cisco, D-Link, Huawei, Eltex и MikroTik. Разобрали 5 реальных кейсов из практики. Составили таблицу типичных ошибок. Теперь у вас есть всё, чтобы настроить это в своей сети сегодня, не откладывая.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Есть вопросы по настройке на конкретном оборудовании? Столкнулись с нестандартным поведением? Пишите в комментарии — разберём вместе. Подпишитесь на <a href="https://t.me/it_apteka_com" target="_blank"><strong>телеграм-канал</strong></a>, чтобы не пропустить следующие рецепты из IT-Аптеки.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph /-->
Представьте: утро понедельника, офис, все приходят на работу — и никто не может подключиться к сети. Ноутбуки получают адреса из диапазона 192.168.100.x, хотя у вас давно настроен 10.0.0.x. Шлюз ведёт в никуда. Интернета нет. Люди злятся. Телефон директора уже разрывается. Вы судорожно смотрите в консоль и понимаете: в вашей сети завёлся Rogue DHCP сервер.
Один DHCP-сервер в сети — порядок. Два DHCP-сервера — начинаются приключения, которые обычно заканчиваются вашим незапланированным дежурством до полуночи.
Именно для таких случаев придуман DHCP Snooping — механизм защиты на уровне коммутатора, который отфильтрует левый DHCP ещё до того, как он успеет испортить вам рабочий день. В этом гайде разберём: что такое DHCP Snooping, как он работает, как настроить его на Cisco, D-Link, Huawei, Eltex и MikroTik, и какие грабли вас ждут на пути. Пристегнитесь.
Что такое DHCP Snooping и зачем он нужен
DHCP Snooping — это механизм безопасности на уровне L2-коммутатора, который инспектирует весь DHCP-трафик в сети и разрешает DHCP-ответы только с портов, которые вы явно пометили как доверенные (trusted). Все остальные порты считаются недоверенными (untrusted) и не имеют права слать DHCPOFFER, DHCPACK и DHCPNAK.
Простыми словами: DHCP Snooping — это фейсконтроль для DHCP-трафика. Ваш легитимный сервер стоит за доверенным портом — заходи, дорогой. Ноутбук вашего коллеги, случайно включившего раздачу Wi-Fi с DHCP — стоп, не пройдёшь.
От чего защищает DHCP Snooping
Rogue DHCP сервер (Мошеннический DHCP) — любое устройство, которое начало отвечать на DHCP-запросы вместо вашего сервера. Это может быть ноутбук с включённой точкой доступа, виртуалка с неправильно настроенным сетевым адаптером, или целенаправленная атака.
DHCP Spoofing — атака, при которой злоумышленник намеренно поднимает DHCP-сервер и выдаёт клиентам свой шлюз и DNS, перехватывая весь трафик (man-in-the-middle).
DHCP Starvation — атака исчерпания пула: атакующий засыпает сервер запросами с поддельными MAC-адресами и выжирает весь диапазон адресов, после чего поднимает свой DHCP.
Без DHCP Snooping ваша сеть абсолютно беззащитна перед всем этим. С ним — у вас есть надёжный привратник на каждом порту коммутатора.
Как работает DHCP Snooping: механика без воды
Когда клиент запрашивает IP-адрес, происходит классический обмен DORA: Discover → Offer → Request → Ack. DHCP Snooping встраивается в этот процесс на уровне коммутатора и действует по следующей логике:
Клиент на untrusted-порту отправляет DHCPDISCOVER — коммутатор пропускает его, это запрос, не ответ.
С untrusted-порта приходит DHCPOFFER (ответ с предложением адреса) — коммутатор дропает пакет. Не доверяем.
С trusted-порта приходит DHCPOFFER — пропускаем, всё по протоколу.
Клиент получает адрес — коммутатор записывает в Binding Table запись: IP + MAC + VLAN + Port + время аренды.
Именно эта таблица привязок становится фундаментом для двух других механизмов безопасности: Dynamic ARP Inspection (DAI) и IP Source Guard. Но об этом в отдельных статьях.
DHCP Snooping Binding Table — сердце механизма
Таблица привязок (Binding Table) — это живой журнал, который коммутатор ведёт в реальном времени. Она хранит следующую информацию по каждому клиенту:
Эта таблица — не просто лог. На её основе работают дополнительные проверки: если с порта GigabitEthernet0/2 вдруг полетит трафик с IP 10.0.10.200 вместо 10.0.10.101 — IP Source Guard заблокирует его мгновенно.
Важный момент про сохранение таблицы. По умолчанию на многих платформах Binding Table хранится в оперативной памяти и теряется при перезагрузке. После ребута коммутатора все клиенты должны переполучить адреса, чтобы таблица восстановилась. На Cisco можно включить сохранение на диск:
ip dhcp snooping database flash:dhcp-snooping.db
Trusted и Untrusted порты: логика разделения
Это ключевая концепция, без понимания которой настройка DHCP Snooping превратится в хаос. Запоминайте как мантру:
По умолчанию все порты — untrusted. Это не баг, это фича. Безопасная позиция по умолчанию: никому не доверяем, пока явно не разрешим.
Какие порты делаем trusted
Порт, к которому подключён легитимный DHCP-сервер — очевидно.
Uplink-порты (транки до вышестоящих коммутаторов) — если ваш DHCP-сервер находится за другим коммутатором, uplink должен быть trusted, иначе ответы сервера будут дропаться.
Порты DHCP relay агентов — если используете ip helper-address на маршрутизаторе, порт в его сторону — trusted.
Какие порты остаются untrusted
Все клиентские порты — рабочие станции, ноутбуки, телефоны, принтеры.
Порты точек доступа (если AP не является DHCP relay).
Любой порт, за которым может оказаться неконтролируемое устройство.
Типичная ошибка новичка: поставить весь транк как untrusted «для безопасности» — и получить жалобы, что половина VLANов больше не получает адреса. Trusted ≠ незащищённый. Trusted = «DHCP-ответы с этого порта разрешены».
DHCP Snooping и VLAN: почему включают по VLAN
DHCP Snooping работает не глобально для всей сети, а пер-VLAN. Это важно. Вы включаете глобально snooping на коммутаторе, но затем явно указываете, для каких VLAN он активен.
Зачем такая гранулярность? В реальных сетях десятки VLAN с разной логикой. Например, в management VLAN у вас может быть свой отдельный DHCP, в VLAN для гостей — другой. Не всегда нужно включать snooping везде. Вы контролируете, где именно стоит защита.
На практике для enterprise-сети рекомендация простая: включайте DHCP Snooping на всех пользовательских VLAN без исключений.
DHCP Snooping и DHCP Relay: не забудьте про uplink
Очень частая ситуация в корпоративных сетях: DHCP-сервер стоит централизованно (Windows Server, ISC DHCP), а клиенты разбросаны по разным VLAN и L3-сегментам. В этом случае на маршрутизаторе (или L3-коммутаторе) настраивается DHCP relay — ip helper-address, который перенаправляет DHCP-запросы к серверу.
Как это взаимодействует с DHCP Snooping:
Клиент шлёт DHCPDISCOVER на широковещательный адрес.
L3-устройство с ip helper-address перехватывает и пересылает unicast’ом на DHCP-сервер.
DHCP-сервер отвечает через тот же L3-агент.
L3-агент пересылает ответ клиенту через uplink-порт коммутатора.
Вот тут и засада: если uplink к L3-агенту не помечен как trusted — DHCP Snooping дропнет ответ сервера. Клиенты не получат адреса. Все будут смотреть на вас с немым вопросом.
Правило: Всегда помечайте uplink в сторону DHCP relay/сервера как trusted.
Общая схема настройки DHCP Snooping
Независимо от вендора, алгоритм настройки выглядит одинаково:
Глобально включить DHCP Snooping на коммутаторе.
Указать VLAN, на которых он активен.
Пометить нужные порты как trusted.
Проверить таблицу привязок после того, как клиенты получат адреса.
Убедиться, что легитимный DHCP работает, а левый — нет.
Cisco — классика жанра. DHCP Snooping здесь реализован наиболее полно, и именно на примере Cisco проще всего объяснить концепцию. Работает на IOS и IOS-XE, включая коммутаторы серий Catalyst 2960, 3560, 3750, 9200, 9300.
Включение DHCP Snooping на Cisco: пошаговая настройка
! Шаг 1: Глобально включить DHCP Snooping
ip dhcp snooping
! Шаг 2: Включить для нужных VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20,30
! Шаг 3: Отключить option 82 если не нужен (часто вызывает проблемы с некоторыми серверами)
no ip dhcp snooping information option
! Шаг 4: Пометить trusted-порты (uplink, порт DHCP-сервера)
interface GigabitEthernet0/1
description Uplink to Core / DHCP Server
ip dhcp snooping trust
! Шаг 5: Опционально - ограничить rate на клиентских портах
interface GigabitEthernet0/2
description Client Port
ip dhcp snooping limit rate 15
Проверка настройки на Cisco
! Общий статус
show ip dhcp snooping
! Таблица привязок
show ip dhcp snooping binding
! Статистика по дропнутым пакетам
show ip dhcp snooping statistics
Вывод show ip dhcp snooping должен показать:
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10,20,30
Insertion of option 82 is disabled
Interface Trusted Allow option Rate limit (pps)
------------------------- ------- ------------ ----------------
GigabitEthernet0/1 yes yes unlimited
GigabitEthernet0/2 no no 15
Сохранение Binding Table на Cisco:
ip dhcp snooping database flash:snooping.db
ip dhcp snooping database write-delay 300
Про option 82 на Cisco
По умолчанию Cisco вставляет DHCP Option 82 (relay agent information) в пакеты. Это полезно для некоторых сценариев, но если ваш DHCP-сервер не настроен её принимать — он будет дропать запросы и клиенты останутся без адресов. Поэтому в большинстве случаев рекомендуется выполнить no ip dhcp snooping information option.
Настройка DHCP Snooping на D-Link
D-Link — народный коммутатор малого и среднего бизнеса. DHCP Snooping здесь есть, настраивается через Web UI или CLI. Разберём оба варианта на примере серии DGS-1210/DGS-3000.
Через Web-интерфейс D-Link
Заходим в Security → DHCP Snooping → DHCP Snooping Settings.
Переводим DHCP Snooping State в Enabled.
В разделе DHCP Snooping VLAN Settings добавляем нужные VLAN.
Переходим в DHCP Snooping Port Settings и помечаем uplink-порты как Trusted.
Сохраняем конфигурацию.
Через CLI на D-Link
# Включить DHCP Snooping глобально
enable dhcp_snooping
# Включить для VLAN
config dhcp_snooping vlan 10 state enable
# Настроить trusted порт
config dhcp_snooping ports 1 state trusted
# Проверить
show dhcp_snooping
show dhcp_snooping binding_entries
На D-Link особенность: нумерация портов идёт как 1, 2, а не в формате GigabitEthernet0/1. Не путайтесь.
Настройка DHCP Snooping на Huawei
Коммутаторы Huawei серии S (S5700, S6700 и другие) используются в корпоративных сетях. DHCP Snooping здесь называется так же, команды немного отличаются от Cisco, но логика та же.
# Войти в системный вид
system-view
# Включить DHCP Snooping глобально
dhcp snooping enable
# Включить на интерфейсе VLAN
vlan 10
dhcp snooping enable
quit
# Настроить trusted порт (в представлении интерфейса)
interface GigabitEthernet0/0/1
dhcp snooping trusted
quit
# Проверка
display dhcp snooping user-bind all
display dhcp snooping configuration
На Huawei есть нюанс: DHCP Snooping включается сначала глобально командой dhcp snooping enable, затем дополнительно включается в каждом VLAN. Если забыть второй шаг — не заработает. Классические грабли.
Также на Huawei можно настроить проверку соответствия опций в DHCP-пакете:
Eltex — российский вендор, набирающий популярность. Коммутаторы MES серии широко применяются в телекоме и enterprise. Команды во многом похожи на Cisco IOS, что упрощает жизнь.
! Включить DHCP Snooping глобально
ip dhcp snooping
! Включить для VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20
! Отключить Option 82 (если не нужен)
no ip dhcp snooping information option
! Настроить trusted порт
interface gigabitethernet 1/0/1
ip dhcp snooping trust
! Ограничение rate на клиентских портах
interface gigabitethernet 1/0/2
ip dhcp snooping limit rate 15
! Проверка
show ip dhcp snooping
show ip dhcp snooping binding
Настройка на Eltex максимально приближена к Cisco. Если вы знаете Cisco — освоитесь за пять минут. Синтаксис практически идентичен, разве что нумерация интерфейсов отличается.
DHCP Snooping на MikroTik: альтернативный подход
Вот тут начинается особый разговор. MikroTik не имеет классического механизма DHCP Snooping в том виде, как он реализован у Cisco, Huawei или Eltex. Это надо принять и двигаться дальше.
Однако похожая функциональность реализуется несколькими способами:
Способ 1: DHCP Alert
MikroTik умеет оповещать об обнаружении чужого DHCP-сервера:
Здесь valid-server — MAC вашего легитимного DHCP-сервера. Если на интерфейсе появится ответ с другого MAC — MikroTik отправит уведомление (и может выполнить скрипт).
Способ 2: Bridge Filter
Более жёсткий вариант — блокировать DHCP-ответы (порт 67/68) с конкретных портов через Bridge Filter:
Это правило дропает DHCP-ответы (src-port 67), приходящие с порта ether2 (клиентский порт). Trusted-порт (ether1, например) такого правила не имеет — его ответы пропускаются.
Способ 3: IP/Firewall + ARP статика
В небольших сетях на MikroTik можно использовать комбинацию статических ARP-записей и firewall-правил для привязки IP к MAC и блокировки несанкционированных назначений. Это не DHCP Snooping в чистом виде, но для маленьких офисов работает.
Вывод по MikroTik: Если вам важна именно защита от Rogue DHCP на уровне коммутатора — лучше использовать MikroTik как маршрутизатор в связке с управляемым коммутатором (Cisco, Eltex, Huawei), где DHCP Snooping реализован нативно. MikroTik как L2-коммутатор в enterprise — не лучший выбор с точки зрения безопасности.
5 практических примеров из жизни администратора
Пример 1: Как поймать Rogue DHCP сервер в офисе
Ситуация: Часть клиентов получает адреса из неправильного диапазона. Жалобы на отсутствие интернета.
Диагностика без DHCP Snooping:
# На клиенте Windows - смотрим кто выдал адрес
ipconfig /all | findstr &quot;DHCP Server&quot;
# На клиенте Linux
ip route | grep default
cat /var/lib/dhclient/dhclient.leases | grep &quot;dhcp-server-identifier&quot;
Нашли подозрительный IP? Теперь находим порт в таблице MAC на коммутаторе:
show mac address-table | include [MAC-адрес злоумышленника]
Решение: Включаем DHCP Snooping — и проблема исчезает автоматически. Рогового сервера больше нет, его ответы дропаются на уровне коммутатора.
Пример 2: IP-телефоны перестали получать адреса после включения Snooping
Ситуация: Включили DHCP Snooping на коммутаторе. Компьютеры работают, IP-телефоны Cisco не получают адрес из VLAN Voice (VLAN 20).
Причина: Забыли добавить VLAN 20 в список защищаемых VLAN для snooping, или не добавили uplink в trusted для этого VLAN.
# Проверяем какие VLAN защищены
show ip dhcp snooping
# Добавляем VLAN для телефонов
ip dhcp snooping vlan 20
# Если uplink уже trusted - всё должно заработать
# Проверяем binding после перезапроса адреса на телефоне
show ip dhcp snooping binding
Пример 3: DHCP работает в одном VLAN и не работает в другом
Ситуация: VLAN 10 — всё отлично. VLAN 30 — клиенты не получают адреса. DHCP-сервер один, централизованный, через relay.
Причина чаще всего одна из двух:
DHCP Snooping не включён для VLAN 30: ip dhcp snooping vlan 30 — не выполнялось.
Uplink к relay-агенту не trusted для данного коммутатора.
# Диагностика
show ip dhcp snooping statistics
! Смотрим на строку &quot;Packets dropped&quot; - если растёт, пакеты дропаются
# Включаем debug (осторожно на production!)
debug ip dhcp snooping packet
Пример 4: Как посмотреть Binding Table и проверить всё ли ОК
Задача: Убедиться, что все клиенты корректно отражены в таблице привязок.
# Cisco
show ip dhcp snooping binding
# Фильтрация по VLAN
show ip dhcp snooping binding vlan 10
# Huawei
display dhcp snooping user-bind all
# Eltex
show ip dhcp snooping binding
# D-Link
show dhcp_snooping binding_entries
Если таблица пустая после включения Snooping — это нормально до момента, когда клиенты заново запросят адреса. Можно на Windows-клиентах выполнить ipconfig /renew, на Linux — dhclient -r && dhclient eth0.
Пример 5: Классика — забыли trust на uplink и получили полный хаос
Ситуация: Включили DHCP Snooping на всех коммутаторах в офисе. Через 10 минут звонки: «Интернет не работает!» У половины пользователей адреса есть, у половины — нет.
Причина: На access-коммутаторах не пометили trunk-порт в сторону distribution-коммутатора как trusted. DHCP-ответы от центрального сервера приходят через trunk, коммутатор их дропает.
# Срочная диагностика
show ip dhcp snooping statistics
! Видим огромный счётчик dropped packets
# Лечение
interface GigabitEthernet0/24
description Trunk to Distribution
ip dhcp snooping trust
Урок: перед включением DHCP Snooping на продакшн — нарисуйте схему сети и отметьте на ней все trusted-порты. Это займёт 15 минут и сэкономит несколько часов нервотрёпки.
DHCP Snooping не работает — разбираем частые ошибки
Симптом
Вероятная причина
Решение
Клиенты не получают адреса после включения Snooping
Uplink не помечен как trusted
ip dhcp snooping trust на uplink-порту
Только часть VLAN работает
DHCP Snooping не включён для всех нужных VLAN
ip dhcp snooping vlan X для каждого VLAN
DHCP через relay не работает
Порт в сторону relay не trusted
Пометить интерфейс к L3-агенту как trusted
После перезагрузки коммутатора все клиенты теряют связь
Binding Table не сохраняется
Настроить ip dhcp snooping database
Сервер отбрасывает DHCP-запросы
Вставляется Option 82, сервер его не принимает
no ip dhcp snooping information option
На Huawei snooping включён, но не работает
Не включён на уровне VLAN (только глобально)
Войти в VLAN и выполнить dhcp snooping enable
Debug и диагностика
# Cisco - статистика по дропам
show ip dhcp snooping statistics
# Cisco - детальный debug (использовать осторожно!)
debug ip dhcp snooping packet
debug ip dhcp snooping event
# Не забудьте отключить debug после диагностики!
undebug all
Сравнение DHCP Snooping у разных вендоров
Если вы выбираете коммутаторы для новой сети или расширяете существующую, вот краткая сравнительная таблица реализации DHCP Snooping:
Вендор
Наличие Snooping
CLI / Web UI
Сохранение Binding Table
Сложность настройки
Cisco (IOS/IOS-XE)
✅ Полная поддержка
CLI + Web (на новых)
✅ Flash/TFTP
Средняя
Huawei (VRP)
✅ Полная поддержка
CLI + eSight
✅
Средняя
Eltex (MES)
✅ Полная поддержка
CLI + Web UI
✅
Низкая (как Cisco)
D-Link (DGS)
✅ Есть
CLI + Web UI
⚠️ Зависит от модели
Низкая
MikroTik (RouterOS)
⚠️ Нет нативного
CLI + Winbox
N/A
Высокая (через workaround)
Для корпоративных сетей, где безопасность критична, рекомендуем управляемые коммутаторы с нативной поддержкой DHCP Snooping: Cisco Catalyst, Huawei S-серии или отечественный Eltex MES. Последний особенно актуален в условиях импортозамещения.
Профилактика и лучшие практики
Чеклист перед включением DHCP Snooping в production
☑️ Нарисована схема сети с обозначением всех DHCP-серверов и relay-агентов.
☑️ Определены все trusted-порты (uplink, серверные порты).
☑️ Составлен список всех VLAN, на которых нужен Snooping.
☑️ Проверен вопрос с Option 82 (нужен ли вашему серверу).
☑️ Настроено сохранение Binding Table на энергонезависимое хранилище.
☑️ Под рукой консольный доступ на случай если что-то пойдёт не так.
Связка DHCP Snooping с другими механизмами безопасности
DHCP Snooping — это фундамент. На его основе строятся два более мощных механизма:
Dynamic ARP Inspection (DAI) — использует Binding Table для проверки ARP-пакетов. Защищает от ARP Spoofing и отравления ARP-таблиц.
IP Source Guard — разрешает трафик с порта только с тем IP-адресом, который зафиксирован в Binding Table. Полная защита от IP Spoofing на уровне L2.
Включение всех трёх механизмов вместе — это золотой стандарт безопасности для клиентских портов в корпоративной сети. Никаких посторонних DHCP, никакого ARP-спуфинга, никаких поддельных IP. Как на скриншоте ниже — схема защиты по уровням.
Регулярный аудит Binding Table
Не забывайте периодически просматривать Binding Table — это полезный срез состояния сети. Видите незнакомый MAC на порту? Это повод для расследования.
Итак, подведём диагноз и рецепт в одном флаконе. DHCP Snooping — это обязательный механизм безопасности для любой управляемой корпоративной сети. Не факультативная опция, не «можно сделать потом», а базовая гигиена, которая:
Устраняет угрозу Rogue DHCP — главного источника хаоса в плоских сетях.
Защищает от DHCP Spoofing и man-in-the-middle атак через подмену шлюза.
Формирует Binding Table как основу для DAI и IP Source Guard.
Настраивается за 5-10 минут на любом управляемом коммутаторе.
Мы разобрали настройку на Cisco, D-Link, Huawei, Eltex и MikroTik. Разобрали 5 реальных кейсов из практики. Составили таблицу типичных ошибок. Теперь у вас есть всё, чтобы настроить это в своей сети сегодня, не откладывая.
Есть вопросы по настройке на конкретном оборудовании? Столкнулись с нестандартным поведением? Пишите в комментарии — разберём вместе. Подпишитесь на телеграм-канал, чтобы не пропустить следующие рецепты из IT-Аптеки.
Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.