Открыть порт брандмауэра на CentOS 7

Я использую CentOS 7, и я должен гарантировать, что порты 2888 и 3888 открыты.

Я прочитал эту статью, но это не сработало, потому что на CentOS 7 OS нет команды iptables save .

Кто-то сказал мне, что указанный выше URL недействителен для CentOS 7. И я должен следовать этому . Но эта статья мне не совсем понятна о том, какую команду мне нужно выполнить.

Я также нашел

 firewall-cmd --zone=public --add-port=2888/tcp 

но это не выдерживает перезагрузки.

Итак, как я могу открыть порты и пережить перезагрузку?

    Используйте эту команду, чтобы найти свою активную зону (зоны):

     firewall-cmd --get-active-zones 

    Он скажет либо общественность, либо dmz, либо что-то еще. Вы должны обращаться только к требуемым зонам.

    В случае публичной попытки:

     firewall-cmd --zone=public --add-port=2888/tcp --permanent 

    Затем не забудьте перезагрузить брандмауэр, чтобы изменения вступили в силу.

     firewall-cmd --reload 

    В противном случае замените публикацию для своей зоны, например, если ваша зона – 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= .

    Затем вы узнаете, в какой зоне разрешен сервис (или порт):

    firewall-cmd --permanent --zone= --add-service=http

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

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

    firewall-cmd --zone= --query-port=80/tcp

    firewall-cmd --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.

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

    Например, вы можете создать /etc/firewalld/services/foobar.xml :

       FooBar  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.     

    (Для получения информации о синтаксисе сделайте man firewalld.service .)

    Как только этот файл будет создан, вы можете настроить firewall-cmd --reload чтобы он стал доступен, а затем постоянно добавлять его в какую-либо зону с помощью

     firewall-cmd --permanent --zone= --add-service=foobar 

    а затем firewall-cmd --reload чтобы сразу 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 +) --runtime-to-permanent для firewall-cmd позволяет создавать правила времени выполнения и тестировать их, прежде чем сделать их перманентными:

     $ firewall-cmd --zone= --add-port=2888/tcp  $ firewall-cmd --runtime-to-permanent 

    Или чтобы вернуть изменения только во время выполнения:

     $ firewall-cmd --reload 

    Также см . Комментарий Антони Нгуена . Очевидно, что firewall-cmd -reload может работать некорректно в некоторых случаях, когда правила были удалены. В этом случае он предлагает перезапустить firewalld-службу:

     $ systemctl restart firewalld 

    Чтобы просмотреть открытые порты, используйте следующую команду.

    firewall-cmd -list-ports Мы используем следующее, чтобы увидеть службы, порты которых открыты.

    firewall-cmd -list-services Мы используем следующее, чтобы увидеть службы, порты которых открыты и открыть открытые порты

    firewall-cmd -list-all Чтобы добавить службу в брандмауэр, мы используем следующую команду, и в этом случае служба будет использовать любой порт для открытия в брандмауэре.

    firewall-cmd -add-services = ntp Чтобы эта служба была постоянно открыта, мы используем следующую команду.

    firewall-cmd -add-service = ntp -perantent Чтобы добавить порт, используйте следующую команду:

    firewall-cmd -add-port = 132 / tcp -permanent

    Если вы знакомы с сервисом iptables, например, в centos 6 или ранее, вы все равно можете использовать сервис iptables вручную:

    step 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

    step 6 => включить iptables при запуске

    Включить systemptl iptables

    наконец, вы теперь можете редактировать конфигурацию iptables в / etc / sysconfig / iptables.

    So -> edit rule -> reload / restart.

    делайте, как старые 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 
    Давайте будем гением компьютера.