Откройте порт брандмауэра на CentOS 7
Я использую CentOS 7 и должен убедиться, что порты 2888 и 3888 открыты.
Я прочитал эту статью, но это не сработало, потому что в ОС CentOS 7 нет команды iptables save
.
Кто-то сказал мне, что указанный выше URL-адрес недействителен для CentOS 7. и я должен следовать этому.
Но из этой статьи мне не ясно, какую именно команду мне нужно выполнить.
Я также нашел
firewall-cmd --zone=public --add-port=2888/tcp
но это не переживает перезагрузки.
Так как же я могу открыть порты и сделать так, чтобы он пережил перезагрузки?
Ответы
Ответ 1
Используйте эту команду, чтобы найти ваши активные зоны:
firewall-cmd --get-active-zones
Это скажет либо public, dmz, либо что-то еще. Вы должны подать заявку только на необходимые зоны.
В случае публики попробуйте:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
Затем не забудьте перезагрузить брандмауэр, чтобы изменения вступили в силу.
firewall-cmd --reload
В противном случае, замените общедоступную для своей зоны, например, если ваша зона dmz:
firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
Ответ 2
Ответ ganeshragav правильный, но
также полезно знать, что вы можете использовать:
firewall-cmd --permanent --zone=public --add-port=2888/tcp
но если это известная услуга, вы можете использовать:
firewall-cmd --permanent --zone=public --add-service=http
а затем перезагрузите брандмауэр
firewall-cmd --reload
[Ответ изменен, чтобы отразить комментарий Мартина Питера, исходный ответ был --permanent
в конце командной строки]
Ответ 3
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
В соответствии с documentation,
При внесении изменений в настройки брандмауэра в режиме постоянной выбор будет действовать только при перезагрузке брандмауэра или перезапуск системы.
Вы можете перезагрузить настройки брандмауэра с помощью firewall-cmd --reload
.
Ответ 4
Fedora, сделал это через iptables
sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save
Кажется, работает
Ответ 5
Чтобы просмотреть открытые порты, используйте следующую команду.
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
Я Али
Ответ 6
В то время как ganeshragav и Sotsir предоставляют правильные и непосредственно применимые подходы, полезно отметить, что вы можете добавьте свои собственные услуги в /etc/firewalld/services
. Для вдохновения посмотрите /usr/lib/firewalld/services/
, где находятся предопределенные службы firewalld.
Преимущество этого подхода заключается в том, что позже вы узнаете, почему эти порты открыты, как вы описали его в служебном файле. Кроме того, теперь вы можете применять его в любой зоне без риска опечаток. Кроме того, изменения в службе не обязательно будут применяться ко всем зонам отдельно, а только к служебному файлу.
Например, вы можете создать /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>
(Для получения информации о синтаксисе выполните man firewalld.service
.)
Как только этот файл будет создан, вы можете firewall-cmd --reload
, чтобы он стал доступным, а затем постоянно добавьте его в какую-либо зону с помощью
firewall-cmd --permanent --zone=<zone> --add-service=foobar
а затем firewall-cmd --reload
, чтобы сразу активировать его.
Ответ 7
Лучшие ответы здесь работают, но я нашел что-то более элегантное в ответе Майкла Хэмптона на соответствующий вопрос. Опция "новый" (firewalld-0.3.9-11 +) --runtime-to-permanent
для 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
Ответ 8
Чтобы просмотреть открытые порты, используйте следующую команду:
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
Ответ 9
Если у вас есть несколько портов для разрешения в Centos 7 FIrewalld, тогда мы можем использовать следующую команду.
#firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent
#firewall-cmd --reload
And check the Port opened or not after reloading the firewall.
#firewall-cmd --list-port
For other configuration [Linuxwindo.com][1]
Ответ 10
Если вы знакомы с услугой iptables, например, в centos 6 или более ранней версии, вы все равно можете использовать сервис iptables вручную:
шаг 1 = > установить epel repo
yum install epel-release
шаг 2 = > установить сервис iptables
yum install iptables-services
шаг 3 = > остановить службу firewalld
systemctl stop firewalld
шаг 4 = > отключить firewalld-сервис при запуске
systemctl отключить firewalld
шаг 5 = > запустить сервис iptables
systemctl start iptables
шаг 6 = > включить iptables при запуске
systemctl включить iptables
Наконец, теперь вы можете редактировать свою конфигурацию iptables в /etc/sysconfig/iptables.
So → edit rule → reload/restart.
делать, как старые centos с такой же функцией, как firewalld.
Ответ 11
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