Вопрос или проблема
У меня есть linux-система, которая выполняет роль маршрутизатора и имеет 2 интерфейса с работающим firewalld. Один из них — “EXTERNAL” и подключен к интернету. Другой — “TRUSTED” и соединен с внутренними хостами. Компьютеры во внутренней сети (10.x.x.x) выходят в интернет и корректно выполняют NAT. Они также без проблем могут взаимодействовать друг с другом.
Когда я создаю сложное правило для блокировки устройства по MAC-адресу, оно работает нормально на интерфейсе TRUSTED: устройство не может выйти в интернет, но также не может получить доступ к другим хостам во внутренней сети.
Когда я создаю точно такое же правило для внешнего интерфейса EXTERNAL, как будто правила не существует. Целевое устройство может выйти в интернет и к локальным хостам.
Что я делаю не так? Я хочу заблокировать внутреннее устройство от доступа в интернет, но не к локальным компьютерам. Вот 2 правила:
firewall-cmd –zone=trusted –permanent –add-rich-rule=”rule source mac=90:b1:1c:99:41:1b drop”
firewall-cmd –zone=external –permanent –add-rich-rule=”rule source mac=90:b1:1c:99:41:1b drop”
Ответ или решение
Вопрос, касающийся правил фильтрации с использованием firewalld на Линукс-маршрутизаторе с двумя интерфейсами (EXTERNAL и TRUSTED), требует внимательного подхода к настройке и пониманию работы сетевых интерфейсов и зон. Рассмотрим шаги по решению вашей проблемы.
Проблема с правилами firewalld
У вас возникла проблема с блокировкой устройства по MAC-адресу с использованием правил firewalld. Вы указали, что правило, созданное в зоне TRUSTED, работает корректно и блокирует устройство от доступа к интернету, но аналогичное правило в зоне EXTERNAL не срабатывает, и устройство по-прежнему имеет доступ к интернету и локальным хостам.
Понимание зон firewalld
Firewalld использует "зоны", чтобы классифицировать сетевые интерфейсы с точки зрения уровня доверия. Вам необходимо понимать следующие аспекты:
- Зона TRUSTED: Позволяет трафику выходить на локальную сеть, тем самым позволяя всем внутренним устройствам общаться друг с другом.
- Зона EXTERNAL: Обычно настраивается для интернет-соединений и может содержать более строгие правила.
Ваша проблема
Ваши правила, которые блокируют IP-адреса, основанные на MAC-адресах, работают в зоне TRUSTED, но не помогают в зоне EXTERNAL. Это, скорее всего, обусловлено тем, что зона EXTERNAL может не обрабатывать трафик от доверенных локальных устройств, когда они обращаются к интернету, из-за NAT (Network Address Translation).
Решение
Для того чтобы решить вашу проблему и заблокировать доступ внутреннего устройства к интернету, но сохранить возможность взаимодействия с другими локальными устройствами, вы можете выполнить следующие шаги:
-
Проверьте NAT и маршрутизацию: Убедитесь, что ваше устройство NAT настроено правильно. NAT может дублировать запросы на маршрутизацию и игнорировать MAC-адреса. Проверьте, применяются ли правила NAT к пакетам, исходящим из TRUSTED-зоны и направляемым в EXTERNAL.
-
Использование правил маршрутизации: Возможным решением будет добавление соответствующих обработчиков для правил IP, а не только MAC-адресов. Вам может понадобиться правило для блокировки адреса источника по IP, чтобы убедиться, что NAT-журнал не влияет на ваши правила.
-
Применение правил на уровне IP:
Попробуйте добавить правило, которое будет блокировать IP-адрес устройства (например, если его IP – 10.x.x.x):firewall-cmd --zone=external --permanent --add-rich-rule="rule family='ipv4' source address='10.x.x.x' drop"
-
Союзное правило: Если вы хотите оставить доступ к локальной сети, но блокировать доступ к интернету, среди правил вы можете создать условие для маршрутизации, где учитываются внешние ресурсы:
firewall-cmd --zone=trusted --permanent --add-rich-rule="rule source mac=90:b1:1c:99:41:1b accept" firewall-cmd --zone=external --permanent --add-rich-rule="rule source mac=90:b1:1c:99:41:1b drop"
-
Обновите настройки firewalld: После внесения изменений не забудьте перезагрузить firewalld и проверить правильность настроек:
firewall-cmd --reload
-
Проверка логов: Мониторьте логи вашей системы (например, с помощью
journalctl -xe
илиfirewalld
логов), чтобы определить, проходит ли трафик через ваши правила или нет.
Заключение
Важно понять и правильно настроить маршрутизацию и оценки зон в firewalld, учитывая, как NAT управляет трафиком между интерфейсами. Если после выполнения вышеуказанных шагов проблема не решится, рассмотрите возможность использования дополнительных инструментов, таких как iptables
, для более точной настройки фильтрации на уровне пакетов.