Открыть порт брандмауэра на 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