Linux 版 (精华区)

发信人: howdoit (教练让我上场!!!), 信区: Linux
标  题: 拨号服务器设置
发信站: 哈工大紫丁香 (Tue May 18 09:05:40 1999), 转信

《Linux公报》……让Linux更富魅力!

                   拨号服务器设置

                     By Josh Gentry     翻译:李涛

                                 摘要

    v 1.3, 1999年2月13日 

    本文是教你如何去建立一个基于电话线路使用SLIP和PPP的拨号服

务器. 

    本文著作权归作者(Josh Gentry)所有.作者鼓励散发本文,包括商

业或非商业用途.但希望通知作者.请不要修改本文,但并不计较当你在

讲述时所作的改动. 

    本文的大多数内容来源于下列LDP HOWTOs文档: 

            Linux Serial HOWTO 

            Linux Modem HOWTO 

            Linux Kernel HOWTO 

            Linux PPP HOWTO 

    在Gert Doering的有关mgetty+sendfax的随机文档也包含大量信

息.此外,当你在mgetty中配置AutoPPP时,下面两篇文章也极有帮助: 

      http://member.bellatlantic.net/~mrdennis/mgetty.htm,

      Mick Dennis 

      http://oh3tr.ele.tut.fi/~oh3fg/ppp/ppps.html, Kalevi

      Hautaniemi 

从下面文章中你可以了解到有关PAP方面的知识: 

      Olaf Kirch's Linux Network Adminstrators' Guide 

      S.u.S.E. Support Data Base

      http://wi-pc44.fh-konstanz.de/support-db/sdb_e/kfr_17.html

    本文中的大部分内容来源于为Mr. James Hart建立一个RedHat5.1

的拨入服务器.他工作于Technical/Vocational Institute in

Albuquerque, NM. Tony Lucero则是我的另一个工作伙伴.他们的帮助

和指导对我都是有着很大意义的. 

    最后,我要特别感谢那些编写了Linux内核及应用程序的人们,本文

是我对他们努力的一点小贡献. 

    声明:本文不包含任何显现的或是隐含的保证,同时也不对本文的

准确性负责.作者希望本文有些帮助,但你必须意识到其中的风险.作者

不对使用本文而造成的损失负责. 

1.导论 

    通常一个提供拨入服务的主机都配有一个Modem并连有电话线,允

许其他有同样配置的计算机通过电话线联接.这样做的理由是:使用

提供拨入服务的主机上的资源;如果那台主机在一个网络上,则我们

可以通过它而访问网络;进一步的,如果那台机器连入了Internet,

则它就成为了进入Internet的端口. 

    LDP HOWTO中包含了大部分有关设置一个拨入服务器的内容.但当

我参照那个文档去做时,却发现它并不完善.本文则循序渐进的阐述

建立一个DailIn Server 必要过程. 

    建立一个拨入服务器是一件普通的事但并不简单.本文试图清晰

的阐述这一过程.但你也要参考其他资料,最主要的是LDP HOWTOs,

但不要忽视getty和PPP的相关文档. 

    通过电话线连结两台主机的协议是一种对等协议;并不区分谁是

主叫或被叫.但从概念上以”客户服务器”模式理解会容易些.”你

的主机拨叫另一台主机并建立PPP联接,则您是客户,对方是服务器”

(Linux PPP HOWTO, Hart).余下我们仍将使用这一模型来讨论. 

2.安装调制解调器 

    作为一个拨入服务器,你至少得有一个调制解调器和与它相连的

电话线.由于调制解调器是串行设备,所以你需要阅读Linux Serial

HOWTO和Linux Modem HOWTO. 

    Linux并不能很好的支持即插即用(Plug-and-Play)型的调制解调

器,所以你可能需要一个可用跳线设置的或外置调制解调器. 

    串口像所有设备一样都有一个地址.通常Linux初始化四个串行设

备.这很像常称的COM 1-4.Linux中把它们定义为ttys0-ttys3.记

住,如果你使用了不是这四个串口,你必须用"setserial"来初始化

它.外置调制解调器会插在PC机上的RS232口上,它会被Linux自动分

配地址的.内置调制解调器则插在内部的PCI或ISA槽中.一个内置调

制解调器就是串口加调制解调器,你得自行设置它们的地址和中断.

因为PC机已经占有两个串口,你的内置调制解调器则被推荐用ttys2或

更高. 

3.内核的支持 

    这部分并不像大多数新手想象的那样困难.如果你做错了,通常

只需重新编译内核而已.参考Linux Kernel HOWTO. 

    其实我们并不一定要把PPP模块编译进内核.你可以当作一个可加

载的模块安装它,这样可使内核更小些.但把它放到内核中可使系统

执行快一些.当然你也可以按照下述方式把可加载模块编译进内核.

