標 題: [HOWTO] FreeBSD+PPPoE (ADSL auto redial)
發信站: 中正電機網路中繼站 (Sat Jun 30 22:54:56 2001)
轉信站: abpe.org!News.Math.NCTU!news.CDPA.nsysu!news.nsysu!ctu-gate!news.nctu!n
Origin: bbs.ee.ccu.edu.tw
[寫在前頭]
海! 各位 大大 以及 FreeBSD 的朋友們! :)
笨小俠又來了! 這次要談談另一個使用 FreeBSD+PPPoE 的心得
不知道內容是否正確,還請各位大大幫忙訂正! ^^;
[環境]
1. 再 report any error 之前, 請先確定自己的硬体沒問題...
2. kernel 方面,如果 最佳化(看/etc/default/make.conf) 參數加下去有問題
就先不要加! (Reference: /etc/dafault/make.conf)
3. 依照之前笨小俠的小文章,如果閣下的測試均沒問題,那麼剩下的就只需改一個檔
4. 其他步驟,笨小俠還是也重新貼一下好了! ^^;
[測試]
方法一:
比較直接,但是有點兒浪費本來 ppp 的功能. 而且不夠 real time ^^;
但是,好處是不必動到原來的設定,而是另跑一個 process 去 monitor ip
這個 process 可以是一個 daemon 也可以 以 cron 的方式去執行!
我比較不 prefer 這個方法... ^^; 不過,到是在 rp-pppoe 的做法中可以看出來!
這裡我只寫了 cron 的 shell script ...若需 daemon ,請 Free your Power :)
Concept Shell Script Example: [若有不正確,請自己修改,總之就是這個意思]
#!/bin/sh
IFS=" "
set -- `ping -c 5 -t 4 PEER_ADDR grep loss`
LOSS=$7
if [ "$LOSS" = "100%" ]; then
killall /usr/sbin/ppp
sleep 3
ppp -ddial hinet
fi
註: PEER_ADDR 以及 hinet 應該不用多作解釋吧? ^^;
方法二:(I prefer it... and you? ^^;)
1. 如何在沒有 make kernel 時候就做測試呢?
修改 /boot/loader.conf 加入下面的東東..
module_load="YES"
module_name="netgraph" ( <=== 注意 不是 netgraph.ko ) 其他如 ng_pppoe_load="YES" 等 module...可以參考 /boot/default/loader.conf 2. reboot (kernel.GENERIC應該有將 tun compile進去) 3. 編寫 /etc/ppp/ppp.conf 如下:(這個檔是最重要的了!) default: set log Phase Chat LCP IPCP CCP tun commadn # 這個log可以自己看manpage設! 不要 set log all ... 否則硬碟一下就爆了! :P set redial 1 86400 # Format: set redial n 秒 m 次 .. # => 當斷線時 每隔n秒重撥一次直到撥了m 次 ppp 才會放棄
# 笨小俠這兒的設定是 每隔一秒重撥一次...希望機器能隱定到重撥 86400次 :P
set reconnect 1 5
# 同上的 format, 不同處,應該是 每次dial並不會很順利connect..所以才需reconnect
# 附註:其實這兩行還有關於 timeout stuff .. 想了解更清楚,麻煩跟小俠一樣
# 將整個 ppp 的 manpage 看過一次吧! 要不然請直接放心使用! ^^;
# 另外, /usr/share/example/ppp/ppp.conf.sample 也是很好的參考資料
hinet:
set device PPPoE:ed1(網路卡device)
set speed sync
set mru 1492
set mtu 1492
enable lqr
set lqrperiod 5
set cd 5!
set dial
set login
add default HISADDR
set authname 帳號
set authkey 密碼
註:如果小俠多加了任何累綴的東西(for automatic redial),還請大大不吝賜教! :)
4. echo "nameserver 168.95.192.1" >> /etc/resolv.conf
[請注意,如果在 ppp.conf 裡頭有加入 enable dns 就不用寫這個檔了!
5. 執行 ppp 進行測試!
# /usr/sbin/ppp hinet
ppp on myhost> dial
ppp on myhost>
開另一個 term ...
$ ifconfig tun0
tun0:flags=8051
inet LOCAL_ADDR --> PEER_ADDR netmask 0xffffff00
Opened by PID 1234
此時,LOCAL_ADDR 就是你 get 到的 IP ...PEER_ADDR 是你 ISP's router
$ ping PEER_ADDR ....如果有通,就算成功了!
然後,趁著花好月圓時候.. 關掉 ADSL 電源(以產生突然被斷線的狀況)
再等待一些時候再開ADSL :)
$ ifconfig tun0 觀察是否自動 redial 得到新的 IP ..(Should work fine!)
6. 修改 /etc/rc.conf 加入
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="hinet" <= 請對映 ppp.conf 裡頭 ISP. 7. 若要重新 make kernl (or not ... it is up to u.) 可以不必加入 options NETGRAPH 等三項. 這樣子,也可以免去下面一個煩人的warning (WHY? :> 自己想想)
[1mmodule_register: module netgraph already exists!
linker_file_sysinit "netgraph.ko" failed to register! 17[0m
8. 編輯 /etc/ppp/ppp.linkup (這個檔是幹麻用的呢? :> 自己想想)
內容: !bg /etc/ppp/dyns.sh
9. 編輯 /etc/ppp/dyns.sh script(如果你想要動態 DNS 的話... hope it help.)
#!/bin/sh
IP=""
IFS=" "
while [ "$IP" = "" ]; do
set -- `/sbin/ifconfig tun0 /usr/bin/grep netmask`
IP=$2
done
/usr/local/bin/lynx -dump "http://www.myip.org/cgi-bin/Update.py?id=\
我註冊的帳號&pwd=我註冊的密碼&ip=${IP}&recordtype=A&hostname=我註冊的名稱"
附註:現在的 http protocal 裡頭 remote ip 應該都包含了!
如果 找的 那個 提供 Dynamic Domain Name 的 provider 要求必須自己抓 ip.
上面的 dyns.sh 是一個簡單的例子!
10. reboot and enjoy. Hope this article helps.
--
問的人,請問清楚
答的人,就能切中要領
如果問的人,問得亂七八糟
那麼答的人,也只好答非所問 !
--
[m◆ Origin: [1m中正電機[33m網路中繼站 [32m(bbs.ee.ccu.edu.tw)[m
◆ From: swsh234-239.adsl.seed.net.tw
※ X-Info: pasear -> pasear@ckeisc.ck.tp.edu.tw
※ X-Sign: 0TOF9M5hJ0vIoGgccEMA (01/08/25 21:23:17 )
沒有留言:
張貼留言