如果希望在服務器上提供服務,諸如CentOS或RHEL的企業級Linux發行版包含內置的強大防火牆,它們默認的防火牆規則十分嚴格。因此,如果你安裝了任何定制的服務(比如web服務器、NFS和Samba),那麼它們的流量很有可能被防火牆規則阻塞。所以需要在防火牆上開啟必要的端口以允許流量通過。
在CentOS/RHEL 6或更早的版本上,iptables服務允許用戶與netfilter內核模塊交互來在用戶空間中配置防火牆規則。然而,從CentOS/RHEL 7開始,一個叫做firewalld新用戶空間接口被引入以取代iptables服務。
使用這個命令察看當前的防火牆規則:
代碼如下:
$ sudo iptables -L
現在,讓我們看看如何在CentOS/RHEL上修改防火牆來開啟一個端口。
在CentOS/RHEL 7上開啟端口
啟動CentOS/RHEL 7後,防火牆規則設置由firewalld服務進程默認管理。一個叫做firewall-cmd的命令行客戶端支持和這個守護進程通信以永久修改防火牆規則。
使用這些命令來永久打開一個新端口(如TCP/80)。
代碼如下:
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
如果不使用“--permanent”標記,把麼防火牆規則在重啟後會失效。
在CentOS/RHEL 6上開啟端口
在CentOS/RHEL 6甚至更早版本系統上,iptables服務負責維護防火牆規則。
使用iptables的第一條命令可以通過防火牆開啟一個新TCP/UDP端口。為了永久保存修改過的規則,還需要第二條命令。
代碼如下:
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save
另一種方法是通過一個名為system-config-firewall-tui的命令行用戶接口(TUI)的防火牆客戶端。
代碼如下:
$ sudo system-config-firewall-tui
選擇位於中間的“Customize”按鈕,按下ENTER鍵即可。
如果想要為任何已知的服務(如web服務器)修改防火牆,只需勾選該服務,然後關閉工具。如果想要開啟任意一個TCP/UDP端口,選擇“Forward”按鈕,然後進入下一個界面。
選擇“Add”按鈕添加一條新規則。
指定一個端口(如80)或者端口范圍(如3000-3030)和協議(如tcp或udp)。
最後,保存修改過的配置,關閉工具。這樣,防火牆就永久保存了。