Уровень 2-доступная DMZ: ebtables?
Я хотел бы создать топологию сети, в которой все устройства IoT (принтер, видеорегистратор, термостат, проигрыватель BluRay и т. Д.) Находятся в демилитаризованной зоне, а остальные мои устройства - в локальной сети. Обратите внимание, что использование DMZ здесь отличается от настроек DMZ на маршрутизаторах и относится к "зоне сети, в которую я помещаю устройства, которым я не доверяю, чтобы не пытаться взломать мою сеть".
Обычно это делается путем создания многоуровневых шлюзов (т. Е. Наличия шлюза в демилитаризованной зоне для защиты локальной сети) или создания собственного 3-стороннего шлюза со специальными правилами iptables. Я делал оба раньше, но оба страдают от проблемы, заключающейся в том, что они представляют собой решение уровня 3, и я ищу решение уровня 2, в первую очередь для сохранения работы mDNS и Service Discovery.
Я думаю, что хочу разрешить:
LAN - [что угодно] -> DMZ
DMZ - [установлено + трансляция +DHCP]-> локальная сеть
Тем не менее, глядя на ebtables
документация, похоже, я не могу отличить установленные IP-соединения от новых IP-соединений, что является обязательной особенностью моего плана.
Итак, есть две возможности:
1) Определение, как использовать ebtables
делать то, что я хочу; или же
2) Использование подхода с двойным NAT и наличие устройства (RasPi или чего-то еще) прослушивают широковещательные рассылки Service Discovery в DMZ и ретранслируют их в локальной сети.
Последний вопрос: какой подход возможен и / или прост в управлении с точки зрения того, как долго я собираюсь возиться с вещами, чтобы заставить его работать?
Примечание: пометка под iptables
вместо ebtables
потому что я, видимо, не могу создать этот тег...
1 ответ
Первый, ebtables
является протоколом Link-Layer, и поэтому не может ничего знать о ESTABLISHED, RELATED
соединения. Согласно Википедии,
Канальный уровень - это группа методов и протоколов связи, которые работают только на канале, к которому физически подключен хост.
Итак, как он может знать, что этот пакет с некоторого удаленного URL-адреса является следующим пакетом в серии, которая была инициирована локально?
Что касается вашего второго решения, мне не ясно, чего вы пытаетесь достичь. Как правило, DMZ используются для ограничения объема трафика, передаваемого между ним и локальной сетью без DMZ, именно для предотвращения обнаружения и / или зондирования сети и т. Д. Вы вместо этого пытаетесь увеличить протоколы и связи между ними.
Если вы хотите сделать это, почему бы не создать единую локальную сеть, охватывающую как DMZ, так и не DMZ, а затем проследить трафик через iptables
? Таким образом, вы разрешите не-IP-трафик между ними, но можете заблокировать IP-трафик, например, сбросить все соединения ssh / telnet из одной зоны в другую.
В качестве альтернативы вы можете использовать своего рода Человек посередине, то есть компьютер с интерфейсом в не-DMZ и один в DMZ, с включенной пересылкой IPv4, но управляемой iptables
, а также dhcp-relay
разрешить прохождение запросов DHCP (версия предоставлена dnsmaq
особенно легко настроить). Кроме того, вы можете включить Proxy-ARP на этом компьютере MIM, чтобы он отвечал на запросы ARP от имени компьютеров, находящихся в карантине.