作者:H2KILL 摘要 PPP是在串連連接上運行 IP以及其它網絡協議的一種協議,串列連結可以是直接的串列連接(使用無數據機纜線)或是使用數據機以及電話線路所造出的連結。使用 PPP, 你可以把你的 Linux PC 連接到一台 PPP 服務器上並存取該服務器所連接的網絡資源就如同你是直接連接在該網絡上一般。你也可以把你的 Linux PC 設為一台 PPP服務器,這樣一來其它電腦就可以撥入你的電腦並且存取在你區域網絡裡的資源。因為 PPP 是一種點對點的系統,因此你也可以使用兩台 Linux PC 上的 PPP 把網絡連結在一起(或是把區域網絡連結到網間網絡上)。(2002-07-02 17:15:43) -------------------------------------------------------------------------------- By lanf 一、什麼是PPP協議 既然是撥號上網,就不能不提到PPP(point-to-point protocol)協議。PPP協 議具有以下特點: 是應用最廣泛的廣域網協議; 通過提供連接控制協議(LCP)和網絡控制程序(NCP)協議家族來配置網絡性能和網絡設備,從而解決了Internet互聯的問題; 一個PPP會話分為四個步驟(連接建立、連接質量控制、網絡層協議配置、連接終止); 提供了密碼認證協議(PAP)或者邀請握手認證協議(CHAP)來保證連接安全; 簡而言之,PPP是在串連連接上運行 IP以及其它網絡協議的一種協議,串列連結可以是直接的串列連接(使用無數據機纜線)或是使用數據機以及電話線路所造出的連結。使用 PPP, 你可以把你的 Linux PC 連接到一台 PPP 服務器上並存取該服務器所連接的網絡資源就如同你是直接連接在該網絡上一般。你也可以把你的 Linux PC 設為一台 PPP服務器,這樣一來其它電腦就可以撥入你的電腦並且存取在你區域網絡裡的資源。因為 PPP 是一種點對點的系統,因此你也可以使用兩台 Linux PC 上的 PPP 把網絡連結在一起(或是把區域網絡連結到網間網絡上)。 最主要的差異當然是速度 - 標准的以太網路連線是10 Mbps(每秒百萬位元),而在撥號上網這方面最大是33.6 kbps(每秒千位元)的速度(ISDN據說可以達到128kbps)。同時,依據 PPP 連線的型態,某些應用以及服務在使用上可能會有些限制。 當然,對於我們用戶來講,它也是一個server/client模型的應用。這個快速指南包括怎麼在Linux下創建PPP server(客戶端假設為windows),在Linux下怎麼去撥號上網(當然是客戶端)。 二、服務器 如果用戶只想做為客戶端撥號上網,則可以直接跳過本小節。但是如果做為網絡應用的設計人員,就必須知道怎麼搭建PPP服務器。 1. kernel必須支持,如果是Kernel2.0.x以上的默認安裝,肯定支持PPP,啟動時可以看到PPP的信息; 2. 獲取pppd的源碼,版本越高越好,適合Kernel2.0.x以上有ppp-2.3.5.tar.gz: 下載地址:如果你在當地有搜索引擎,自己找最近的。 FTP://cs.anu.edu.au/pub/software/ppp/ 3. 假設安裝到/usr/local/ppp目錄下,則 bash$ cp ppp-2.3.5.tar.gz /usr/local/ bash$ cd /usr/local/ bash$ tar zxvf ppp-2.3.5.tar.gz bash$ cd ppp-2.3.5 4. 按照README.linux操作,不外乎是: ./configure make kernel make make install (必須在安裝目錄/usr/local/ppp-2.3.5/下操作) 5 安裝完後運行pppd,不必帶參數,如果有亂碼,則成功了一半; J 6 cd /etc/ppp (沒有該目錄則創建一個) 編輯options文件,看起來象這樣: 0.0.0.0 asyncmap 0 netmask 255.255.255.0 proxyarp lock crtscts modem mtu 1500 (改數視Linux的網絡參數而定,用ifconfig可以看到它) mru 1500 (=mtu就行了) 注意以上各行的意義參照pppd的說明檔,幾乎不需要改動。 7. 給每個用戶設立一個自動登陸的shell 如用戶ppp0 (adduser 加入),問對應的bash時敲ppp0login; ppp0login文件如下: exec /usr/sbin/pppd passive /dev/ttyS0 115200 netmask 255.255.255.0 proxyarp : x.x.x.x 注意x.x.x.x是ppp0的登錄後獲得的IP,比如你可以指定為192.168.0.2等等。 8. 嘗試登錄及享受成功 為了簡單,假設客戶端是windows。准備從另一台Windows95/98機器登錄。Windows中先設好撥號網絡(如果沒有modem,可以用Null modem代替試驗--其實就是串口+Cable,推薦先使用Null modem嘗試),服務器類型必須是PPP。啟動撥號程序(在連接--modem--配置--選項裡設撥號前後出現終端窗口),連接後出現終端窗口,輸入登錄名及口令(可能先要按幾下回車),OK,出現亂碼! 按F7繼續,一會兒又有終端窗口及亂碼,F7繼續,等一會就連接好了,然後就可以正常的網絡通信了。如果客戶端也是linux,見下面小節。 三、客戶端 不同的linux廠家在x-window下都有自己的撥號程序。例如藍點linux下的KDE撥號就很方便,但是由於是快速手冊,我不可能列出各種軟件的使用,如果你有更好的方法,請加入www.linuxaid.com.cn的論壇發表你的觀點。這裡我介紹最常用的在RedHat下的腳本撥號法。我假設你用的是RedHat5.2以上版本。 1.找出modem在計算機的哪一個串口上。modem如果通電,MR、HS燈應該亮,但是TR燈不亮。敲入下列命令: bash$> echo AT>/dev/ttyS0 如果TR燈亮,則modem連接在COM1;如果不亮,則試/dev/ttyS1,亮則COM2;依此類推。 2.用腳本撥號,在/usr/doc/ppp-2.3.5/scripts目錄下有例子。我們將其拷貝到正確的目錄下執行。 Bash$> cp /usr/doc/ppp-2.3.5/scripts/ppp-on /usr/sbin Bash$> cp /usr/doc/ppp-2.3.5/scripts/ppp-off /usr/sbin Bash$> cp /usr/doc/ppp-2.3.5/scripts/ppp-on-dialer /etc/ppp Bash$> cd /usr/sbin Bash$> chmod +x ppp-on Bash$> chmod +x ppp-off Bash$> cd /etc/ppp Bash$> chmod +x ppp-on-dialer 然後根據你的ISP作出相應的改動,比如ppp-on和ppp-on-dialer兩個可執行文件: ppp-on文件:只需要看我加入中文說明的地方 #!/bin/sh # # Script to initiate a ppp connection. This is the first part of the # pair of scripts. This is not a secure pair of scr ipts as the codes # are visible with the'ps' command. However, it is simple. # # These are the parameters. Change as needed. TELEPHONE=32768 # ISP提供的上網電話號碼 ACCOUNT=ynguo #賬號名稱 PASSWord=faintyou #登錄密碼,注意修改本文件權限以便保密 LOCAL_IP=0.0.0.0 #本地IP地址,0.0.0.0表示由ISP動態分配 REMOTE_IP=0.0.0.0 #遠端IP地址,一般為0.0.0.0 NETMASK=255.255.255.0 #子網掩碼地址 # # EXPort them so that they will be available at'ppp -on-dialer' time. export TELEPHONE ACCOUNT PASSWORD # # This is the location of the script which dials th e phone and logs # in. Please use the absolute file name as the$PATH variable is not # used on the connect option.(To do so on a'root' a ccount would be # a security hole so don't ask.) # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # Initiate the connection # # I put most of the common options on this command. Please, don't # forget the'lock' option or some programs sUCh as mgetty will not # work. The asyncmap and escape will permit the PPP link to work with # a telnet or rlogin connection. You are welcome to make any changes # as desired. Don't use the'defaultroute' option if you currently # have a default route to an ethernet gateway. # exec/usr/sbin/pppd debug lock modem crtscts/dev/tty S1115200 asyncmap20A0000 escape FF kdebug0$LOCAL_IP:$REMOTE_ IP noipdefault netmask$NETMASK defaultroute connect$DI ALER_SCRIPT& ppp-on-dialer文件: #!/bin/sh # # This is part2 of the ppp-on script. It will perform the connection # protocol for the desired connection. # exec chat-v TIMEOUT3 ABORT’ BUSY ’ ABORT’ NO ANSWER ’ ABORT’ RINGING RINGING ’ ’’ AT ’OK-+++c-OK’ ATH0 TIMEOUT30 OK ATDT$TELEPHONE CONNECT’’ username:--username:$ACCOUNT password:$PASSWORD 需要注意的是,在ppp-on腳本的最後一行用exec啟動pppd的參數中,/dev/ttyS1代表modem連結在COM2口上,115200表示modem的速率,可以根據實際情況進行修改;此外,如果ISP提供的撥號提示不是username,而是login的話,需要將ppp-on-dialer中的username改為login (即把username和login去掉第一個字母)。 3.配置域名服務器 編輯/etc/resolv.conf文件,加入ISP提供的域名服務器的IP地址。例如: search ustc.edu.cn nameserver 202.38.64.1 4.撥號上網 上述准備工作完成之後,以root權限登錄,開啟Modem,運行ppp-on,該腳本將負責撥號、送出登錄信息並完成協議驗證,當看到Modem上的數據指示燈停止閃爍並保持連接狀態的話,ppp就已經連接成功了。你可以用 netstat -r查看路由表或者pppstats檢查ppp的狀態,也可以通過Ping你的ISP,或者直接啟動Netscape浏覽器來檢查,如果一切正常的話,那麼你的Linux已經連接到Internet了。