CentOS 7 firewalld 防火墙设置

设置防火墙

CentOS 7版本已经舍弃了iptables,改用firewall-cmd来设置防火墙相关配置,我从网上总结了一下,基本是够用了。也是走了一些弯路。希望下面的内容可以对大家学习有帮助。

CentOS 6 以上版本的请查看:CentOS 6 iptables 防火墙设置_dling8的博客-CSDN博客


1.云主机的防火墙一般默认为关闭状态,无法使用 firewall-cmd 命令;

2.首先编辑文件:    

vim /usr/lib/firewalld/services/ssh.xml

  修改远程连接的端口号,默认为22,若你没有修改过默认端口号,此处不用修改;
    <port protocol="tcp" port="22"/>
  我的远程连接端口号设置成了12022,则修改为:

<port protocol="tcp" port="12022"/>

  注意:此处若不修改,也可在第3步中添加对应的端口号。

3.添加其它开放端口,编辑文件 (这个文件目录和步骤2中不是同一个噢!):    

vim /etc/firewalld/zones/public.xml

  在文件中添加(端口号根据自身需求添加):
    <port protocol="tcp" port="80"/>

----------------------------------中间为public.xml文件内容-------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="80"/>
  <port protocol="tcp" port="8001"/>
  <port protocol="tcp" port="8080"/>
  <port protocol="tcp" port="12306"/>
  <port protocol="tcp" port="10080"/>
  <rule family="ipv4">
    <port protocol="tcp" port="8002"/>
    <accept/>
  </rule>
</zone>

----------------------------------中间public.xml为文件内容-------------------------------------------

4.在启动firewalld.service服务前,需要关闭该服务的开机自动启动功能(默认一般是关闭的),防止我们上面端口设置错误,导致启动服务后无法连接远程的尴尬情况。如果无法连接,还可以重启云主机。    

systemctl disable firewalld

  检查是否设置成功:   

systemctl is-enable firewalld

  若显示disabled则表示设置成功

5.此时可以放心的启动firewalld.service服务了

systemctl restart firewalld

6.启动后,若远程连接正常,则说明设置正确,可以查看防火墙运行状态

systemctl status firewalld

 7.此时可以使用 firewall-cmd 命令了,先来添加一个端口(--permanent参数表示永久有效,若不加重启系统后失效)

  /*每次进行 添加/删除 操作时,必须执行:firewall-cmd --reload,否则使用命令:firewall-cmd --list-all,进行查看时,可能还未生效*/  

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

  默认zone为public(可以在/etc/firewalld/firewalld.conf中设置),上面的语句等同于:
    firewall-cmd --permanent --zone=public --add-port=9888/tcp

  也可以指定zone,例如:
    firewall-cmd --permanent --zone=abc --add-port=9888/tcp
  会把端口配置到abc.xml文件中,前提你要先添加这个文件

  通过下面的命令,可以查看所有添加的规则、服务、端口等    

firewall-cmd --list-all

8.添加端口后记得重载,才能刷新配置,以下两个命令都可以,任选一    

firewall-cmd --reload
systemctl restart firewalld

9.firewall-cmd命令有很多,可以通过 firewall-cmd -h 查看
 

10.其它设置:
/**设置任意ip访问服务器的 10022端口**/
方式一:

<port protocol="tcp" port="10022"/>

方式二:

<rule family="ipv4">
    <port protocol="tcp" port="10022"/>
    <accept/>
</rule>

/**指定 ip:122.10.70.234 访问服务器的 514端口**/

<rule family="ipv4">
    <source address="122.10.70.234"/>
    <port protocol="udp" port="514"/>
    <accept/>
</rule>

端口转发

每次进行 添加/删除 操作时,必须执行:firewall-cmd --reload,否则使用命令:firewall-cmd --list-all,进行查看时,可能还未生效


1.需先开启允许伪装IP,否则设置转发无效    

firewall-cmd --query-masquerade                 // 检查是否允许伪装IP
firewall-cmd --permanent --add-masquerade       // 允许防火墙伪装IP
firewall-cmd --permanent --remove-masquerade    // 禁止防火墙伪装IP

2.设置转发: 注意 --zone=public 为默认的,可以不用写
  a 本机端口转发:转发 tcp 8001端口 至 8002    

firewall-cmd --zone=public --permanent --add-forward-port=port=8001:proto=tcp:toport=8002

  b 本机转发到其它IP的相同端口:转发 tcp 8001端口 至 121.196.223.183:10869    

firewall-cmd --zone=public --permanent --add-forward-port=port=8001:proto=tcp:toaddr=121.196.223.183

  c 本机转发到其它IP的不同端口:转发 tcp 8001端口 至 121.196.223.183:10869    

firewall-cmd --zone=public --permanent --add-forward-port=port=8001:proto=tcp:toport=80:toaddr=121.196.223.183
    
firewall-cmd --zone=public --permanent --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=121.196.223.183
    /*我在别的zone里面添加好像没用,大家可以试试*/


### 注意1 如果不做下面的修改,当你重新启动系统后,并不会进行转发。(为了保证成功率,此处建议修改)
1.编辑文件    

vim /etc/sysctl.conf

2.修改参数为 1 ,注意 等号 前后都有空格    

net.ipv4.ip_forward = 1

3.使刚刚的修改立即生效,执行后会打印出配置信息

sysctl -p

### 注意2 在配置正确的情况下,如果转发并未生效,可以尝试使用命令:systemctl restart firewalld,重启下防火墙

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值