最近因工作需要,要在Linux上裝個PPPserver,接受撥接進來的電
話,連上整個公司的ethernet網路,再經由router接上internet,過程並
不順利,整台Linux有許多地方需要設定,為避免大家浪費許多無謂的時間,
所以有這篇FAQ的產生,我所使用的是Linux1.0.9這份FAQ並沒有完整的介
紹Linux PPP的部份,只針對PPP server的部份,把我安裝的經驗寫出來,
適合已裝上PPP,並能用來連接其他PPP server的人。 若想從無到有,你可
以三考開放系統與網路雜志1994年,八月份出版, 曾瑞源先生的Internet低
廉上網,再三考本篇及各種FAQ就可以建立一個PPP server了。 若想更進一
步, 讓不同網路的PPP server相連,可以造成一 個router,讓兩個網路
互通有無,但這部份我沒試過,請各位努力研究。要建立PPP server有三個步驟:
1.你的modem必須要能接電話。
2.你的linux必須能透過serial line顯示login prompt。
3.建立呼叫pppd的account
一、 如 何 讓modem接 電 話。
我不會用linux來設定,所以用windows 3.1的終端機來設定modem,
執行windows的終端機。對modem下ATS0=1,這是叫modem在電話響一聲後就接,
=2就是響兩聲。AT&W,把剛設的狀態存起來,今後每當電話響一聲,modem就
接起來了。
二、 如何透過serial line顯示login prompt。
在/etc底下,有個inittab,有段內容要設定如下:
# Serial lines 這是我的設定, 可能與你的不同。
#s1:45:respawn:/sbin/getty ttyS0 19200 vt100 s2:45:respawn:/sbin/getty ttyS1
19200 vt100 每一行之前若加上#,代表注解。 意義為
id:runlevel:action:/etc/getty [options] line [speed [term [lined]]]
其getty必須為getty_ps,這部份說明可以在Serial-HOWTO中找到。有了這段設定,
重頭開機,並連上後,若下ps aux指令,應可看到一些資料,其中某些欄位已省略。
.... root 88 232 v02 S 10:58 0:00 /sbin/getty tty2 3840
root 88 233 v03 S 10:58 0:00 /sbin/getty tty3 3840
root 92 264 psf S 11:33 0:00 /sbin/getty ttyS1 19200 .. ..
/dev/ttyS1是給撥進來的connection使用的。
/dev/cua1是撥出去用的。
以上兩者皆為com2到目前為止,如果用modem撥進來,將可出現login prompt的畫面如
下: login:
此時整條serial line已通,可以login,並下一些簡單的命令,
但local端和remote端並未開始商議PPP。
三、 為了提供PPP service,我們要建立一個account,如:ppp01,他的login shell可
以把pppd叫起來?nbsp;並和對方溝通。作法如下:下一adduser命令
linux>adduser
----------------------這 以 下 為adduser AP的user interface
Adding a new user. The username should be not exceed 8 characters
in length, or you many run into problems later.
Enter login name for new account (^C to quit): ppp01
Editing information for new user [ppp01]
Full Name: ppp01
GID [100]:100
Checking for an available UID after 500
501...502...503...504...505...506...507...508...
First unused uid is 509
UID [509]:509
Home Directory [/home/ppp01]: /home/usr/ppp01
Shell [/bin/bash]: /etc/ppp/ppplogin
PassWord [ppp01]:xxxxx
-------------------------以 上 為adduser
一般login shell為/etc/bash或/etc/csh, 但我們為了在login時就執行pppd,
建立一個ppp connection,所以寫了一 個executable scrip內容如下:
------------以 下 為/etc/ppp/ppplogin
#!/bin/csh
exec /usr/etc/pppd passive netmask 255.255.255.0 proxyarp :140.xxx.xxx.xxx
------------以 上 為/etc/ppp/ppplogin
passive意思是pppd一開始會嘗試negotiate,若沒有回應,則等待。
netmask 255.255.255.0設定subnet mask。
proxyarp add an entry to this systems ARP table。
∶140.xxx.xxx.xxx設定撥進來那端的IP
關於pppd這部份的option,可用man pppd來研究。
做了adduser後/etc/passwd的內容如下:
ppp01:(encrypted password):505:100:ppp01:/home/usr/ppp01:/etc/ppp/ppplogin
上述是server端建立的方法,至於client連接ppp server不多做介紹,
只指出要注意的地方,我使用的軟體是winspan 3.0,至於Trumpt winsock、linux
pppd,只聽過沒用來連過,各位就多見諒了,其設定是大同小異的。Winspan裡有
個configure,裡頭有界面卡,選擇ppp、設定,設定baud rate等,重要的是local ip
address,這個地方要和ppplogin中所設的:140.xxx.xxx.xxx一樣,因為這linux pppd
的設定方法,把這ip固定了,所以要設一樣的。至於要dynamic assign IP、或更多
條線,這就三考其他faq,我並沒有嘗試。至此大功告成,用ppp01帳號login後,pppd就
開始和對端商議PPP了。但事情真的這麽順利嗎?可能沒有,你可能碰到某些狀況如下:
1.modem可以接電話了,但接下來沒有任何動作,login prompt並不會出現。解法:
/etc/default下, 有getty一開始要讀的檔案,其內容可能如下:
CLEAR = NO HANGUP=YES IN99v="" ATZ\r OK WA99vFOR=RING
CONNECT="" ATA\r CONNECT \s\A
你若是用man getty研究其option就知道為什麽不出現prompt,所以我改成
CLEAR = NO
HANGUP=YES
login prompt就出現了。
2.怎麽一切設對,ppp connection也建立起來了,可以從local端telnet到linux上了,
但卻無法到其他機器上。原因:pppd的ARP table並沒有成功建立,packet無 法route出
去。理論上pppd應可自動建立ARP table,但我不知哪裡設錯,無法建立。解法:
手動建立ARP table,可三考NET-2-HOWTO或NET-3-HOWTO的9.Routing。
#
#Proxy ARP for those dialin users who will be using this
#machine as a server
#
/sbin/arp -s 140.xxx.xxx.xxx 00:00:C0:AD:37:1C pub
#End proxy arps
以arp -a指令將可發現? (140.xxx.xxx.xxx) at 00:00:C0:AD:37:1C
這樣才可以正確route出去。
注意:00:00:C0:AD:37:1C是ethernet address,也就是網路卡的hardware address,
在linux開機時注意看將可發現。
3.可以正常顯示,並當terminal Server,但用ppp帳號login後就斷了. 原因:
pppd根本沒有執行,可在console以ppp帳號login,看該帳號是否的確可以執行PPPD.
希這篇能給那些想在辦公室或實驗室裝個PPP server的人一點幫助?nbsp;若本篇FAQ有錯誤
的地方,請多多見諒..
希這篇能給那些想在辦公室或實驗室裝個PPP server的人一點幫助?nbsp;若本篇FAQ有錯誤
的地方,請多多見諒..