BBS水木清华站∶精华区

 
主题:_如何安装PPPServer?_[ 8Nov94, 6kb] 
最近因工作需要,要在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叫起来 并和对方沟通。作法如下:下一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 system's 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 INIT="" ATZ\r OK WAITFOR=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的人一点帮助 若本篇FAQ有错误 
的地方,请多多见谅..  
  

BBS水木清华站∶精华区