I need to open multiple different ports (not in ranges) on a CentOS machine.

I know how to open a port with firewall-cmd, but that gets bothersome for opening like 40 and more ports.

Is there a configuration file where I can define all open ports in one place? Sadly I didn't find anything regarding this.


You can define a service from an xml file containing all the ports you need, add a service from it and then enable it. Create the service.xml file like so:

<?xml version="1.0" encoding="utf-8"?>
  <port port="port1" protocol="proto1"/>
  <port port="port2" protocol="proto2"/>
  <port port="port3" protocol="proto3"/>
  <port port="port4" protocol="proto4"/>

Add new service:

# firewall-offline-cmd --new-service-from-file=service.xml --name=My_Service

Reload firewall-cmd:

# firewall-cmd --reload

Then add your service:

# firewall-cmd --add-service My_Service

| improve this answer | |

You can always make a small script/one-liner:

for i in 80 443 22 123 21 1337 31337
  firewall-cmd --zone=public --add-port=${i}/tcp
| improve this answer | |

If those open ports are in a range for example 2379-2385, you can do as follows:

firewall-cmd --zone=zone_name --add-port=2379-2385/tcp 

To make it permanent add --permanent option at end.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.