常用指令
-
查看防火墙状态
firewall-cmd --state
-
停止firewall
systemctl stop firewalld.service
-
禁止开机启动
systemctl disable firewalld.service
-
开放某个服务端口--允许所有IP访问
firewall-cmd --add-port=16379/tcp --permanent
-
移除6379端口-禁止访问
firewall-cmd --permanent --remove-port=6379/tcp firewall-cmd --reload
-
** 只允许指定端口访问指定服务器端口**
# 允许192.168.142.166 IP 访问ES 9200端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" \ port protocol="tcp" port="9200" accept" firewall-cmd --reload
-
删除规则:删除上一条规则--撤销192.168.142.166访问本机9200端口的访问权限
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="9200" accept" firewall-cmd --reload
-
其他指令
#查看开放的端口 $ firewall-cmd --list-ports #查询6379端口是否开放 $ firewall-cmd --query-port=6379/tcp # 查看当前系统打开的所有端口 firewall-cmd --zone=public --list-ports # 获取已激活的zonesudo dockerd –debug firewall-cmd --get-active-zones
-
docker启动失败,防火墙问题
ZONE_CONFLICT: 'docker0' already bound to a zone #Check if docker zone exists in firewall-cmd $ firewall-cmd --get-active-zones #If "docker" zone is available, change interface to docker0 (not persisted) $ sudo firewall-cmd --zone=docker --change-interface=docker0 #If "docker" zone is available, change interface to docker0 (persisted, thanks rbjorklin) $ sudo firewall-cmd --permanent --zone=docker --change-interface=docker0 $ sudo systemctl restart firewalld
-
查看所有的规则
firewall-cmd --list-all
-
端口转发: 只允许外部通过访问18088端口访问服务器8088 web服务, 外部无法通过8088端口服务
- 启用端口转发:
sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
- 添加转发规则:
sudo firewall-cmd --permanent --add-forward-port=port=18088:proto=tcp:toport=8088 sudo firewall-cmd --reload
- 禁用外部通过8088端口访问 web服务
firewall-cmd --permanent --remove-port=8088/tcp sudo firewall-cmd --reload
这些命令将启用端口转发并添加相应的转发规则。
第一个命令启用了IP伪装(masquerade),允许转发流量。
第二个命令添加了转发规则,将通过18088端口的流量转发到8088端口。
第三个:防火墙中添加了阻止8088端口访问的规则
请注意:如果你已经在防火墙中添加了阻止80端口访问的规则,则可以跳过第一步。
- 启用端口转发:
应用
外部通过访问10022端口访问ssh服务
-
检查防火墙是否启用
service firewalld status #如果未启用则启用firewalld服务 service firewalld start
-
检查防火墙现有规则
firewall-cmd --list-all # 输出如下 443/tcp 80/tcp 10022/tcp 9092/tcp 8088/tcp 8080/tcp 22/tcp 20514/udp
-
检查sshd服务, 添加sshd额外监听端口10022,如果已配置,忽略此步骤
vim /etc/ssh/sshd_config # 添加第18行代码 ... 17 Port 22 18 Port 10022 19 #AddressFamily any 20 #ListenAddress 0.0.0.0 21 #ListenAddress :: ... # 重启ssh 服务 service sshd restart
-
启用 firewall端口转发规则功能
sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
-
添加端口转发规则:将10022端口转发至端口22
sudo firewall-cmd --permanent --add-forward-port=port=10022:proto=tcp:toport=22 sudo firewall-cmd --reload
-
禁用外部通过22端口访问sshd服务
firewall-cmd --permanent --remove-port=22/tcp firewall-cmd --reload
-
防火墙中添加了阻止8088/8080端口(星海大数据管理平台)访问的规则
firewall-cmd --permanent --remove-port=8088/tcp firewall-cmd --permanent --remove-port=8080/tcp firewall-cmd --reload
-
添加端口转发规则:将19092端口转发至端口9092(KAFKA服务),同时禁用外部通过9092访问KAFKA服务
firewall-cmd --permanent --add-forward-port=port=19092:proto=tcp:toport=9092 firewall-cmd --permanent --remove-port=9092/tcp sudo firewall-cmd --reload