2

Есть ли у iptables способ автоматически адаптировать некоторые из его правил или просто указать, какие наборы правил он использует в зависимости от текущей сети?

У меня есть много применений для чего-то подобного, но два самых чистых примера:

  1. Если я нахожусь в моей домашней сети, выставьте определенные порты для локальной сети. Когда меня нет, отбрось трафик к ним.
  2. Если у меня есть рабочий компьютер, который должен отправлять системные журналы в сервер пересылки журналов UDP, но эта цель меняет IP-адреса в зависимости от того, в какой сети я работаю (поскольку серверы пересылки журналов не используют стандартные IP-адреса), разрешать трафик UDP только на указанные IP-адреса, когда определенные условия сети соблюдены.

Я знаю, что мог бы просто написать небольшой скрипт на python, который бы дал мне такое поведение. Но в последнее время я пытался заставить себя НАСТОЯЩИМ использовать инструменты, которые система уже предоставляет мне, вместо того, чтобы заново изобретать каждое колесо, с которым я сталкиваюсь.

Операционная система - Kali (на основе Debian), иногда также CentOS, так что практически любая опция linux-y находится на столе, если iptables не является правильным уровнем для решения этой проблемы.

1 ответ1

1

Сам iptables полностью статичен. Вам понадобится интерфейс, поддерживающий работу сети.

Существуют ли инструменты, которые уже существуют

В Fedora/CentOS используется firewalld, который имеет понятие «зоны» (похожее на те, что наблюдаются в брандмауэре Windows). Если ваша система использует NetworkManager, вы можете назначить зону каждому сетевому профилю, и она соответственно загрузит правила брандмауэра.

Другой вариант - использовать вспомогательные «хуки» в инструменте настройки сети, чтобы он запускал скрипт, который загружает нужный набор правил при каждом подключении к другой сети. Это может быть простой сценарий, который вызывает iptables-restore < /etc/iptables/rules.$ZONE зависимости от того, какой SSID Wi-Fi активен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .