在 Ubuntu 22 升級到 Ubuntu 24 之後,pppoe(通常指 pppoeconf / pppoe-discovery / pppd-pppoe 等工具)會遇到無法正常運作的情況。這主要和 pppd 與內核模組的變化 有關。
為什麼 Ubuntu 24 之後 PPPoE 會失效?
- pppoeconf 套件被移除
- 在 Ubuntu 22 之後,官方已經不再維護 pppoeconf,因此升級後系統裡可能已經沒有這個指令。
- 相關套件也可能被標記為 obsolete。
- 內核驅動差異
- PPPoE 依賴 ppp_generic、pppoe、pppox 這些內核模組。
- Ubuntu 24.04 升級 kernel 後,這些模組有時沒有自動載入,導致 pppoe 無法連線。
- NetworkManager 與 systemd 影響
- 在新版本中,PPP 相關功能整合到了 NetworkManager。
- 如果你原本是用 /etc/ppp/peers/ + pon/poff 的方式,升級後需要調整。
檢查與排錯步驟
- 確認 PPP 套件是否還在
dpkg -l | grep ppp
如果沒有,請安裝:
sudo apt install ppp pppoe
- 檢查內核模組
- lsmod | grep ppp
如果沒有看到 pppoe、pppox,請手動載入:
sudo modprobe pppoe
sudo modprobe pppox
- lsmod | grep ppp
- 測試 PPPoE 探測
- pppoe-discovery -I eth0
如果沒有任何回應,表示模組沒載入或 ISP 不通。
- pppoe-discovery -I eth0
- 確認日誌
- journalctl -xe | grep ppp
查看是否有 pppd 或 pppoe 相關錯誤訊息。
- journalctl -xe | grep ppp
解決方案
方法一:繼續用傳統 pppd
- 建立設定檔
/etc/ppp/peers/dsl-provider- noipdefault
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
noauth
persist
mtu 1492
plugin rp-pppoe.so
eth0
user “你的ISP帳號”
- noipdefault
- 把密碼放在
/etc/ppp/pap-secrets或/etc/ppp/chap-secrets- “你的ISP帳號” * “你的密碼”
- “你的ISP帳號” * “你的密碼”
- 啟動連線
- sudo pon dsl-provider
- sudo pon dsl-provider
- 斷線
- sudo poff dsl-provider
- sudo poff dsl-provider
方法二:改用 NetworkManager
如果是桌面或伺服器有啟用 NetworkManager,可以直接用:
nm-connection-editor
- 新增 DSL (PPPoE) 連線
- 輸入帳號/密碼
- 選擇介面(例如 eth0)
方法三:使用 systemd service 自動化
建立一個 systemd unit
[Unit]
Description=PPPoE connection
After=network.target
[Service]
ExecStart=/usr/bin/pon dsl-provider
ExecStop=/usr/bin/poff dsl-provider
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
儲存為 /etc/systemd/system/pppoe.service,然後啟用:
先檢查 pppoe 模組是否有載入(lsmod | grep ppp),這通常是 Ubuntu 24 升級後最常見的問題。