公司用到了jenkins,就在自己虚拟机里面部署了一个jenkins。部署成功之后,在Linux虚拟机里面能正常访问,但是外部真实机却不能访问。当时的第一反应就是觉得应该是权限问题,猜测会不会是jenkins需要开启某个权限,外部的机器才能访问。但是找了好久的资料,也没说到要开启什么权限之类的。于是又在Linux里面部署了一个tomcat,发现tomcat也不能访问,那就不是jenkins的问题了,肯定是Linux机器的原因。自然而然的想到会不会是防护墙的原因,果然,防火墙一关就OK了。
关闭防火墙确实能解决这个问题,但是在真实环境中,防火墙是不能直接关闭了,太危险。怎么办呢?只需要开放一下服务对应的端口不就可以了吗
方法一:关闭防火墙
[root@localhost ~]# service iptables stop #关闭防火墙
[root@localhost ~]# service iptables start #开启防火墙
[root@localhost ~]# service iptables status #查看防火墙状态
cenOS7或者Red Hat7操作防火墙的命令改变了,命令如下:
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# systemctl start firewalld.service #开启防火墙
[root@localhost ~]# systemctl status firewalld.service #查看防火墙状态
方法二:开放指定的端口
[root@localhost ~]# vim /etc/sysconfig/iptables
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
备注: 找到 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 这一行,在这一行后天添加如上红色的一行,即可开放8080端口
[root@localhost ~]# service iptables restart #重启防火墙才能生效
cenOS7或者Red Hat7开放端口方法如下:
[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@localhost ~# firewall-cmd --reload #开放端口只需需要重启防火墙才能生效
success
备注:开放端口命令解释
-zone 作用域
-add-port=8080/tcp 添加端口,格式为:端口/通信协议
--permanent 永久生效