在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

三、如何驗證端口是否開放?

開放端口後,需確認是否生效,可通過以下方法驗證:

  1. telnet測試(需安裝telnet客戶端):
   telnet localhost 22  # 測試SSH端口22

若顯示Connected to localhost.,說明端口開放。

  1. nc(netcat)測試
   nc -zv localhost 80  # 測試Web端口80

若顯示Connection to localhost 80 port [tcp/http] succeeded!,說明端口開放。

  1. curl測試(Web服務):
   curl http://localhost  # 若返回Web頁面內容,說明80端口開放

四、新手注意事項

  1. 優先用UFW/firewalld:新手建議從UFW(簡單)或firewalld(靈活)開始,iptables適合進階需求。
  2. 不要開放高危端口:除非必要,SSH(22)端口不要對所有公網開放,建議限制IP或使用密鑰登錄。
  3. 規則需永久生效:UFW和firewalld的--permanent參數可保證重啓後規則保留;iptables需手動保存。
  4. 關閉防火牆風險高:生產環境嚴禁關閉防火牆,僅測試環境臨時關閉(sudo ufw disablesystemctl stop firewalld)。
  5. 檢查服務是否運行:開放端口後,需確保服務本身已啓動(如systemctl start sshd)。

總結

開放Linux服務器端口的核心是通過防火牆工具(UFW/firewalld/iptables)添加規則。新手建議從UFW或firewalld入手,操作簡單且足夠應對日常需求。開放後務必驗證端口狀態,確保服務正常運行。

小夜