How to block IP range or country with firewalld?

Posted December 7, 2016 41.3k views


How can I block IP range or entire country on CentOS 7 with FirewallD? The IP range starts with 180.76.15.* and is Chinese IP.

The command below works for single IP but not for range:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='' reject" 

I tried with this command for the range but without success:

firewall-cmd –permanent –add-rich-rule=“rule family=‘ipv4’ source address='180.76.15/24’ reject”


These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
6 answers

I think the correct command is:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='' reject"

Pay attention to highlighted part

You have to reload firewalld after adding a permanent rule.

firewall-cmd --reload

Thank you xMudrii,

This command is executed successfully. Lets see if it works and the Chinese visitors from 180.76.15* will not have access to the site anymore.


The command is not working, I run the command and reload my firewall for the changes to take effect, but unfortunately the 180.76.15* still have access to my site. Any other ideas?

Yeah, I have an idea, why not utilize “UFW” or iptables (conntrack allows the user to log access).

dnf install ufw -y
systemctl enable –now ufw
systemctl start –now ufw

ufw enable

ufw insert 1 deny in from to any comment "Block China Access" # Blocks TCP and UDP access


iptables -I INPUT 1 -p all -s -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j REJECT