1. Главная страница » Компьютеры » Firewall cmd add port

Firewall cmd add port

Автор: | 16.12.2019

Содержание

Centos 7, в отличие от CentOS 6, в базе идет с новым брандмауэром — firewalld. Его можно отключить и заменить на старый добрый iptables, но если к этому нет прямых предпосылок, то лучше привыкать к чему-то новому, а не упираться в старое. Это не значит, что Windows 10 лучше Windows 7, а Windows XP лучше Windows 7 😉 Хороший пример на эту тему — selinux. Если вначале почти все (и я тоже) его отключали и даже немного ругали, то теперь почти никто это не советует, только если есть уверенность, что так надо. Напротив, многие уже привыкли (или привыкают) пользоваться semanage. Не будем и мы сразу отключать firewalld, а попробуем, как он на вкус.

Firewalld — это не принципиально иной брандмауэр. Это другая надстройка над netfilter, поэтому если вы обладаете опытом работы с iptables, то помучившись немного вы спокойно начнете пользоваться новым инструментом.

Запуск и остановка firewalld

Проверим, запущен ли firewalld:

# systemctl status firewalld

Тут будет расширенная информация. Чтобы коротко, да (работает) или нет можно так:

# firewall-cmd —state
running

# systemctl stop firewalld

# systemctl disable firewalld

# systemctl start firewalld

# systemctl enable firewalld

Зоны firewalld

В firewalld широко используется понятие зоны. Список всех допустимых зон по-умолчанию:

# firewall-cmd —get-zones
block dmz drop external home internal public trusted work

Назначение зон (условно, конечно):

  • drop — все входящие пакеты отбрасываются (drop) без ответа. Разрешены только исходящие соединения.
  • block — входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited (или icmp6-adm-prohibited). Разрешены только инициированные системой соединения.
  • public — зона по-умолчанию. Из названия ясно, что эта зона нацелена на работу в общественных сетях. Мы не доверяем этой сети и разрешаем только определенные входящие соединения.
  • external — зона для внешнего интерфейса роутера (т.н. маскарадинг). Разрешены только определенные нами входящие соединения.
  • dmz — зона DMZ, разрешены только определенные входящие соединения.
  • work — зона рабочей сети. Мы все еще не доверяем никому, но уже не так сильно, как раньше 🙂 Разрешены только определенные входящие соединения.
  • home — домашняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • internal — внутренняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • trusted — разрешено все.

Список всех активных зон:

# firewall-cmd —get-active-zones
public
interfaces: enp1s0

Ага, зона public, к которой присоединен сетевой интерфейс enp1so. Дальше в зону public добавим новый порт, на котором будет висеть sshd.

Зная имя сетевого интерфейса (например, enp1s0), можно узнать, к какой зоне он принадлежит:

# firewall-cmd —get-zone-of-interface=enp1s0
public

А можно узнать, какие интерфейсы принадлежат конкретной зоне:

# firewall-cmd —zone=public —list-interfaces
enp1s0

Пример: разрешаем ssh на нестандартном порте

Давайте разрешим доступ к серверу по ssh на порте 2234/tcp, а не на 22/tcp, как по-умолчанию. Попутно чуть-чуть коснемся selinux.

Сначала посмотрим, что вообще разрешено постоянно на нашем сервере:

# firewall-cmd —permanent —list-all
public (default)
interfaces:
sources:
services: ssh dhcpv6-client
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Я не использую пока ipv6, поэтому сразу уберу соотв. правило из firewalld:

# firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client

Разрешим на постоянной основе (чтобы после перезагрузки не потерлось) соединение на порт 2234/tcp (на него повесим sshd):

# firewall-cmd —permanent —zone=public —add-port=2234/tcp

# firewall-cmd —zone=public —list-ports
2234/tcp

Ок, порт открыт. Редактируем конфиг sshd:

# nano /etc/ssh/sshd_config
.
port 2234
.

# systemctl restart sshd.service

