2006年(25)
分类:
2006-09-09 11:49:08
現在的電腦﹐相信沒幾台不需要連接 Internet 了吧﹖如果您在一個公司裡面﹐那可能會有專線提供不間斷的 Internet 服務﹔但如果您是一位家庭用戶﹐那或許最常用的 Internet 連接方法是撥接上網了。而在撥接上網的方式中﹐透過電話線加上 MODEM 來撥接是最便利和最普遍的。到了今天﹐相信用 ADSL 撥接上網的用戶已經越來越多了﹐而且﹐我相信在可見的數年內﹐ADSL 將會成為登錄家庭用戶最常用的上網方式。
但是﹐如果您還沒成功的用 Linux 撥接上網﹐我希望下面介紹的文章對您有所幫助。這篇文章主要以 MODEM 撥接為主﹐雖然我們已經在其它章節裡面提到過如何用 ADSL 撥接了﹐不過﹐為了照顧文章的完整性﹐我這裡還會再跟大家詳細說說如何在 Linux 上面設定 ADSL 撥接的。另外﹐如果您想用 Linux 弄一個簡單的撥接伺服器﹐當您看完這章的最後部份﹐應該可以做到的(如果您會設定 NAT﹐甚至還可以撥接進來再透過 ADSL 上網呢﹗)。
我們在“網路基礎”中關於“”的部份﹐已經知道遠端連接有分 remote control 和 remote access 的形式﹐而我們一般用來撥接上網都是使用後者。在連接的過程中﹐MODEM 是不能缺少的設備。我們可以簡單地將 MODEM 連接看成是 ISP 網路的延伸﹐所以 MODEM 也是一個網路界面﹐它所使用的協定為 PPP (Point to Point Protocol)。PPP 屬於資料連接( Data Link )層的協定﹐所以﹐在 PPP 以上﹐我們還是可以使用 TCP/IP 和更高層的協定的(如 IPX 等)。
但無論如何﹐PPP 所連接的機器﹐就是兩點之間的連接﹐單純的告訴設備﹕“您所連接的另一端﹐就是某某某某”﹔假設上層使用 IP 協定﹐那麼那個‘某某’就是一個 IP 位址﹐這也是我們最常見的 PPP 應用環境之一。當然﹐ppp 也可以支援 IPX 和 NetBEUI 等通訊協定。
而事實上﹐PPP 也不管底層的界面種類是什麼﹐例如﹐可以使用 Serial 界面( RS232﹐也就連接 modem 的界面標準)﹑也可以使用 parallel 界面﹑也可以使用 ethernet 界面 ( 如 PPPoE )﹑等等。也可以使用多種底層傳輸網路﹐例如﹕PSTN (公共交換電話網)﹑ISDN (綜合服務數據網)﹑ADSL ( 非對稱數據租用線路)﹑lease line (專線)﹑X2.5﹑ATM﹑Fram Relay ﹑等等。所以說﹐PPP 事實上可以在非常廣泛的情形下面使用﹐只是一般家庭用戶比較少接觸而已。
那麼﹐在 Linux 上面﹐負責管理 PPP 連接的服務程式就叫做 pppd。要使用它﹐您要將‘PPP (point-to-point) support’功能編進 kernel 中﹐或以模組(ppp.o)形式載入。如果您的核心是按照 system 系列的‘’例子來設定的話﹐應該沒問題了。現在﹐假設您還沒有用 Linux 啟動 MODEM ﹐然後下輸入﹕
pppd |
您應該會看到一大堆亂七八糟的字符跑出來﹕
~}#?}!}!} }4}"}&} } } } }%}&+N+}'}"}(}"?~~}#?}!}!} }4}"}&} } } } }%}&+N +}'}"}(}"?~~}#?}!}!} }4}"}&} } } } }%}&+N+}'}"}(}"?~ |
要停止這些輸出也不行哦~~~ 哈哈﹐不用驚慌啦﹐待一會就好了。
不保證成功啦~~ 要不就花點耐心等等囉。
事實上﹐如果您看到那些垃圾﹐應該是好事情﹐起碼我們可以證明 pppd 是工作的。否則﹐您可能要動動核心的手術了。
首先﹐您當然要申請到一個撥接賬號才行。您的 ISP 必須要告訴您如下這些資訊﹕
然後﹐您必須找一條電話線﹐並確定它是可以撥接的(您可以用普通電話打到 ISP 給您的撥接號碼試試看)。然後﹐按說明書正確的連接好 MODEM 。
在這裡﹐ MODEM 是最重要的撥接設備﹐所以﹐我們先要確定它被設定好。如果您在 Windows 那裡設定過 MODEM﹐可能第一時間想找 Linux 下面的 MODEM 驅動程式。有這樣習慣是非常好的﹐但在 Linux 下面卻沒有 MODEM driver 這回事哦。嗯﹖什麼意思﹖哎呀﹐我只能說﹐在 Linux 下面使用非常標準的 MODEM 通訊程式﹐只要通訊口(RS232)設定好了就可以使用 MODEM 了。真的就這麼簡單~~ ^_^
不過﹐您還是必須知道您的通訊埠是否設定起來﹐而且沒有和其它硬體發生衝突(例如在 BIOS 開啟或關閉)。預設的情況下﹐各通訊口設定如下﹕
device name | com port | irq | io |
/dev/ttyS0 | com 1 | 4 | 0x3f8 |
/dev/ttyS1 | com 2 | 3 | 0x2f8 |
/dev/ttyS2 | com 3 | 4 | 0x3e8 |
/dev/ttyS3 | com 4 | 3 | 0x2e8 |
您必須要確定您的 ttyS# (留意 S 為大寫﹗) 設備在 Linux 系統裡面已經設定好了。如果你使用標準設定﹐那就沒什麼好擔心的。但如果該設備還沒設定好﹐例如﹐您剛換成 PCMCIA 類型的MODEM﹐那您可能需要使用 mknod 這個命令建立該設備了﹕
這樣我們就將 MODEM 連接到 ttyS0 (DOS下為 COM1) 這個通訊埠了。
setserial /dev/ttyS1 irq 3 port 0x02f8 uart 16550a |
此外我們還必須為通訊埠建立一個 link 指向 /dev/modem ﹕
ln -sf /dev/ttyS0 /dev/modem |
如果 ISP 不是自動分配 DNS 的話﹐您可能需要手工的修改 /etc/resolv.conf 檔案﹐將 ISP 所給的 DNS IP 寫在前面﹐例如﹕
nameserver 139.175.10.20 |
如果 ISP 或 MODEM 廠商還有其它特別的要求﹐請多花些心思注意一下。另外﹐如果您的網路比較複雜﹐例如路由表中已經有 default gw 指向另外的網路﹐那﹐您必須在 ppp 成功之後﹐再仔細的安排路由設定了哦。如果不知道如何設定路由﹐那請參考‘’這篇文章。
然後﹐在下面﹐讓我們看看如何撥接上 ISP 吧﹕
先讓我們來一翻完全的手工撥接﹐這個過程非常辛苦﹐而且未必能夠成功。但是﹐之所以要這樣做﹐是為了了解整個撥接過程的細節。這在日後整個 PPP 的設定和管理中﹐都非常有幫助。當然了﹐如果您對手工設定沒興趣的話﹐可以直接跳到“”章節去﹐儘可不必耗費腦細胞。只要能上網就好了﹐不是嗎﹖
lock modem crtscts noipdefault defaultroute asyncmap 0 noauth name netman |
minicom -m8 -c on |
這樣您就進入一個有顏色的 minicom 畫面了。如果您在最後一行看到“OK”字眼﹐也就表示您的 MODEM 已經成功啟動了。但如果您沒看到“OK”﹐又輸入不了任何東西﹐那很可能是您 /dev/modm 給 link 到錯誤的 ttyS 或是 ttyS 還沒設定好。這時候﹐您得按 Ctrl + Alt + F2 (或使用 telnet/ssh ) 開啟另一個終端視窗﹐輸入 ps aux | grep minicom 來找到 minicom 的 PID﹐然後將它 kill 掉﹐再重新設定好您的 MODEM。
ATZ |
這是一個 MODEM 命令﹐目的是 reset 一下 MODEM 狀態。凡是 MDOEM 命令都是以 AT 開頭的﹐所以也有人稱之為“AT 命令”﹐例如﹕如果您嫌您的 MODEM 太吵耳了﹐可以輸入﹕ATM1L1 將音量調低﹐或干脆用 ATM0 將喇叭關掉。至於具體的 AT 命令有哪些﹐最好另行參考您的 MODEM 手冊﹐並以手冊為准。
但要注意﹕您的 MODEM 可能與我的不一樣哦~~ 可不要亂用﹗如果您的廠商手冊有建議值﹐可以參考廠商的﹐否則不必設定。
AT DT 40503000 |
這也是一個 MODEM 命令﹐意思是撥接 ISP 的提供的電話號碼。這裡的‘D’是 Dial 的意思﹔‘T’是 Tone (音頻電話)的意思﹐如果您使用的電話是 Pulse (脈沖式)電話(很古老了)﹐則將 T 改成 P ﹔最後是 ISP 的撥接號碼。
pppd -detach /dev/modem& |
在 Linux 討論板上﹐我們常可抄到一些 Linux 高手提供的 script 來方便我們的撥接。這裡﹐我也有一個 script 給大家試試。不過要注意的是﹐我這個 script 只是提供最簡單的連接﹐並沒包括登錄選單選擇或其它複雜功能。
#!/bin/sh #File: /usr/sbin/ppp-on #Purpose: a simple PPP dial-up script # if [ -f ~/.ppprc ]; then ACC=$(cat ~/.ppprc | grep name | awk '{print $2}') if [ ! -z "$ACC" ]; then MYNAME="$ACC" echo "" echo "'.ppprc' found in $USER's home directory," echo " trying to use user specified account..." fi fi if [ -z "$MYNAME" ]; then MYNAME=netman echo "" echo -n "Warning: no account name specified," echo "using default account '${MYNAME}" fi echo "PPP is using account ${MYNAME} to connect to ISP ${ISP} ..." DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # exec /usr/sbin/pppd -detach lock modem crtscts \ /dev/modem 115200 noipdefault defaultroute \ noauth name ${MYNAME} connect $DIALER_SCRIPT |
是否覺得 pppd 後面執行的選項和 ~/.ppprc 的內容很相似呢﹖沒錯啦﹐如果您能夠手工的將 ppp options 用命令行的形式輸入﹐您可以不必設定 ~/.ppprc 和 /etc/ppp/options 檔案。但相反﹐如果您不想在命令行輸入﹐則交給前述檔案代勞吧(它們的關係我已經在前面說過了)。
#!/bin/sh #File: /etc/ppp/ppp-on-dialer #Purpose: a simple PPP dial-up script # TELEPHONE=40503000 DIALSCRIPT=/tmp/dialscript.$$ # trap "rm -f ${DIALSCRIPT}" INT HUP QUIT # umask 066 cat < |
#!/bin/sh #File: /usr/sbin/ppp-off #Purpose: a simple PPP dial-up script # # # Determine device if [ -z "$1" ]; then DEVICE=ppp0 else DEVICE=$1 fi # # Stop program if [ -r /var/run/$DEVICE.pid ]; then kill -INT `cat /var/run/$DEVICE.pid` #注意﹕‘`’符號是在‘1’鍵左邊 # # Delete lock file if [ ! "$?"="0" ]; then rm -f /var/run/$DEVICE.pid echo "ERROR: Removed stale pid file" exit 1 fi # # Getting out echo "PPP link to $DEVICE terminated." exit 0 fi # # Not ruuning echo "ERROR: PPP link is not active on $DEVICE." exit 1 |
(以上三隻 script 可以 。)
# Secrets for authentication using PAP # client server secret IP addresses netman ppp0 Agb-7Rh9 |
一如我們在過去一直強調的﹕在 Linux 下面﹐除了精確的手工設定之外﹐還有許多工具可以使用。在 linux 上面的 PPP 撥接工具也非常多﹐這裡只介紹 RedHat 7.1 自帶的一隻工具 --- KDE 裡面的 Internet Dialer (kppp) ﹕
呵呵~~~ 原來在 Linux 裡面也有這麼好用的 PPP 撥接工具哦~~ 真是太好了﹗ ^_^
感謝科技發展的神速﹗我們前兩年還忙於設定龜速(最快 56K) 的 MODEM 撥接﹐現在的朋友﹐都在享受著 T1 甚至 T3 下載速遞的 ADSL 或 Cabel Modem 於網上狂飆了﹗為了不至落伍﹐我們這裡當然要介紹一下撥接式 ADSL 的設定啦。
雖然我在 system 系列之“”那裡曾經以 rp-pppoe 作為例子﹐介紹過 RPM 的安裝方法﹐這裡不妨再詳細的再說一遍﹕
cd /usr/src/pkgs rpm --rebuild rp-pppoe-3.3-1.src.rpm |
rpm -Uvh /usr/src/redhat/RPMS/i386/rp-pppoe-3.3-1.i386.rpm rpm -Uvh /usr/src/redhat/RPMS/i386/rp-pppoe-gui-3.3-1.i386.rpm |
如果您不能成功完成上面的步驟﹐請檢查您目前的版本是否 RH7.1﹐或是根據錯誤提示進行修改。
adsl-setup |
接下來您要輸入 ISP 給您的賬號﹐如果您是 hinet 的帳戶﹐那您的帳號名稱或許需要帶那個 @ 符號以及 hinet 的名稱(請參考 hinet 的說明文件)﹔如果您是 seednet 的帳號﹐那只輸入帳號名稱就好了﹕
USER NAME >>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): t1234567 |
然後選擇連接 ADSL 的界面﹕
INTERFACE >>> Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where 'n' is a number. (default eth0): eth0 |
不過﹐我這裡跟您這樣說好了﹕ 不管 eth0 還是 eth1 目前的 IP 設定如何﹐只要這個界面能夠連得到 ADSL 去﹐ 那就可以了跑 PPPoE 。 因為 ppp 界面和 ethernet 界面本來就不同﹐原本的 ppp 是走 RS232 界面﹐也就是常見的 com port ﹐只是現在改用 ethernet 網路卡而已。注意﹐不是改走 IP 上面的網路﹐一個是 L3 層另外一個是 L1 層級。 換而言之﹐只要在實體連線上﹐ethernet 界面和 ADSL 接在一起﹐而且 eth 界面能被 kernel 抓到。那就根本不管它的 IP 是否有設定﹐或是如何設定~~
在物理上﹐您可以看為一張 ethernet 界面﹐ 但在邏輯上﹐eth 和 ppp 是不同的。
接著設定程式會問您是否需要啟用 demand 功能﹐一般來說不需要﹐所以直接按 Enter 就是了﹕
Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.) NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links. >>> Enter the demand value (default no): |
再來是設定 DNS ﹐請根據 ISP 給您的資訊來設定。如果您的 /etc/resolv.conf 本來就已經設定好 name server﹐並且能查詢 internet 的話﹐那您可以不設﹐然則直接按 Enter 就好﹕
DNS Please enter the IP address of your ISP's primary DNS server. If your ISP claims that 'the server will provide DNS addresses', enter 'server' (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS setup. >>> Enter the DNS information here: 139.175.10.20 |
接下來輸入第二個 DNS (如果上一步您有輸入的話)﹐如果您不想指定另外的﹐可以直接按 Enter 跳過﹕
Please enter the IP address of your ISP's secondary DNS server. If you just press enter, I will assume there is only one DNS server. >>> Enter the secondary DNS server address here: 168.95.1.1 |
然後輸入您的撥接帳號密碼(共兩次)﹕
PASSWORD >>> Please enter your PPPoE password: >>> Please re-enter your PPPoE password: |
到這裡﹐您必須設定好您的防火牆模式。呵﹐或許您不知道呢﹕rp-pppoe 內建有連線分享功能呢(選擇 ‘2 - MASQUERADE’ 就可以了)﹗因為我們後面會打算自己設定防火牆﹐所以這裡選擇 0﹕
FIREWALLING Please choose the firewall rules to use. Note that these rules are very basic. You are strongly encouraged to use a more sophisticated firewall setup; however, these will provide basic security. If you are running any servers on your machine, you must choose 'NONE' and set up firewalling yourself. Otherwise, the firewall rules will deny access to all standard servers like Web, e-mail, ftp, etc. If you are using SSH, the rules will block outgoing SSH connections which allocate a privileged source port. The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN >>> Choose a type of firewall (0-2): 0 |
到最後﹐設定程式會將您所作的設定作一個簡單彙報﹐如果您覺得沒錯誤的話﹐輸入 y 即可﹕
** Summary of what you entered ** Ethernet Interface: eth0 User name: t1234567 Activate-on-demand: No Primary DNS: 139.175.10.20 Secondary DNS: 168.95.1.1 Firewalling: NONE >>> Accept these settings and adjust configuration files (y/n)? y |
然後您就完成設定了﹗
Congratulations, it should be all set up! Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring it down. Type 'adsl-status' to see the link status. |
cd /etc/sysconfig/network-scripts mv ifcfg- ifcfg-ppp0 vi ifcfg-ppp0 然後修改﹕ DEVICE=ppp0
adsl-start |
如果您順利的話﹐最後會看到 “.. Connected! ”的結果。否則﹐就可能是您上面的設定有問題﹐也有可能是設備或連線的問題了。如果您要查看 adsl 的狀態﹐可以輸入 adsl-status ﹐會看到類似這樣的資訊﹕
adsl-status: Link is up and running on interface ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:211.74.48.118 P-t-P:211.74.48.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 |
如果您要掛斷連線﹐只要輸入 adsl-stop 就可以了。
在‘Basic’中填好 ISP 名稱﹑帳號名稱﹑和帳號密碼﹕
在‘NIC and DNS’中選擇好您的界面和 DNS ﹔預設的 DNS 是‘From Server’﹐如果您確定 ISP 會自動分配的話﹐那就不需要設定 DNS 了﹐要不然﹐您可以選擇‘Specify’然後填好 DNS﹐或是選擇‘Do not Adjust’以使用本機的原本設定﹕
在‘Options’裡面﹐我建議您取消‘Use synchronous PPP’(除非您發現這樣做有問題)﹔如果您決定讓普通帳號也能使用 TkPPPoE 的話﹐那麼也將‘Allow use by non-root users’也選擇起來﹔而‘Fiewalling’的設定我建議您選擇‘None’﹐不過﹐如果您只想單純的做連線分享﹐那也可以選擇‘Masquerading’啦(這部份我們會在另外的文章中介紹)﹕
其餘的可以不設定了﹐完成後按‘OK’離開。
然後﹐您只要按‘Star’就可以連線了﹕
您可以透過版面看到當前的流量狀況﹐如果您確定沒有執行 internet 程式﹐而又發現連線一直在跑﹐那就要小心您的系統是否遭到別人入侵或攻擊了~~~
如果要掛斷連線﹐按‘Stop’即可。假如您要修改連線設定﹐那麼按‘Properties...’回到前面介紹的畫面設定就是了。
前面我們只是學會了如何撥接出去﹐這僅是 pppd 的功能之一﹐都是 client 端的設定而已。假如您願意的話﹐還可以用 pppd 架設撥入伺服器哦~~~
我這裡不打算詳細的設定一個複雜 ISP 式的撥入服務器﹐因為牽涉的硬體和軟體都非常多﹐還有提供 Authentication 的 accounting 程式﹐例如﹕ radiusd 。這實在是超出我這裡的討論範圍了。用下面的步驟設定﹐您應該可以使用其他電腦(Linux 或 Windows)撥接進您的 Linux 主機﹐也可以使之連接進所在的網路。
lock modem crtscts asyncmap 0 passive proxyarp 192.168.100.23:192.168.100.111 netmask 255.255.255.0 ms-dns 192.168.100.23 |
關於這個檔案的設定內容﹐我這裡不妨說說﹕
需要注意的是﹐如果您修改 /etc/ppp/options 檔案的話﹐其設定可影響到所有的 ppp 連線﹐不管連線是撥入還是撥出﹐只要 pppd 命令行或其它設定檔沒指定的參數﹐都會參考這個檔。所以﹐我建議您儘量以設備名稱來設定 ppp 的 options 。假如您有超過一個 modem 來接受接入連線﹐那麼傚法這個 options.ttyS1 建立其它 options.ttySx 檔就是了。
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug |
port ttyS1 debug 3 data-only y # 下面這行視 modem 廠商建議值而設﹐否則可不設﹕ # init-chat "" ATZ OK AT&FE1V1W4&C1&D2S0=0S10=150 OK # 下面這行也可不設﹕ # answer-chat "" ATA CONNECT \c\r |
s0:2345:respawn:/sbin/mgetty -D -a modem ttyS1 |
如果您的設備有別於 ttyS1﹐請自行更改﹐如若有多台撥入 MODEM 的話﹐參考上面句子複製再修改就可以了。
然後讓設定生效﹐執行﹕
init q |
# Users allowed for PPP connection netman * netman-ppp-pwd * kenny * kenny-ppp-pwd * pppuser1 * "" * ...... |
在我的測試中﹐只要使用 PAP 機制進行 PPP 連接的話﹐最好在 pap-secrets 中使用系統相同的密碼。不過﹐如果您引用第三行的“pppuser1”那樣將密碼設定為 ""(空密碼)的話﹐那樣就只會用系統的密碼進行登錄了。如果您不想弄那麼複雜﹐我會建議您採用最後那行的格式來設定。
chmod u+s /usr/sbin/pppd |
接下來就是您進行測試的時候了。當 Linux 撥入 MODEM 響起之後﹐如果 MODEM 之間未能建立起連線﹐那麼進入 mimicom 或其他 MODEM 操作程式﹐打 ‘ATA’就可以讓兩台 MODEM 進行握手了。如果您想設定為自動回答﹐那麼您只要輸入 ATS0=1 。最後按 Alt + Q (如果使用 minicom -m 的話)﹐不重新 reset modem 而離開就可以。 不過﹐通常 /etc/inittab 和 mgetty 設好了應該是很順利的。
到此為止﹐您就可以使用 Windows 或 Linux 來測試 PPP 連接了﹐這裡所指的連接是使用了 PAP 機制的。如果在 linux 用 minicom 或其它手工程式撥接﹐或是在 Windows 選擇了‘撥接後帶出終端’來連線﹐在通過 PAP 認證之前﹐使用者仍然可以進行系統登錄﹐其情形就像 telnet 一樣。如果您想限制使用者只能使用 PPP ﹐您可以修改 /etc/passwd 這個檔案﹐將使用者的 shell 指向另外一個 ppplogin 的 script。步驟如下﹕
#!/bin/bash mesg n stty -echo /usr/sbin/pppd -detach passive |
完成後別忘了加上 x 權限﹕
chmod +x /bin/ppplogin |
pppuser1:x:1500:100::/home/pppuser1:/bin/ppplogin |
以上修改也可以透過 usermod 命令進行﹕usermod -s /bin/ppplogin pppuser1 。
上面的 scrip 會直接替使用者啟動 PPP 連接﹐但如果您想為使用者提供一個登錄選單的話(通常給那些以 terminal 方式作業的用戶)﹐可以參考如下例子代替﹕
#!/bin/bash stty pass8 while true do /usr/bin/clear echo "" echo "Welcome to netman's PPP server!" echo "-------------------------------" echo "" echo "Please pick a number from following options:" echo 1. PPP echo 2. Telnet echo 3. Terminate echo -n "-->" if read CHOICE then /usr/bin/clear case "${CHOICE}" in '1') echo "" echo "Starting PPP..." /usr/sbin/pppd ;; '2') echo "" echo "Pleae type 'open' followed by the remote host name." echo "And type 'quit' when you finish." /usr/bin/telnet ;; '3') echo "" echo "Good bye~~!" break ;; esac else exit fi done |
先建一個 chat script﹐存為 /etc/ppp/chat.scr﹐內容如下﹕
"" "ATZ" "OK" "ATDT40503000" "CONNECT" "" |
然後修改 ~/.ppprc﹐類似如下﹕
-detach /dev/modem lock idle 600 noauth modem 115200 crtscts defaultroute name "your_isp_account" connect '/usr/sbin/chat -v -f /etc/ppp/chat.scr' |
也就是將您的 ISP 帳號和 chat script 寫進這個檔裡面﹐然後執行 pppd& 就可以進行撥接了。如要斷線﹐可以執行 ppp-off﹐或直接 kill 掉 pppd 的 PID.
route add default dev ppp0 |
#!/bin/bash /sbin/route add default dev ppp0 |
(注意﹕上面的 ppp0 是您的 ADSL 撥接界面﹐假如您不是用 ppp0 的話﹐那請修改為正確的設備名稱。當然﹐其它相關的路由﹐就請您多花點心思了。)
如果您採用最後兩種方法﹐那在結束 ADSL 撥接之後﹐再檢查 route table ﹐確定剛纔的設定被取消(也就是還原為原來的 default gw 設定)﹐否則用手工的方法移除(相信您會移除吧﹖不會就要打屁屁了~~)。
nameserver 139.175.55.244 |
如果您還有任何關於 PPP 的疑問﹐可以看一下 PPP﹑Serial﹑mgetty 等 HOWTO 文件。也可以買 O'Reilly 的 “PPP 網路管理”這本書回來參考。