Skip to main content
  1. Posts/

解決 Ubuntu 無法使用 Wi-Fi 熱點(Hotspot):關於 UFW 防火牆的設定

·909 words
學習筆記 Linux Ubuntu UFW
Hyper Hu
Author
Hyper Hu
Building systems. Breaking patterns. Writing in between. Somewhere in this infinite loop of code, silence, and caffeine, I’m still searching for elegance.

在 Ubuntu 系統上啟用 Wi-Fi 熱點(Hotspot)時,有時會遇到裝置雖然可以連線,但卻無法正常上網的情況。這個問題經常與防火牆(UFW)的設定有關,而不是網卡或 NetworkManager 本身的問題。

本篇文章將說明如何判斷問題是否出在防火牆,並提供完整的 UFW 設定方式來解決此問題。

筆者使用的是 Ubuntu 24.04.2 LTS,並且已經安裝了 ufw 防火牆。

初步測試:停用防火牆確認是否為問題根源
#

在終端機輸入以下指令暫時停用防火牆:

$ sudo ufw disable

接著重新啟用 Wi-Fi 熱點,讓其他裝置嘗試連線與上網。如果此時一切正常,代表問題確實出在防火牆的規則上。

查看封包是否被防火牆擋住
#

UFW 的封包日誌儲存在 /var/log/ufw.log。你可以使用以下指令持續監看日誌:

$ sudo tail -f /var/log/ufw.log

當你連接熱點並開啟網頁時,若有封包被擋住,會看到類似以下的訊息:

[UFW BLOCK] IN=wlo1 OUT=eno2 ...

這表示:

  • 封包是從 wlo1(Wi-Fi)進來
  • 想從 eno2 出去,卻被擋下來了

此時,你可以根據實際介面設定對應的 allow inroute allow out 規則,使封包可以正常轉送。

正確的 UFW 設定方式
#

1. 重新啟用防火牆:
#

$ sudo ufw enable

2. 設定允許的網路介面:
#

以下範例中,我們假設:

  • wlo1 是 Wi-Fi(作為熱點的輸入介面)
  • eno2 是有線網路(作為熱點的輸出介面)

請根據實際情況調整介面名稱。

$ sudo ufw allow in on wlo1
$ sudo ufw route allow out on eno2

確認防火牆規則是否正確
#

使用以下指令檢查目前的防火牆規則:

$ sudo ufw status numbered

你應該會看到類似以下的規則:

[ 1] Anywhere on wlo1           ALLOW IN    Anywhere
[ 2] Anywhere on eno2           ALLOW FWD   Anywhere                   (out)

通常只需要這兩條規則即可使熱點正常運作。

如何確認網路流向(IN/OUT 介面)
#

若不確定輸入(IN)與輸出(OUT)介面是哪一個,可以使用以下指令查看網卡狀態:

$ ifconfig

尋找 inet 欄位中的 IP 以及各介面是否顯示為 RUNNING,即可判斷哪一個是連外網路的(例如 eno2)與 Wi-Fi 熱點的來源(例如 wlo1)。

你可以使用以下指令安裝 ifconfig

$ sudo apt install net-tools

總結
#

當 Ubuntu 上的 Wi-Fi 熱點無法正常使用時,請務必檢查防火牆的設定。透過正確的 UFW 規則設定,我們可以有效解決封包轉送被阻擋的問題,讓熱點功能恢復正常。

這是簡單卻常被忽略的細節,希望這篇文章能幫助你快速解決問題,並理解其中的原理。

參考資料 & 延伸閱讀
#