Но SELinux, которую вы, надеюсь, не отключали, не даст подключиться к ssh на нестандартном порте (порт 2234/tcp для sshd — нестандартный). Вы можете этот шаг пропустить и проверить, как сработатет защита SELinux, а можете сразу все настроить:

# yum provides semanage
# yum install policycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 2234

Вот теперь все ок. Проверяем подключение по ssh на новом порте. Если все ок, закрываем доступ к порту 22:

# firewall-cmd —permanent —zone=public —remove-service=ssh
# firewall-cmd —reload

Смотрим, что получилось:

# firewall-cmd —list-all
public (default, active)
interfaces:
sources:
services:
ports: 2234/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Разные полезные команды:

Включить режим блокировки всех исходящих и входящих пакетов:

Выключить режим блокировки всех исходящих и входящих пакетов:

Узнать, включен ли режим блокировки всех исходящих и входящих пакетов:

Перезагрузить правила firewalld без потери текущих соединений:

Перезагрузить правила firewalld и сбросить текущие соединения (рекомендуется только в случае проблем):

Добавить к зоне сетевой интерфейс:

# firewall-cmd —zone=public —add-interface=em1

Добавить к зоне сетевой интерфейс (сохранится после перезагрузки firewall):

# firewall-cmd —zone=public —permanent —add-interface=em1

