当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 设置基本的拨号服务器

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 设置基本的拨号服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 38 ::
收藏到网摘: n/a


因为我们已经讲过如何用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
lock\modem
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一样好!