農村線路質量差,PPP 撥號頻繁掉線。FreeBSD ppp.conf 中四個關鍵參數決定重撥行為,配置得當可實現「秒級感知、自動重撥、永不放棄」。本文逐項拆解原理與推薦值。
| 參數 | 語法 | 含義 | 推薦值 | 說明 |
|---|---|---|---|---|
set redial | set redial <間隔秒> <最大次數> | 撥號失敗後的重試策略 | set redial 10 0 | 間隔 10s,0=無限重試,僅針對「撥號階段」失敗 |
set reconnect | set reconnect <間隔秒> <最大次數> | 連接建立後斷線的重撥策略 | set reconnect 10 0 | 間隔 10s,0=無限重試,核心斷線重撥開關 |
set echoperiod | set echoperiod <秒> | LCP Echo 請求發送間隔 | set echoperiod 15 | 默認 30s,改 15s 加快斷線檢測,5 次無響應=斷線,總耗時 75s |
set lqrperiod | set lqrperiod <秒> | LQR (Link Quality Report) 發送間隔 | set lqrperiod 15 | PPP 協商優先用 LQR,雙保險同設 15s |
reconnect 是斷線自愈的核心。echoperiod/lqrperiod 間隔發送 Echo Request / LQR 包。LCP_MAX_ECHO_FAIL)未收到回應,判定鏈路失效。reconnect 邏輯:拆鏈路 → 等待 reconnect 間隔 → 重新撥號 → 重新協商。default: set log Phase Chat LCP IPCP CCP tun command set device PPPoE:xl0 # 或 /dev/cuad0 等 set authname "your_username" set authkey "your_password" set dial # 進入 ddial 模式 set redial 10 0 # 撥號失敗 10s 重試,無限次 set reconnect 10 0 # 斷線 10s 重撥,無限次 set echoperiod 15 # LCP Echo 15s 一次 set lqrperiod 15 # LQR 15s 一次 enable lqr # 啟用 LQR(可選,雙保險) # 其它:idle timeout、nat、dns 等按需配置
set dial 進入 ddial 模式,否則 redial/reconnect 不生效。set log +phase +lcp +ipcp 觀察 Echo/LQR 交互與重撥觸發點。掌握這四個參數,讓 FreeBSD PPP 在惡劣線路下也能「自愈如初」。