新牽的光纖因為不支援 DHCP 連線,所以就改成 ppp 撥號連線。不過由於常常斷線,ddial 模式用起來也怪怪的,所以另外加上斷線重連的功能。
O.S.:FreeBSD 7.1 release
原本 DHCP 連線的設定檔:
- 只要設定好 /etc/rc.conf 就可以上網了
ifconfig_re0="DHCP" # 表示你的網卡是 re0
改成可以撥號連線:
- 設定 /etc/rc.conf
- 設定 /etc/ppp/ppp.conf
- 新增 /usr/local/etc/rc.d/ppp.sh
- 新增 shell script
因為要配合斷線重連的功能,所以就只要刪除 ifconfig_re0="DHCP" 這一行就可以了(也就是 /etc/rc.conf 不用特別設定)。
default: set log Phase tun command seednet: set device PPPoE:re0 # 表示你的網卡是 re0 set dial set timeout 0 enable dns set login set mru 1492 enable lqr set authname seednet\# # 輸入撥號帳號(因為 seednet 取得固定 IP 要加"#",所以前面加個"\"跳脫字元) set authkey seednet # 輸入撥號密碼
主要目的是區分 start 跟 restart 的方式(本身還都是用 ddial 的模式撥號)。Start 會順便啟動 pf,若是斷線重連就只用 restart(刪掉原本的連線,再重新連線)。
#! /bin/sh # # PPPoe # # Created by denniswave at 2009/03/28 set -e case "$1" in start) echo "Starting PPPoE..." /usr/sbin/ppp -ddial seednet echo "Start PPPoE done!!!" /sbin/pfctl -f /etc/pf.conf ;; stop) echo -n "Stopping PPPoE..." PPPPID=`cat /var/run/tun*.pid` kill -9 $PPPPID echo "done!!!" ;; restart|force-reload) $0 stop sleep 5s echo "Starting PPPoE..." /usr/sbin/ppp -ddial seednet echo "Restart PPPoE done!!!" ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
目的是偵測網路連線狀態(利用 fping),如果斷線,就 restart。然後放在 crontab 看你要多久執行一次都可以。
#! /bin/sh # # ADSL disconnect redial script # # By denniswave # # V1.0 20090422 First Version datevar=`date "+%Y-%m-%d %H:%M:%S"` checkonline1=`/usr/local/sbin/fping tw.yahoo.com` # 測試與 yahoo 的連線 checkonline2=`/usr/local/sbin/fping 140.116.250.3` # 測試與成大的連線(用IP) if [ "$checkonline1" = "tw.yahoo.com is alive" ] ; then echo "$datevar: $checkonline1 -- The VDSL is connected." >> /var/log/pppredial.log exit else if [ "$checkonline2" = "140.116.250.3 is alive" ] ; then echo "$datevar: $checkonline2 -- The VDSL is connected, but DNS maybe failed." >> /var/log/ppp.log tail -1 /var/log/pppredial.log > /tmp/tempmessage mail -s "光纖的 DNS 怪怪的喔~~~" root < /tmp/tempmessage exit else echo "$datevar: [Error] Yahoo & $checkonline2 -- The VDSL is disconnected." >> /var/log/ppp.log /usr/local/etc/rc.d/ppp.sh restart >> /var/log/pppredial.log tail -11 /var/log/pppredial.log > /tmp/tempmessage mail -s "光纖又掛囉~~~XD" root < /tmp/tempmessage fi fi
Please follow and like us: