В статье используются следущие термины:
Инструкция из этой статьи позволяет заблокировать доступ виртуальных машин к определённому сайту или 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>
Пояснения