Можно в конфиге ifcfg-enp1s0 указать, какой зоне принадлежит этот интерфейс. Для этого добавим ZONE=work в файл /etc/sysconfig/network-scripts/ifcfg-enp1s0. Если параметр ZONE не указан, будет назначена зона по-умолчанию (параметр DefaultZone в файле /etc/firewalld/firewalld.conf.

Разрешить диапазон портов:

# firewall-cmd —zone=public —add-port=5059-5061/udp

Маскарад (masquerade, он же nat, он же. ):

# firewall-cmd —zone=external —query-masquerade

Читайте также:  Excel сортировка строк по столбцу

# firewall-cmd —zone=external —add-masquerade

Здесь надо отметить, что вы можете включить masquerade и для зоны public, например.

Перенаправить входящие на 22 порт на другой хост:

# firewall-cmd —zone=external —add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

Перенаправить входящие на 22 порт на другой хост с изменением порта назначения (с 22 на 192.168.1.23:2055):

# firewall-cmd —zone=external /
—add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

На этом закончу, т.к. примеров может быть бесконечно много. Добавлю только, что лично я не составил окончательно свое мнение по поводу нововведения firewalld, т.к. к синтаксису привыкаешь долго и если в вашем зоопарке встречаются разные OS Linux, то по первости могут быть проблемы именно с привычкой. Но освоив firewalld, вы расширите кругозор — чаще всего, это стоит затраченных усилий.

Не хочу firewalld! Верните мне старый iptables!

Если все же вы хотите вернуть прошлое и заменить firewalld на iptables, то сделать это совсем не трудно:

Новичкам тут не место:

# systemctl disable firewalld
# systemctl stop firewalld

Ставим старый добрый iptables:

# yum install iptables-services

# systemctl start iptables
# systemctl start ip6tables

Автозапуск при включении:

# systemctl enable iptables
# systemctl enable ip6tables

Для сохранения правил iptables после перезагрузки:

# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables

# service iptables save

Текущие правила находятся в файлах:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

Перезапуск iptables (например, после совершения каких-либо изменений):

Основной брандмауэр в операционных системах Linux — это iptables. Но команды iptables сложны, и многим пользователям тяжело запомнить все опции и случаи, в которых их надо использовать. Поэтому разработчики дистрибутивов создают свои надстройки над iptables, которые помогают упростить управление фаерволом. У CentOS надстройка для управления iptables называется Firewalld.

У Firewalld есть несколько важных отличий, по сравнению с iptables. Здесь управление доступом к сети выполняется на уровне зон и сервисов, а не цепочек и правил. А также правила обновляются динамически, не прерывая запущенных сессий. В этой статье будет рассмотрена настройка Firewall CentOS 7 на примере Firewalld.

Основы использования Firewalld

Как я уже сказал выше, Firewalld работает не с цепочками правил, а с зонами. Каждому сетевому интерфейсу может быть присвоена определенная зона. Зона представляет из себя набор правил, ограничений и разрешений, которые применяются к этому сетевому интерфейсу. Для одного интерфейса может быть выбрана только одна зона. Разработчики создали несколько предустановленных зон:

  • drop — блокировать все входящие пакеты, разрешить только исходящие
  • block — в отличие от предыдущего варианта отправителю пакета будет отправлено сообщение по блокировке его пакета;
  • public — поддерживаются входящие соединения только для ssh и dhclient;
  • external — поддерживает NAT для скрытия внутренней сети;
  • internal — разрешены сервисы ssh, samba, mdns и dhcp;
  • dmz — используется для изолированных сервров, у которых нет доступа к сети. Разрешено только подключение по SSH;
  • work — разрешенны сервисы ssh и dhcp;
  • home — аналогично internal;
  • trusted — всё разрешено.

Таким образом, чтобы разрешить или запретить какой-либо сервис, вам достаточно добавить или удалить его из текущей зоны или сменить зону интерфейса на ту, где он разрешён. Можно провести аналогию с политикой действий по умолчанию для пакетов в iptables. Зона trusted имеет политику ACCEPT и разрешает все подключения, зона block имеет политику DENY, которая запрещает все подключения, а все остальные зоны можно считать наследниками зоны block, плюс в них уже предопределены правила разрешения сетевых подключений для некоторых сервисов.

Также у Firewalld есть два вида конфигурации:

  • runtime — действительна только до перезагрузки, все изменения, в которых явно не указано другое, применяются к этой конфигурации;
  • permanent — постоянные настройки, которые будут работать и после перезагрузки.

Теперь вы знаете всё необходимое, поэтому перейдём к утилите firewalld-cmd.

Синтаксис и опции firewall-cmd

Управлять настройками Firewalld можно как с помощью консольной утилиты firewall-cmd, так и в графическом интерфейсе. CentOS чаще всего используется на серверах, поэтому вам придётся работать в терминале. Давайте рассмотрим синтаксис утилиты:

firewall-cmd опции

Для управления зонами используется такой синтаксис:

firewall-cmd —конфигурация —zone=зона опции

В качестве конфигурации нужно указать опцию —permanent, чтобы сохранить изменения после перезагрузки или ничего не указывать, тогда изменения будут действительны только до перезагрузки. В качестве зоны используйте имя нужной зоны. Давайте рассмотрим опции утилиты:

  • —state — вывести состояние брандмауэра;
  • —reload — перезагрузить правила из постоянной конфигурации;
  • —complete-reload — жёсткая перезагрузка правил с разрывом всех соединений;
  • —runtime-to-permanent — перенести настройки конфигурации runtime в постоянную конфигурацию;
  • —permanent — использовать постоянную конфигурацию;
  • —get-default-zone — отобразить зону, используемую по умолчанию;
  • —set-default-zone — установить зону по умолчанию;
  • —get-active-zones — отобразить активные зоны;
  • —get-zones — отобразить все доступные зоны;
  • —get-services — вывести предопределенные сервисы;
  • —list-all-zones — вывести конфигурацию всех зон;
  • —new-zone — создать новую зону;
  • —delete-zone — удалить зону;
  • —list-all — вывести всё, что добавлено, из выбранной зоны;
  • —list-services — вывести все сервисы, добавленные к зоне;
  • —add-service — добавить сервис к зоне;
  • —remove-service — удалить сервис из зоны;
  • —list-ports — отобразить порты, добавленные к зоне;
  • —add-port — добавить порт к зоне;
  • —remove-port — удалить порт из зоны;
  • —query-port — показать, добавлен ли порт к зоне;
  • —list-protocols — вывести протоколы, добавленные к зоне;
  • —add-protocol — добавить протокол к зоне;
  • —remove-protocol — удалить протокол из зоны;
  • —list-source-ports — вывести порты источника, добавленные к зоне;
  • —add-source-port — добавить порт-источник к зоне;
  • —remove-source-port — удалить порт-источник из зоны;
  • —list-icmp-blocks — вывести список блокировок icmp;
  • —add-icmp-block — добавить блокировку icmp;
  • —add-icmp-block — удалить блокировку icmp;
  • —add-forward-port — добавить порт для перенаправления в NAT;
  • —remove-forward-port — удалить порт для перенаправления в NAT;
  • —add-masquerade — включить NAT;
  • —remove-masquerade — удалить NAT.

Это далеко не все опции утилиты, но для этой статьи нам будет их достаточно.

Читайте также:  Controller bus 00 device 1f

Настройка Firewall в CentOS 7

1. Статус брандмауэра

Первым делом необходимо посмотреть состояние брандмауэра. Для этого выполните:

sudo systemctl status firewalld

Если служба Firewalld отключена, то необходимо её включить:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Теперь нужно посмотреть, запущен ли Firewalld, с помощью команды firewall-cmd:

sudo firewall-cmd —state

Если программа запущена и всё хорошо, то вы получите сообщение "running".

2. Управление зонами

Как вы уже поняли, зоны — это основной инструмент для управления сетевыми подключениями. Чтобы посмотреть зону по умолчанию, выполните:

sudo firewall-cmd —get-default-zone

В моем случае это зона public. Вы можете изменить текущую зону с помощью опции —set-default-zone:

sudo firewall-cmd —set-default-zone=public

Чтобы посмотреть, какие зоны используются для всех сетевых интерфейсов, выполните:

sudo firewall-cmd —get-active-zones

В списке будут выведены зоны и интерфейсы, для которых они присвоены. Такой командой можно посмотреть конфигурацию для определённой зоны. Например, для зоны public:

sudo firewall-cmd —zone=public —list-all

3. Настройка сервисов

Вы можете посмотреть все предопределенные сервисы командой:

sudo firewall-cmd —get-services

Команда выведет все доступные сервисы, вы можете добавить любой из них к зоне, чтобы его разрешить. Например, разрешим подключение к http:

sudo firewall-cmd —zone=public —add-service=http —permanent

А чтобы удалить этот сервис, выполните:

sudo firewall-cmd —zone=public —remove-service=http —permanent

В обоих случаях мы использовали опцию —permanent, чтобы конфигурация сохранялась после перезагрузки. После изменений нужно обновить правила:

sudo firewall-cmd —reload

Затем, если вы посмотрите конфигурацию зоны, то там появится добавленный сервис:

sudo firewall-cmd —zone=public —list-all

4. Как открыть порт в Firewalld

Если для нужной вам программы нет сервиса, вы можете открыть её порт вручную. Для этого просто добавьте нужный порт к зоне. Например порт 8083:

sudo firewall-cmd —zone=public —add-port=8083/tcp —permanent

Чтобы удалить этот порт из зоны, выполните:

sudo firewall-cmd —zone=public —remove-port=8083/tcp —permanent

Аналогично сервисам, чтобы открыть порт в firewall centos 7 надо перезагрузить брандмауэр.

sudo firewall-cmd —reload

5. Проброс портов Firewalld

Проборс портов в Firewalld настраивается намного проще, чем в iptables. Если вам нужно, например, перенаправить трафик с порта 2223 на порт 22, достаточно добавить к зоне перенаправление:

sudo firewall-cmd —zone=public —add-forward-port=port=2223:proto=tcp:toport=22

Здесь перенаправление выполняется только на текущей машине. Если вы хотите настроить сеть NAT и пробрасывать порт на другую машину, то вам нужно сначала включить поддержку masquerade:

sudo firewall-cmd —zone=public —add-masquerade

Затем уже можно добавить порт:

sudo firewall-cmd —zone=publiс —add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. Расширенные правила

Если функциональности зон вам недостаточно, вы можете использовать расширенные правила. Общий синтаксис расширенных правил такой:

rule family = "семейтво" source значение destination значение log audit действие

Вот значение основных параметров:

  • В качестве семейства протоколов можно указать ipv4 или ipv6 или ничего не указывать, тогда правило будет применяться к обоим протоколам;
  • source и destination — это отправитель и получатель пакета. В качестве этих параметров может быть использован IP-адрес (address), сервис (service name), порт (port), протокол (protocol) и так далее;
  • log — позволяет логгировать прохождение пакетов, например в syslog. В этой настройке вы можете указать префикс строчки лога и уровень подробности логгирования;
  • audit — это альтернативный способ логгирования, когда сообщения будут отправляться в службу auditd.
  • Действие — это действие, которое необходимо выполнить с совпавшим пакетом. Доступны: accept, drop, reject, mark.

Давайте рассмотрим несколько примеров. Нам необходимо заблокировать доступ к серверу для пользователя с IP 135.152.53.5:

sudo firewall-cmd —zone=public —add-rich-rule ‘rule family="ipv4" source address=135.152.53.5 reject’

Или нам нужно запретить для этого же пользователя только доступ к порту 22:

sudo firewall-cmd —zone=public —add-rich-rule ‘rule family="ipv4" source address=135.152.53.5 port port=22 protocol=tcp reject’

Посмотреть все расширенные правила можно командой:

sudo firewall-cmd —list-rich-rules

Выводы

В этой статье мы разобрали, как выполняется настройка firewall в CentOS 7 и какие задачи можно с помощью него выполнить. Программой намного проще пользоваться, чем iptables, но по моему мнению надстройка фаервола от Ubuntu — ufw ещё проще в использовании.

Нет похожих записей

Оцените статью:

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.

3 комментария

Зачем копипастить статьи?, Этой гнилью от Красной Шляпы, никто не пользуется, даже на серверах. 90% Напишите про Minix и как его поднять в desktop. И как потом с этого болгенос сделать, 90% серверов мира на BSD/

Нормвально-нормально, я после Fedora тоже хотел себе CentOS запилить, но как-то не срослось. За статью спасиб по-любому )

