В статье используются следущие термины:
Инструкция из этой статьи позволяет заблокировать доступ виртуальных машин к определённому сайту или IP-адресу на уровне bridge-сети через nftables.
В статье рассмотрены следующие варианты блокировки:
- с сохранением после перезагрузки узла кластера — если требуется длительная блокировка IP-адреса;
- без сохранения после перезагрузки узла кластера — если требуется временная блокировка IP-адреса.
Подготовка
Определите IP-адрес сайта:
dig +short <адрес_сайта>Пример вывода
dig +short <адрес_сайта>
10.10.10.1
10.10.11.1Блокировка с сохранением после перезагрузки узла
- Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Создайте файл /etc/nftables/sets/blocked_sites.nft vim /etc/nftables/sets/blocked_sites.nft
- Добавьте содержимое файла:
 ВажноПравило блокировки сайта в nftables будет обрабатываться раньше других правил (DNAT, REDIRECT, ACCEPT), потому что ему назначен более высокий приоритет (-100).table bridge blacklist { chain dropper { type filter hook prerouting priority -100; policy accept; ip daddr { 10.10.10.1, 10.10.11.1 } drop } }Пояснение
- Добавьте в начало конфигурационного файла /etc/nftables/vmmgr.nft следующую строку: include "/etc/nftables/sets/blocked_sites.nft"Пример Expand source# version=0.0.3 include "/etc/nftables/sets/blocked_sites.nft" table inet filter { ... }Это подключит созданный файл в основную конфигурацию. 
- Примените изменения:
 nft -f /etc/nftables/vmmgr.nft
- Убедитесь, что правило добавлено:
 nft list chain bridge blacklist dropper
Чтобы отключить блокировку, удалите таблицу bridge blacklist:
nft delete table bridge blacklistБлокировка без сохранения после перезагрузки узла
- Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Добавьте правило:
 nft insert rule bridge nat PREROUTING ip daddr { 10.10.10.1, 10.10.11.1 } dropПояснения
- Убедитесь, что правило применено:
 nft list chain bridge nat PREROUTING
Чтобы отключить блокировку:
- Проверьте номер handleдля правила блокировки IP-адреса:
 nft -a list chain bridge nat PREROUTINGПример выводаip daddr { 10.10.10.1 } drop # handle <номер_handle>Пояснения
- Удалите правило:
 nft delete rule bridge nat PREROUTING handle <номер_handle>Пояснения