站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

PPPoE-偵測斷線後自動重撥

前言

簡單說因為使用 FreeBSD 當 NAT 並且採用 PPPoE 撥接方式取得 Public IP,但有時會發生雖然有要到 IP Address 卻無法出 IA 的問題,因此這個 Script 就產生了。請注意:以下 Script 只適合我的環境,若您取用請自行調整,恕不負損壞之責。

實作環境

Script 功能說明

check_pppoe.sh 達成如下需求

Script 內容說明

 #cat /usr/local/sbin/check_pppoe.sh   //查看 Script 內容
 #!/bin/sh
 #$Id: check_pppoe.sh,v 0.1 2011/11/28 weithenn Exp $
 CHECKFQDN=`/usr/local/sbin/fping tw.yahoo.com`
 CHECKIP=`/usr/local/sbin/fping 168.95.1.1`
 if [ "$CHECKFQDN" = "tw.yahoo.com is alive" ]; then
    exit
 else
    if [ "$CHECKIP" = "168.95.1.1 is alive" ]; then
       exit
    else
       /etc/rc.d/ppp stop
       /usr/bin/killall ppp
       /sbin/route delete default
       sleep 10
       /etc/rc.d/ppp start
    fi
 fi

之後加入排程中,每 5 分鐘檢查一次若異常 (例如 PPPoE 有取得 IP 位址,但出不了 IA) 就重啟 ppp 服務,目前先這樣吧,之後有空再改寫好一點了!!

 #crontab -l
 */5     *       *       *       *       /usr/local/sbin/check_pppoe.sh

Me FAQ

Q1.pppoeWarning: Add route failed: 0.0.0.0 already exists?

Error Meaage:

仍然發生斷線重撥後失敗的問題,找一下 Log 訊息中有下列這一行關鍵字

 Starting PPP profile: pppoeWarning: Add route failed: 0.0.0.0 already exists

Ans:

因為 Default Gateway 已經被佔用因此造成 PPPoE 雖然撥接成功也取得 IP 位址,但是在建立 Default Gateway 這一段時失敗所以仍然出不了 Internet,因此修改 Sciprt 內容加上 /sbin/route delete default,在啟動 PPP 服務以前先把 Default Gateway 砍了。

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com