Спасибо за статью. Подскажите CUPS не добавляется как сервис? если добавить 631 порт, то заходит на страницу.

Firewalld — утилита для управления встроенным в ядро Linux брандмауэром Netfilter. Несмотря на собственный синтаксис, имеет такой же принцип работы, как Iptables. Дополнительно про управление Netfilter при помощи последнего.

Установка и запуск

В некоторых системах CentOS может не оказаться firewalld. Для его установки вводим:

yum install firewalld

Для автоматического зауска вводим:

systemctl enable firewalld

И для запуска службы:

systemctl start firewalld

Общие команды для управления firewalld

Мягко перечитать правила (применить настройки):

Перечитать правила и сбросить текущие подключения:

* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld.

Посмотреть созданные правила:

systemctl stop firewalld

systemctl start firewalld

systemctl disable firewalld

systemctl enable firewalld

Сохранить текущие правила, сделав их постоянными (permanent):

Управление правилами

Синтаксис

Общий синтаксис для работы с правилами:

firewall-cmd [опции] [зона]

* порядок следования параметров не важен.

  • [опции] — дополнительные параметры для создаваемого правила, например —permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
  • [зона] — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, —zone=dmz. Не обязательный.
  • само правило. Обязательный.

Чтобы правила применялись, не забываем их перечитывать:

