设置基本的拨号服务器
点击次数:29 次 发布日期:2008-11-22 09:44:09 作者:源代码网
|
源代码网推荐因为我们已经讲过如何用linux做ppp客户,所以这一节我们用win95做客户来配合讲述linux的服务器,因为毕竟win95做客户还是多数嘛。 源代码网推荐2.1设置基本的拨号服务器 源代码网推荐在这一节里,我们一步一步的建立拨号服务器,力求做到条理清楚。做拨号服务器的方法很多,这里讲的只是其中一种方法而已。 源代码网推荐我们首先要确保linux的内核支持ppp,并且支持IP转发(IPipchains),这个功能让你通过linux拨号服务器访问局域网上其他的机器,进而访问Internet,而不只是拨号服务器本身。幸好现在的linux发布版本所带的内核都支持这些功能,如果你使用自己编译的内核,你就要注意这个问题了。 源代码网推荐在内核支持IP转发之后,还要激活IP转发这个功能。使用如下命令:echo"1">/proc/sys/net/ipv4/ip_forward 源代码网推荐如果使用RedHat,可以将/etc/sysconfig/network文件里的FORWARD_IPV4=false改成true就行了。之后需要重启动以激活IP转发。 源代码网推荐使linux能够接受电话拨入 源代码网推荐要实现这个功能,要用到一个叫getty的程序,它的功能就是向用户显示login:和password:这样的登录提示,并调用login程序实现登录。我们平时在局域网里用telnet登录某台unix主机时,也是这个过程。只不过现在我们走的物理线路不同,我们走的是电话线—〉modem—〉串口,而telnet程序走的是网线和网卡。 源代码网推荐目前linux上有三种getty:getty_ps,agetty,mgetty。getty_ps就是所说的getty,另外两种也都实现了getty的功能。其中mgetty的功能比较强大,我们决定就用mgetty了。RedHat6包含了mgetty的四个软件包,mgetty-1.1.14-8.i386.rpm是必须安装的,如果你要用回拨功能,就要安装mgetty-sendfax-1.1.14-8.i386.rpm,callback程序包含在这个包里(不明白为什么在这个包里)。我反正不管那么多,rpm-Uvhmgetty*,全安装上算了。 源代码网推荐我们现在要做的就是使modem所接的那个串口可以接受外来连接。打开/etc/inittab,你会看到这样的几行: 源代码网推荐#Rungettysinstandardrunlevels 源代码网推荐1:2345:respawn:/sbin/mingettytty1 源代码网推荐2:2345:respawn:/sbin/mingettytty2 源代码网推荐3:2345:respawn:/sbin/mingettytty3 源代码网推荐4:2345:respawn:/sbin/mingettytty4 源代码网推荐5:2345:respawn:/sbin/mingettytty5 源代码网推荐6:2345:respawn:/sbin/mingettytty6 源代码网推荐在这几行之后,加上如下一行: 源代码网推荐7:2345:respawn:/sbin/mgettyttyS1 源代码网推荐它的意思就是让mgetty在串口ttyS1上监听,等待连接,如果有连接请求,mgetty就向用户提示用户名和密码。Mgetty也有好多参数,预知详情,请看mgetty的手册页。注意:程序的名字是megtty而不是上面几行写的mingetty。Mingetty是RedHat自己的终端程序,它不支持modem连接。我的一个同学曾经把mgetty错敲成mingetty,结果怎么拨电话,linux 源代码网推荐也不接。另外,这行开头的数字“7”并不是一定的,只要是在文件中没有重的,唯一的就行了,可以是两个字符或数字。 源代码网推荐改好之后,要使修改有效,运行:initq 源代码网推荐为了从远端登录,我们要有一个账号,用useradd命令加一个叫ppp的用户,并用passwd命令为它设置口令。 源代码网推荐下面我们就用win95的客户来试一试,我们在win95下新建一个连接,电话号码当然要填对,然后右键单击这个连接,依次选择属性-〉常规-〉设置-〉选项,将“拨号后出现终端窗口”打上勾,再按两次确定关闭对话框。现在双击这个连接,用户名和密码不用填,直接按“连接”,你会听到拨号声和一阵乱叫,接着会弹出一个黑底白字的窗口,这就是登录的终端窗口了!你会看到这与你登录linux时是一样的,输入用户名ppp和密码,你看到的是shell提示符,你通过modem登录到linux主机上了!但这种终端的形式上网,并不是ppp连接,相信你一定不会满意,你需要的是有WWW,FTP等丰富功能的网络。我们下面就来看看怎么实现ppp连接,现在在shell提示符下输入exit退出。 源代码网推荐启动pppd与客户建立ppp连接 源代码网推荐上面一小节已经实现跟telnet差不多的终端联网,但还很不够,现在我们要用pppd实现端对端的连接,实现真正的联网。 源代码网推荐为了给客户分配IP地址,我们要编辑一个新文件:/etc/ppp/options.ttyXX。文件名中的ttyXX就是你所用到的串口设备文件,我的就是/etc/ppp/options.ttyS1。在这个文件中给出一个IP地址对,就像这样:10.39.1.1:10.39.1.123 源代码网推荐冒号前面的的拨号服务器的IP地址,后面的是要分配给客户的IP地址。 源代码网推荐在前面讲述ppp客户时我们已经清楚,pppd程序要在服务器和客户机分别启动,并进行握手,实现连接。客户的pppd程序现在是用win95的拨号网络,我们就不管了,服务器端的pppd怎么启动呢?诚然,你可以登录后手工输入下面命令来启动pppd:pppddebugproxyarpasyncmap0lockmodemcrtscts 源代码网推荐但这似乎太过麻烦,我们需要pppd能自动启动,下面就来看看怎么搞! 源代码网推荐打开/etc/passwd文件,找到用户ppp的哪一行,差不多是这样的:ppp:x:500:500::/home/ppp:/bin/bash 源代码网推荐你可以看出用户ppp使用的shell程序是bash,我们现在要做的就是用pppd换掉这个bash,这样当用ppp登录时,就不会执行bash,而是执行pppd,如此,pppd就在服务器端启动了。 源代码网推荐具体我们可以这样做:在/etc/ppp建立一个ppplogin文件,内容如下: 源代码网推荐#!/bin/shexec/usr/sbin/pppddebugpassiveasyncmap0proxyarp 源代码网推荐lockmodemcrtscts 源代码网推荐pppd的参数大多都见过,其中proxyarp的意思就是让ppp客户通过ppp服务器访问网上其他机器,而不只是ppp服务器一台。将ppplogin设成可执行的:chmod+xppplogin用 源代码网推荐ppplogin替换用户ppp的登录shell,就像这样:ppp:x:500:500::/home/ppp:/etc/ppp/ppplogin 源代码网推荐由于pppd执行必须要root权限,还要将pppd设成以root权限执行:chmodu+s/usr/sbin/pppd 源代码网推荐 替换了登录shell和修改pppd属性之后,我们来试一试。与上一小节一样的进行拨号,在输入了用户名和密码之后,你是否看到pppd所特有垃圾字符?并且一行一行的没完?如果看到的话,恭喜你!服务器端pppd已经启动了!你接着点继续按钮,也就是启动客户的pppd,与服务器的pppd进行握手,一会儿,你就会看到登录网络成功,那个熟悉的绿色小电脑又出了!你是不是意识到什么?对了!你可以上网了!如果你使用linux做客户的话,工作就完成了。但是由于win95的一些特殊要求,我们还要针对win95做一些特殊设置。 源代码网推荐针对win95客户的特殊设置 源代码网推荐前面谈到了win95与linux做客户,对域名服务器的要求是不一样的。Win95要求域名服务器在连接的时候传给它,这在linux拨号服务器上怎么做呢? 源代码网推荐如果你看过pppd的手册页,你可能已经看到pppd有个参数ms-dns,它就是用来传dns给客户的。在你的ppplogin里加上这个参数就可以了,比如: 源代码网推荐#!/bin/sh 源代码网推荐exec/usr/sbin/pppd 源代码网推荐debugpassiveasyncmap0proxyarp 源代码网推荐lockmodem 源代码网推荐crtsctsms-dns10.39.0.133ms-dns10.39.1.133 源代码网推荐两个dns第一个是主,第二个是辅。 源代码网推荐在前面讲win95拨号时,我们使用“拨号后出现终端窗口”,然后手工输入才登录上的,而别的ISP却不是这样。我们把“拨号后出现终端窗口”选项去掉,按照常规在拨号对话框里填入用户名和密码,但这样会出错,怎样才能按照常规那样拨号不用弹出终端窗口呢?getty有几个配置文件在/etc/mgetty+sendfax,其中login.config是比较重要的。在login.config中有下面这样一行: 源代码网推荐#/AutoPPP/-a_ppp/usr/sbin/pppdauth-chap+paplogindebugmodemcrtsctsproxyarplock 源代码网推荐我们把行首的注释#去掉就行了。由于拨号连接可以是ppp也可以是slip,Win95客户与拨号服务器对话的时候,要求自动使用ppp,win95客户向拨号服务器发出某种信号,让拨号服务器自动启动ppp。我们这里所做的就是让mgetty响应这个信号并启动pppd实现AutoPPP。我们看到这里的pppd程序的参数多了几个:auth-chap+paplogin,我们只要知道这些跟win95的安全认证有关系就行了,具体含义请看pppd的手册页。为了支持这几个参数,需要编辑/etc/ppp/pap-secrets文件。这个文件是pap认证用的,我们不做研究,在里面填上一行最通用的就行了,如果你要对用户进行安全认证,请参阅pppd所带的例子和相关的文档。这个文件的内容就像这样: 源代码网推荐#SecretsforauthenticationusingPAP 源代码网推荐#clientserversecretIPaddresses**""* 源代码网推荐现在我们用win95建立一个新的拨号连接,就像连接别的ISP一样输入用户名和口令,也可以在“保存口令”上打上勾,好了,连接吧!你会看到你的linux拨号服务器工作的像别的ISP一样好! 源代码网推荐源代码网供稿. |
