在Linux服務器上,我們經常需要運行各種服務,比如Web服務器(80端口)、SSH遠程連接(22端口)等。這些服務要能對外提供服務,就需要在服務器的防火牆中開放對應的端口。本文將爲Linux新手介紹幾種常見的開放端口方法,內容簡單易懂,適合初學者快速上手。
一、爲什麼需要開放端口?¶
舉個例子:如果你的服務器安裝了Web服務器(如Nginx、Apache),默認通過80端口提供網頁服務。但如果防火牆沒開放80端口,外界訪問時會提示“連接被拒絕”,服務也就無法正常使用。因此,開放端口是讓服務對外通信的必要步驟。
二、常見的Linux防火牆工具¶
不同Linux發行版(如Ubuntu、CentOS)默認使用的防火牆工具不同,以下是最常見的3種,按新手友好度排序:
1. UFW(Uncomplicated Firewall)¶
適用系統:Ubuntu、Debian等基於Debian的發行版
特點:操作極簡,像“開關”一樣簡單,適合純新手入門。
步驟1:檢查UFW狀態¶
如果系統未安裝UFW,先安裝:
sudo apt update && sudo apt install ufw # Ubuntu/Debian專用
查看UFW是否運行(默認未啓用時顯示“Status: inactive”):
sudo ufw status
步驟2:開放端口¶
以開放 22端口(SSH遠程連接) 和 80端口(Web服務) 爲例:
# 開放22端口(TCP協議)
sudo ufw allow 22/tcp
# 開放80端口(TCP協議,HTTP服務)
sudo ufw allow 80/tcp
如果需要開放UDP端口(如DNS的53端口),只需加udp標識:
sudo ufw allow 53/udp
步驟3:啓用UFW¶
開放端口後,必須啓用UFW才能生效:
sudo ufw enable
(啓用時會提示確認,輸入y回車即可)
步驟4:驗證開放結果¶
查看已開放的端口列表:
sudo ufw status
輸出類似:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
2. firewalld(適用於CentOS/RHEL/Fedora)¶
適用系統:CentOS 7+、RHEL、Fedora
特點:動態防火牆管理,支持“區域(zone)”概念,可更靈活地控制不同網絡環境的規則。
步驟1:檢查firewalld狀態¶
CentOS/RHEL默認已安裝firewalld,直接查看狀態:
sudo systemctl status firewalld
(顯示“active (running)”表示已運行)
步驟2:開放端口¶
firewalld默認使用public區域(公共網絡),開放端口需指定區域和協議:
# 開放22端口(TCP)
sudo firewall-cmd --permanent --zone=public --add-port=22/tcp
# 開放80端口(TCP)
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
參數說明:
- --permanent:規則永久生效(重啓後不丟失);
- --zone=public:指定區域爲“public”(公共網絡);
- --add-port=22/tcp:添加TCP協議的22端口。
步驟3:重新加載規則¶
添加規則後,需重啓firewalld或重新加載規則:
sudo firewall-cmd --reload
步驟4:驗證開放結果¶
查看已開放的端口:
sudo firewall-cmd --list-ports
輸出類似:
22/tcp 80/tcp
3. iptables(通用底層工具)¶
適用系統:幾乎所有Linux發行版
特點:功能強大但語法稍複雜,是防火牆的“基石”工具,適合進階用戶。
步驟1:開放端口¶
以開放22端口(TCP)爲例:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
參數說明:
- -A INPUT:將規則追加到INPUT鏈(處理進入服務器的數據包);
- -p tcp:指定協議爲TCP;
- --dport 22:目標端口爲22;
- -j ACCEPT:允許該數據包通過。
步驟2:保存規則(避免重啓丟失)¶
iptables規則默認在重啓後會丟失,需手動保存:
- CentOS/RHEL:
sudo service iptables save
- Ubuntu/Debian:
sudo iptables-save > /etc/iptables/rules.v4
步驟3:驗證開放結果¶
查看INPUT鏈的規則:
sudo iptables -L INPUT --line-numbers
三、如何驗證端口是否開放?¶
開放端口後,需確認是否生效,可通過以下方法驗證:
- telnet測試(需安裝telnet客戶端):
telnet localhost 22 # 測試SSH端口22
若顯示Connected to localhost.,說明端口開放。
- nc(netcat)測試:
nc -zv localhost 80 # 測試Web端口80
若顯示Connection to localhost 80 port [tcp/http] succeeded!,說明端口開放。
- curl測試(Web服務):
curl http://localhost # 若返回Web頁面內容,說明80端口開放
四、新手注意事項¶
- 優先用UFW/firewalld:新手建議從UFW(簡單)或firewalld(靈活)開始,iptables適合進階需求。
- 不要開放高危端口:除非必要,SSH(22)端口不要對所有公網開放,建議限制IP或使用密鑰登錄。
- 規則需永久生效:UFW和firewalld的
--permanent參數可保證重啓後規則保留;iptables需手動保存。 - 關閉防火牆風險高:生產環境嚴禁關閉防火牆,僅測試環境臨時關閉(
sudo ufw disable或systemctl stop firewalld)。 - 檢查服務是否運行:開放端口後,需確保服務本身已啓動(如
systemctl start sshd)。
總結¶
開放Linux服務器端口的核心是通過防火牆工具(UFW/firewalld/iptables)添加規則。新手建議從UFW或firewalld入手,操作簡單且足夠應對日常需求。開放後務必驗證端口狀態,確保服務正常運行。