但如果你安装了"insmod"命令,就不需要重新编译内核了.使用命令

"insmod ppp"就可加载PPP的驱动.但我发现你必须先执行"insmod

slhc",才能成功安装PPP"insmod ppp".我不知道为何PPP模块依赖于

slhc模块.命令"lsmod"可以列出所有已安装的模块;同样你也可以用

命令卸载模块. 

    内核是一个可执行二进制文件.开发人员并不直接写可执行代

码,他们写出源代码而后由编译器来产生可执行代码.对Linux来说,

你是拥有源代码的,这样你可以重新调整你的内核,使它干净而有

效.基于此,你必须意识到你的内核不一定会包含你所需要的,所以

你必须作一些检查.必要时,你就得考虑重新编译内核. 

    为了编译内核,你必须建立一个配置文件.你也可以检查你现有

的配置文件,看是否都包含了你所需要的东西.大多数拨入服务器都

是基于局域网的.假定你的机器已经设置上局域网.如果没有,你必

须参考有关资料安装. 

    我喜欢用XConfig,使用图形界面要容易些.但必须安装XWindows

和Tk.XConfig下你可以在"Networks device"中寻找SLIP和PPP的选

项,这将用于拨入服务器的设置.如果连有局域网的话,内核必须支

持IP forwarding,你可以查看"Network options".可参考Linux

Kernel HOWTO,以下是基本步骤: 

   1.作一份现有内核的拷贝. 

   2.cd /usr/src/linux-(kernel version number) 

   3.命令"make config",XWindow下可用命令"make xconfig" 

   4.对所有有关网络的选项都回答"yes":SLIP, PPP, IP

      forwarding, etc. 

   5.存盘退出. 

   6.make dep 

   7.make clean 

   8.make zImage 

   9.cd /usr/src/linux-(kernel version number) 

  10.cp zImage /vmlinuz 

  11.lilo 

Linux kernel HOWTO告诉你可以用命令"make zlilo",这样可以自动拷

贝并安装内核. 

4.终端设备 gettys 

    你需要一个getty去处理调制解调器的通信.通常从inittab启

动,并作为一个后台运行,知道有呼叫进入.它会和呼叫方进行Modem

间的握手并建立连接.有好多个gettys可以作这件事.我们选用

mgetty.你可以得到modem-sendfax包,这也包含在RedHat5.1中

/etc/mgetty+sendfax.但你需注意,对不同的Linux套件及不同的机

器,"sbin/mgetty"的路径并不一定适用,你需要检查一下你自己的机器

设置. 

    对它的设置最重要的在:"/etc/megtty+sendfax/mgetty.config.

我们可以使用缺省的设置,修改它你可参考有关文档.如果你希望使用

AutoPPP,得编辑 "/etc/mgetty+sendfax/login.config".更细节的部

分我们将在后面讨论. 

    编辑/etc/inittab来启动mgetty.linux Serial和Modem HOWTO对

此很有帮助.你必须告诉mgetty哪个口需要监视.这些口通常命名为

ttys*(0-3).例如: 

S2:2345:respawn:/sbin/mgetty ttyS2 -D /dev/ttyS2 

    选项"-D"告诉mgetty仅处理数据,不包括传真.再这之后,我们需要

用命令"kill -1 l"来强迫initd重读inittab,mgetty将会启动.但如果

你使用了一个多串口板,口的名字将不同于标准口.Mick Dennis建议为

/dev/ttyC*.缺省设置下,mgetty使用SLIP建立连接,并通过

/etc/passwd来验证.这可使用户进入Shell.需要的话,我们也可以让用

户在登录完后启动PPP协议而不是SLIP.步骤如下: 

   1.让所有用户都有权利执行pppd. chmod u+s /usr/sbin/pppd 

   2.把这一行加到/etc/bashrc. alias ppp = "exec /usr/sbin/ppd

      -detach" 

我们也可以用另外一种方法,建立一个PPP账号,修改/etc/passwd如下:

ppp:x:351:230:pppclient:.home/ppp:/usr/sbin/pppd 

这样用户一旦以ppp账号登录,就自动启动pppd. 

对WIndows客户来说,他们需要在联接完启动终端窗口,但这并不是缺省

设置,按如下方法设置: 

   1.进入My Computer 

   2.进入Dial-Up Network 

   3.在connection图标上击鼠标右健 

   4.进入Properties 

   5.进入Configure 

   6.进入Options 

   7.选中"Bring up terminal window after dialing" 

    大多数Windows用户不习惯联接之后的登录窗口.你可以启用

AutoPPP来去掉这一步.这需要你重新编译mgetty.(很多人告诉我

RedHat5.2缺省情况下就是AutoPPP).编译前你得设置makefile文件: 

约在110行:CFLAG=-02 -Wall -pipe -DAUTO_PPP 