Читайте также:  Microsoft exchange information store

Добавление портов

Открыть порт 80:

firewall-cmd —permanent —add-port=80/tcp

* где ключ —permanent — добавить постоянное правило (будет действовать после перезагрузки).

Добавить правило для определенной зоны:

firewall-cmd —permanent —zone=external —add-port=80/tcp

Добавить диапазон портов:

firewall-cmd —permanent —add-port=6500-6700/udp

Добавить несколько правил одной командой:

firewall-cmd —permanent —add-port=80/tcp —add-port=443/tcp

Добавление сервиса

Использование служб, вместо портов, может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.

Посмотреть список доступных служб:

Разрешить порт, например, для сервиса ntp:

firewall-cmd —permanent —add-service=ntp

Создать собственную службу:

firewall-cmd —permanent —new-service=name-service

* где name-service — произвольное имя создаваемой службы.

Добавить порт, например TCP 2200 к службе:

firewall-cmd —permanent —service=name-service —add-port=2200/tcp

Задать описание для удобства:

firewall-cmd —permanent —service=name-service —set-short="Service With This Name"

firewall-cmd —permanent —service=name-service —set-description="Long Description For Service With This Name"

Информацию о созданном сервисе можно получить командой:

Теперь созданную службу можно использовать для создания правил, например:

