В статье используются следущие термины:
Описание
Требуется заблокировать доступ для всех ВМ к определённому IP-адресу, сайту, ресурсу.
Как заблокировать доступ к сайту
Чтобы заблокировать доступ к сайту, добавьте правило в цепочку PREROUTING. Ниже см. два варианта блокировки доступа:
- с сохранением правила после перезапуска сервера;
- без сохранения правила после перезапуска сервера.
Внимание
Решение было протестировано на типе сети Коммутация. Для других типов сети правило может отличаться.
Внимание
Регистр в названии цепочки PREROUTING зависит от вашей ОС. Чтобы определить регистр, выполните команду:
nft list ruleset
С сохранением правила после перезапуска сервера
Блокировка с сохранением правила после перезапуска выполняется через table bridge nat и работает для виртуальных машин на bridge-сети.
Чтобы заблокировать доступ к сайту:
- Определите IP-адреса сайта:
dig +short <адрес_сайта>
Пример выводаdig +short <адрес_сайта> 10.10.10.1 10.10.11.1
- Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Откройте файл /etc/nftables/vmmgr.nft в режиме редактирования.
- Добавьте или измените таблицу bridge nat как в примере ниже:
table bridge nat { chain PREROUTING { type filter hook prerouting priority dstnat; policy accept; ip daddr { 10.10.10.1, 10.10.11.1 } drop } }
Пояснения - Примените изменения:
nft -f /etc/nftables/vmmgr.nft
- Убедитесь, что правило добавлено:
nft list ruleset
Без сохранения правила после перезапуска сервера
Чтобы заблокировать доступ к сайту:
- Определите IP-адреса сайта:
dig +short <адрес_сайта>
Пример выводаdig +short <адрес_сайта> 10.10.10.1 10.10.11.1
- Выполните команду:
nft add rule bridge nat PREROUTING ip daddr { 10.10.10.1, 10.10.11.1 } drop
Пояснения
Как снять блокировку
Чтобы снять блокировку, удалите созданное правило:
- Определите номер handle для удаления правила:
nft -a list chain bridge nat PREROUTING
Пример выводаip daddr { 10.10.10.1, 10.10.11.1 } drop # handle <номер_handle> }
Пояснения - Удалите правило:
nft delete rule bridge nat PREROUTING handle <номер_handle>
Пояснения