编译mgetty.然后你得编辑"/etc/mgetty_sendfax/login.config"文

件: 

约在50行: /AutoPPP/- -/usr/sbin/pppd file

/etc/ppp/options.server 

    这样一旦收到LCP设置请求,mgetty会自动启动pppd(对于LCP你可

参考pppd man page).file选项告诉pppd使用

"/etc/ppp/options.server"而不是缺省的"/etc/ppp/options".我们

使用特别选项文件可明确主机是作为Server或Client.假定你已设置好

"/etc/mgetty+sendfax/mgetty.config",但不要忘记重新启动以使新

选项生效. 

    如果你希望使用被mgetty监视的Modem拨号,你必须注意你所用的

应用程序所使用的设备.参考 

http://www.leo.org/~doering/mgetty_10.html#SEC10 

5.PPP 

PPP使最广泛使用的基于电话线的通信协议. 

可按照ppp随机文档编译pppd.但如果你使用了shadow password的话,

得加入如下命令行: 

make HAS_SHADOW=1 

使用MS-DNS选项来兼容WIndows, 

make USE_MS_DNS=1 HAS_SHADOW=1 

参考 http://ph3tr.ele.tut.fi/~oh3fg/ppp/ppps.html 

配置pppd: 

    这是通过编辑被pppd读取的配置文件来实现的.记住mgetty启动时

传入的是/etc/ppp/options.server.在pppd man page中有最全的选项

列表.如果你不配置PAP或CHAP,则配置文件如下: 

      -detach - 不成为后台进程 

      asyncmap 0 - 允许pppd可作为一个telnet或rlogin工作 

      modem - 使用Modem信号控制线 

      srtscts - 使用硬件流量控制 

      lock - 确定pppd在串行设备使用UUCP类型的加锁方式 

      proxyarp - 把IP加入到ARP表中 

      ms-dns aa.bb.cc.dd 将被Windows客户使用的DNS地址.但我并没

      有发现对应的非Windows客户选项 

      ms-dns ee.ff.gg.hh 

配置pppd+PAP(Password Authentication Protocol): 

    PAP是最常用的两种验证协议之一,另一个是CHAP(Challenge

Handshake Authentication Protocol),它是更严格的安全协议,但不

如PAP那样被广泛支持.本文阐述PAP的使用.对于PAP和CHAP可参考Olaf

Kirch's Linux Network Administrator's Guide. 既然PPP是对等协

议,所以PAP允许双向验证.这意味着"Server"可验证"Client",反之亦

然.对于增加PAP是很简单的事,就在我们上面的配置文件

/etc/ppp/options.server加两行: 

      require-pap 

      refuse-chap 

    这样pppd就会参照文件"/etc/ppp/pap-serects"来检查用户的登

录名和密码,只有在该文件中设有账号的才可登录: 

      #user      server       secret      adddrs 

      jode           *          password      * 

使用/etc/password的PAP: 

    如果你不想创建/etc/ppp/pap-secrets作为PPP的帐号文件,你也

可以指定使用/etc/password.只要加一项"login"到

/etc/ppp/options.server中即可.如下: 

      -detach 

      asyncmap 0 

      modem 

      srtscts 

      lock 

      require-pap 

      refuse-chap 

      login 

      proxyarp 

      ms-dns aa.bb.cc.dd 

      ms-dns ee.ff.gg.hh 

    如果"login"被使用,/etc/ppp/pap-secrets就不须存在了.实际

上,它可能会对PAP造成影响,你可以删掉这个文件也可以让它包含如下

行: 

* * " " 

    保留/etc/ppp/pap-secrets的好处在于你可以限制那些在

/etc/passwd中间有账号的人使用PPP登录.这可以在上面一行下加入: 

username * - * 

例如: 

      #user      server          secret          adddrs 

       *            *              ""               * 

      jdoe          *               -               * 

分配IP地址 

    为了PPP工作,Client就必须有IP地址.但大多数拨入的Client并没

有自己的IP地址,这就需要给它们分配一个IP给连接在串口上的

Client.先前我们定义了一个配置文件/etc/ppp/options.server来设

置PPP的连结选项.同样我们也可定义一个文件来约束在串口上的连结,

对ttyS2,建立文件/etc/ppp/options.ttyS2.在这个文件可用的选项之

一就是分配IP地址,格式如下: 

ii.jj.kk.ll:mm.nn.oo.pp 

第一IP是分给Server的;第二个是给连结在串口上Client.你必须确定

给Client的地址没有被分配各其他主机. 

全文完. 

  

  

Feed back on this document is appreciated:  email  

jgentry@swcp.com  

                       版权所有 (C) 1999 NJLUG

           出版于第38期《Linux公报》1999年3月 中文版第五期

                            


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.942毫秒