公司用到了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 永久生效