firewall-cmd —permanent —add-service=name-service

Rich-Rule

rich-rule позволяет создавать правила с условиями.

Например, разрешаем службу http с условием, что запросы будут с определенных IP-адресов (подсети 192.168.0):

firewall-cmd —permanent —add-rich-rule ‘rule family="ipv4" source address="192.168.0.0/24" service name="http" accept’

Список правил с условиями можно отобразить командой:

Удаление правил

Аналогично созданию, но вместо add вводим remove, например —remove-port (удалит порт) или —remove-service (службу).

Удалим правило для открытия 80-о порта:

firewall-cmd —permanent —remove-port=80/tcp

Управление зонами

Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если мы захотим для разных сетевых адаптеров сделать разные по строгости правила.

Посмотреть список всех имеющихся зон:

Посмотреть список используемых зон:

Информация о конкретной зоне:

firewall-cmd —list-all —zone=public

Создать правило для зоны public:

firewall-cmd —permanent —zone=public —add-port=80/tcp

Добавить сетевой интерфейс в зону:

firewall-cmd —permanent —zone=public —remove-interface=ens34

firewall-cmd —permanent —zone=internal —add-interface=ens34

* сначала нужно удалить адаптер из текущей зоны.

Задать действие по умолчанию для зоны:

firewall-cmd —permanent —zone=public —set-target=DROP

Создать новую зону:

firewall-cmd —permanent —new-zone=custom_zone

* чтобы система увидела новую зону custom_zone, команда reload обязательная.

Пример настройки NAT (шлюза)

firewall-cmd —permanent —zone=dmz —add-masquerade

* без указания зон, будет включен для public и external.

Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:

firewall-cmd —permanent —direct —add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE

* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция —direct требуется перед всеми пользовательскими правилами (—passthrough, —add-chain, —remove-chain, —query-chain, —get-chains, —add-rule, —remove-rule, —query-rule, —get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT

* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state —state RELATED,ESTABLISHED -j ACCEPT

* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).

systemctl restart firewalld

* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.

Для просмотра созданных данным способом правил используем команду:

firewall-cmd —direct —get-all-rules

Запретить или разрешить трафик между интерфейсами

Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.

Запретить

Применяется в случаях, когда на сервере включен FORWARD, но необходимо блокировать трафик между определенными сегменами сети.

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

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP

Разрешить

Применяется в случаях, когда интерфейсы находятся в зонах, где по умолчанию, трафик блокируется.

Для разрешения команды, практически, аналогичные:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT

Разрешить трафик в одном направлении

В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

Возможные проблемы при работе с firewalld

1. Ошибка command not found (команда не найдена).

Возможные причины: не установлен пакет или не запущена служба.

Выполняем установку пакета firewalld:

yum install firewalld firewall-config

systemctl start firewalld

2. Не применяются правила.

Причина: не введена команда перезапуска правил.

Если это не помогло, делаем перезапуск со сбросом подключений:

В некоторых случаях, необходимо перезапустить сетевые службы:

systemctl restart network

В исключительных случаях, перезагружаем компьютер:

3. The interface is under control of NetworkManager and already bound to the default zone.

Ошибка появляется при попытке удалить интерфейс из зоны, настройками которого управляет NetworkManager.

Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:

И дописываем следующее:

* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

×