Как разрешить трафик с определенного IP-адреса в моей частной сети или разрешить трафик из определенной частной сети через firewalld на определенный порт или службу на сервере Red Hat Enterprise Linux (RHEL) или CentOS?
В этой короткой статье вы узнаете, как открыть порт для определенного IP-адреса или диапазона сети на сервере RHEL или CentOS, на котором запущен межсетевой экран firewalld.
Наиболее подходящий способ решить эту проблему – использовать зону firewalld.
Итак, вам необходимо создать новую зону, в которой будут храниться новые конфигурации (или вы можете использовать любую из доступных безопасных зон по умолчанию).
Открыть порт для определенного IP-адреса в Firewalld
Сначала создайте соответствующее имя зоны (в нашем случае мы использовали mariadb-access, чтобы разрешить доступ к серверу базы данных MySQL).
# firewall-cmd --new-zone=mariadb_access --permanent
# firewall-cmd --reload # firewall-cmd --get-zones
# firewall-cmd --zone=mariadb-access --add-source=10.24.96.5/20 --permanent # firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent # firewall-cmd --reload
# firewall-cmd --zone=mariadb-access --add-source=10.24.96.0/20 --permanent # firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent # firewall-cmd --reload
Чтобы убедиться, что новая зона имеет необходимые настройки, как добавлено выше, проверьте ее сведения с помощью следующей команды.
# firewall-cmd --zone=mariadb-access --list-all
Как удалить порт и зону из Firewalld
Вы можете удалить исходный IP-адрес или сеть, как показано далее:
# firewall-cmd --zone=mariadb-access --remove-source=10.24.96.5/20 --permanent # firewall-cmd --reload
Чтобы удалить порт из зоны, выполните следующую команду и перезагрузите настройки firewalld:
# firewall-cmd --zone=mariadb-access --remove-port=3306/tcp --permanent # firewall-cmd --reload
Чтобы удалить зону, выполните следующую команду и перезагрузите настройки firewalld:
# firewall-cmd --permanent --delete-zone=mariadb_access # firewall-cmd --reload
# firewall-cmd --permanent –zone=mariadb-access --add-rich-rule='rule family="ipv4" source address="10.24.96.5/20" port protocol="tcp" port="3306" accept'
Зачем вы людей обманываете? Вы вообще понимаете что это так не работает? С таким подходом к написанию фаервола у вас будут большие проблемы. Судя по написаному вы видимо не понимаете в принципе как работает iptables. Frewall-cmd это оболочка для iptables, к тому же довольно сырая.
# firewall-cmd –zone=mariadb-access –add-source=10.24.96.0/20 –permanent
создаёт правило, проверяется через iptables -nvL. Iptables его читает, применяет. Дальше видит вот это безумие:
#firewall-cmd –zone=mariadb-access –add-port=3306/tcp –permanent
И говорит “Воу да можно пропускать всё подряд на открытый порт и мне пофигу что было там выше!”
Понимаете?! Iptables читает и применяет правила сверху вниз и то что вы хотите сделать делаеться только одной строкой с указанием ip port interface. ОДНОЙ строкой. Одним правилом . И не через firewall-cmd. Иначе вам в порт влетает всё подряд с игнором ip source. Я проверил.