博主使用的Redhat本身没有iptables服务,也不能联网安装,因此,只能使用firewalld添加开放端口,以下是一些最基本的关于firewalld的命令:
启动:
systemctl start firewalld
查看状态:
systemctl status firewalld
或者
firewall-cmd --state
停止:
systemctl disable firewalld
禁用:
systemctl stop firewald
接下来是相关教程:
1、查看firewall是否运行,下面两个命令都可以:
systemctl status firewalld.service
firewall-cmd --state
2、查看default zone和active zone(暂时我也不知道这是干什么用的):
我们还没有做任何配置,default zone和active zone都应该是public,命令为:
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
3、查看当前开了哪些服务:
firewall-cmd --list-services
其实这里的每一个服务名对应对应/usr/lib/firewalld/services下面一个xml文件,文件有描述该服务用了什么协议,对应的端口号,这些端口即为外界可以访问的端口。
4、查看还有哪些服务可以打开
firewall-cmd --get-services
你可以现在这里找找有没有你需要开启的服务(例如WebSphere或者db2),如果没有的话,根据上面说的,每一个服务对应一个xml,这时你就需要自己创建一个xml文件了。
5、查看所有打开的端口(博主在执行这条命令后没有显示任何东西,不知道是什么原因):
firewall-cmd --zone=public --list-ports
6、自己添加一个服务:
在/usr/lib/firewalld/services,随便拷贝一个xml文件到一个新名字,比如ssh.xml,把里面的short(这个改不改基本没有什么问题)、protocol、port,其中protocol可以通过命令:
netstat -anp | grep 你的端口号
显示的第一列就是你所用到的协议,有时可能显示tcp6
这种协议加序号的格式,依旧是tcp协议。例如WebSphere就是tcp协议,端口号为9060文件添加好后,记住改名字,例如:WebSphere.xml,保存在/usr/lib/firewalld/services目录下。
然后更新防火墙规则:
firewall-cmd --reload
查看还有哪些服务可以打开,现在应该可以看到你添加的WebSphere服务。
此时就可以添加你的WebSphere服务到firewalld,执行命令:
firewall-cmd --add-service=WebSphere
这样添加的service当前立刻生效,但系统下次启动就失效,可以测试使用。要永久开发一个service,加上 –permanent:
firewall-cmd --permanent --add-service=WebSphere
这时候你的9060端口就可以被外网访问,你可以试试telnet命令看看有没有成功。
网上有的说此时还得再重启一下firewalld服务才可以真正成功,假如你的外网依旧无法telnet的话,可以试试重启一下firewalld服务。
下面是一篇关于讲解firewalld的文章:Firewalld的结构,有兴趣的小伙伴可以自己看看。