Открыть порт брандмауэра на CentOS 7
Я использую CentOS 7, и я должен убедиться, что порты 2888 и 3888 открыты.
я прочитала в этой статье но это не сработало, потому что на CentOS 7 OS нет .
кто-то сказал мне, что приведенный выше URL недействителен для CentOS 7. и я должен следовать за ним!--9-->этой. Но в этой статье мне не ясно, какую именно команду мне нужно выполнить.
Я нашел
firewall-cmd --zone=public --add-port=2888/tcp
но это не выжить перезагрузки.
Итак, как я могу открыть порты и заставить его пережить перезагрузку?
10 ответов
используйте эту команду, чтобы найти активную зону(ы):
firewall-cmd --get-active-zones
он будет говорить либо public, dmz, или что-то еще. Вы должны обращаться только к необходимым зонам.
в случае публичной попытки:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
потом не забудьте перезагрузить брандмауэр, чтобы изменения вступили в силу.
firewall-cmd --reload
в противном случае замените public для вашей зоны, например, если ваша зона dmz:
firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
ответ ganeshragav - это правильно, но это также полезно знать, что вы можете использовать:
firewall-cmd --permanent --zone=public --add-port=2888/tcp
но если это известная услуга, вы можете использовать:
firewall-cmd --permanent --zone=public --add-service=http
а затем перезагрузите брандмауэр
firewall-cmd --reload
[ ответ изменен, чтобы отразить комментарий Мартина Питера, оригинальный ответ был --permanent
В конце командной строки ]
CentOS (RHEL) 7, изменил брандмауэр на использование firewall-cmd
который имеет представление о зонах, которые похожи на версию Windows публичных, домашних и частных сетей. Вы должны смотреть здесь чтобы выяснить, какой из них вы думаете, вы должны использовать. EL7 использует public
по умолчанию, так что мои примеры ниже используют.
вы можете проверить, какую зону вы используете с firewall-cmd --list-all
и измените его на firewall-cmd --set-default-zone=<zone>
.
затем вы узнаете, какую зону разрешить службе (или порт) на:
firewall-cmd --permanent --zone=<zone> --add-service=http
firewall-cmd --permanent --zone=<zone> --add-port=80/tcp
вы можете проверить, действительно ли порт открыт, запустив:
firewall-cmd --zone=<zone> --query-port=80/tcp
firewall-cmd --zone=<zone> --query-service=http
по словам документация,
при внесении изменений в настройки брандмауэра в постоянном режиме выбор вступает в силу только при перезагрузке брандмауэра или перезагрузка системы.
вы можете перезагрузить настройки брандмауэра с помощью:firewall-cmd --reload
.
Fedora, сделал это через iptables
sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save
Кажется, работает
пока ganeshragav и Sotsir обеспечить правильные и непосредственно применимые подходы, полезно отметить, что вы можете добавить свои собственные услуги в /etc/firewalld/services
. Для вдохновения, посмотрите на /usr/lib/firewalld/services/
, где расположены предопределенные службы firewalld.
преимущество этого подхода в том, что позже вы узнаете, почему эти порты открыты, как вы описали это в файле service. Кроме того, теперь вы можете применить его к любой зоне, без риска опечатки. Кроме того, изменения в сервисе будут применяться не ко всем зонам отдельно, а только к файлу сервиса.
например, вы можете создать /etc/firewalld/services/foobar.xml
:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FooBar</short>
<description>
This option allows you to create FooBar connections between
your computer and mobile device. You need to have FooBar
installed on both sides for this option to be useful.
</description>
<port protocol="tcp" port="2888"/>
<port protocol="tcp" port="3888"/>
</service>
(для получения информации о синтаксисе, do man firewalld.service
.)
как только этот файл будет создан, вы можете firewall-cmd --reload
чтобы он стал доступен, а затем навсегда добавить его в некоторую зону с
firewall-cmd --permanent --zone=<zone> --add-service=foobar
затем с firewall-cmd --reload
чтобы сделать его активным сразу.
для просмотра открытых портов, выполните следующую команду.
firewall-cmd --list-ports
мы используем следующие сервисы порты открыты.
firewall-cmd --list-services
мы используем следующие сервисы порты открыты и увидеть открытые порты
firewall-cmd --list-all
чтобы добавить службу в брандмауэр, мы используем следующую команду, в этом случае служба будет использовать любой порт для открытия в брандмауэре.
firewall-cmd --add-services=ntp
для того, чтобы эта служба была постоянно открыта, мы используем следующее команда.
firewall-cmd -add-service=ntp --permanent
добавить порт, используйте следующую команду
firewall-cmd --add-port=132/tcp --permanent
для запуска брандмауэра необходимо перезагрузить его с помощью следующей команды.
firewall-cmd --reload
Йа Али
лучшие ответы здесь работать, но я нашел что-то более элегантное в ответ Майкла Хэмптона к смежному вопросу. "Новый" (firewalld-0.3.9-11+) до firewall-cmd
позволяет создавать правила выполнения и проверить их, прежде чем сделать их постоянными:
$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent
или вернуть изменения только во время выполнения:
$ firewall-cmd --reload
см. Также комментарий Энтони Нгуена. По-видимому, firewall-cmd --reload может работать неправильно в некоторых случаях, когда правила были удалены. В этом случае он предлагает перезапустить службу firewalld:
$ systemctl restart firewalld
для просмотра открытых портов, выполните следующую команду.
брандмауэр cmd --список-портов Мы используем следующие сервисы порты открыты.
firewall-cmd --list-услуги Мы используем следующие сервисы порты открыты и увидеть открытые порты
брандмауэр cmd --список-все Чтобы добавить службу в брандмауэр, мы используем следующую команду, в этом случае служба будет использовать любой порт для открытия в брандмауэре.
брандмауэр-cmd -- add-services=ntp Чтобы эта служба была постоянно открыта, мы используем следующую команду.
брандмауэр-cmd-add-service=ntp --постоянный Чтобы добавить порт, используйте следующую команду
firewall-cmd --add-port=132 / tcp --постоянный
Если вы знакомы с сервисом iptables, как в centos 6 или ранее, вы все еще можете использовать сервис iptables путем ручной установки:
Шаг 1 => установить epel РЕПО
yum установить epel-release
Шаг 2 = > установить iptables service
yum установить iptables-услуги
Шаг 3 = > остановить службу firewalld
systemctl остановить выполнение firewalld
Шаг 4 = > отключить службу firewalld при запуске
systemctl отключить firewalld
Шаг 5 = > запустить службу iptables
systemctl запустить iptables
Шаг 6 = > включить iptables при запуске
systemctl включить iptables
наконец, теперь вы можете редактировать конфигурацию iptables в /etc/sysconfig / iptables.
So - > изменить правило -> перезагрузить/перезапустить.
как старые centos с той же функцией, как firewalld.
Firewalld немного не интуитивно понятен для ветерана iptables. Для тех, кто предпочитает iptables-управляемый брандмауэр с iptables-подобный синтаксис в легко настраиваемом дереве, попробуйте заменить firewalld на fwtree: https://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ а затем сделайте следующее:
echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
systemctl reload fwtree