一:首先来了解下Centos7新增的命令工具网络防火墙:firewall-cmd,非常强大!
firewalld-cmd是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。firewall常用操作示例: 状态:# systemctl status firewalld 或者 firewall-cmd --state(查看防火墙开启关闭状态) 启动:# systemctl start firewalld 停止:# systemctl stop firewalld 使能:# systemctl enable firewalld (可让防火墙开机自启动,防火墙默认开机不启动的,需手动启动) 禁用:# systemctl disable firewalld#查看当前zonesfirewall-cmd --get-active-zones#显示当前开放端口firewall-cmd --zone=public --list-ports#添加端口到永久区firewall-cmd --permanent --zone=public --add-port=61080/tcp --add-port=61446/tcp #添加服务到永久区firewall-cmd --permanent --zone=public --add-service=samba#刷新配置,添加到永久区后必须刷新配置才能生效firewall-cmd --reload #显示当前开放的服务firewall-cmd --zone=public --list-service下面来说一下: zone 这个参数是做什么的 zone的概念:硬件防火墙默认一般有三个区,firewall引入这一概念系统默认存在以下区域: drop:默认丢弃所有包 block:拒绝所有外部连接,允许内部发起的连接 public:指定外部连接可以进入 external:这个不太明白,功能上和上面相同,允许指定的外部连接 dmz:和硬件防火墙一样,受限制的公共连接可以进入 work:工作区,概念和workgoup一样,也是指定的外部连接允许 home:类似家庭组 internal:信任所有连接
二:来看看具体的操作
1、首先要明白,firewall-cmd是Centos7系统的网络防火墙,既然是防火墙它就有能力确定外面想访问内部端口的权限,我之前在阿里云Centos7.3上安装了mysql,它的内部端口号是3306,但是我用sql的图形化界面工具通过公网IP始终连接不了,后来找到了原因,就是系统打开了firewall之后没有开放3306端口的外界访问权限,所以这点非常重要,需要用:firewall-cmd --zone=public --list-ports查看当前linux系统开放的端口号,也可以用netstat -tunlp 查看当前linux系统正在监听的端口号,就知道自己想要的liunx系统端口号是否已经打开。没有开放的,但是自己又需要用到的,那就马上用:firewall-cmd --permanent --zone=public --add-port=8080/tcp开放端口,其中数字就是你想要开放的端口号, --permanent参数表示永久的意思,这样就不必每次启动防火墙的时候配置,tcp代表你要开放的端口号的网络协议,也可以是udp的。
2、接来下就是允许防火墙伪装ip : firewall-cmd --add-masquerade --permanent 这一步必须做。
3、将80端口的流量转发至8080: firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
4.最后别忘了 firewall-cmd --reload 使最新的防火墙设置规则生效。
自己亲测,非常好用,firewall-cmd就是为代替iptables而生!
本文地址:https://cloud.tencent.com/developer/article/1193216
版权声明:本文为原创文章,版权归 witt 所有,欢迎分享本文,转载请保留出处!