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)
页面执行时间:3.904毫秒