База знаний VMmanager

Как заблокировать доступ к сайту (IP-адресу) для всех ВМ на узле

В статье используются следущие термины:

Инструкция из этой статьи позволяет заблокировать доступ виртуальных машин к определённому сайту или IP-адресу на уровне bridge-сети через nftables

В статье рассмотрены следующие варианты блокировки:

  • с сохранением после перезагрузки узла кластера — если требуется длительная блокировка IP-адреса;
  • без сохранения после перезагрузки узла кластера — если требуется временная блокировка IP-адреса.

Подготовка

Определите IP-адрес сайта:

dig +short <адрес_сайта>
Пример вывода
dig +short <адрес_сайта>
10.10.10.1
10.10.11.1

Блокировка с сохранением после перезагрузки узла

  1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Создайте файл /etc/nftables/sets/blocked_sites.nft:
    vim /etc/nftables/sets/blocked_sites.nft
  3. Добавьте содержимое файла:
    Важно
    Правило блокировки сайта в 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
    	}
    }
    Пояснение
  4. Добавьте в начало конфигурационного файла /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 {
    	...
    }

    Это подключит созданный файл в основную конфигурацию.

  5. Примените изменения:
    nft -f /etc/nftables/vmmgr.nft
  6. Убедитесь, что правило добавлено:
    nft list chain bridge blacklist dropper

Чтобы отключить блокировку, удалите таблицу bridge blacklist:

nft delete table bridge blacklist

Блокировка без сохранения после перезагрузки узла

  1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Добавьте правило:
    nft insert rule bridge nat PREROUTING ip daddr { 10.10.10.1, 10.10.11.1 } drop
    Пояснения
  3. Убедитесь, что правило применено:
    nft list chain bridge nat PREROUTING

Чтобы отключить блокировку:

  1. Проверьте номер handle для правила блокировки IP-адреса:
    nft -a list chain bridge nat PREROUTING
    Пример вывода
    ip daddr { 10.10.10.1 } drop # handle <номер_handle>
    Пояснения
  2. Удалите правило:
    nft delete rule bridge nat PREROUTING handle <номер_handle>
    Пояснения
Дата последнего обновления статьи: 31.07.2025. Статья подготовлена техническими писателями ISPsystem