免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1574 | 回复: 3
打印 上一主题 下一主题

请教:linux可不可以外接modem [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-27 13:47 |只看该作者 |倒序浏览
请教:想让外单位用户用拨号方式联入内网,是否可在linux操作系统上外接modem?

论坛徽章:
0
2 [报告]
发表于 2004-10-27 13:53 |只看该作者

请教:linux可不可以外接modem



在局域网中设置拨入服务器

在局域网中设置拨入服务器目的就是将Linux局域网设置成跟ISP一样的拨号服务器。假设用户在公司用Linux设置了拨号服务器,然后在家里通过拨号连到公司的拨号服务器上,进而访问公司的局域网,如此就可以实现“家庭办公”。如果公司的服务器是连在Internet上的,用户就可以浏览Internet了。“设置基本的拨号服务器”将告诉用户怎样实现这一功能。“回拨(Callback)”将讲述怎样节省联网所需的电话费。

因为已经介绍如何用Linux服务器做PPP客户端,所以这一节用Windows 98做客户端来配合讲述Linux服务器。

1.设置基本的拨号服务器

如果安装了PPP服务,可以将/etc/sysconfig/network文件里FORWARD_IPV4=false改成true就行了。之后需要重启以激活IP转发。

(1)使Liunx能够接受电话拨入

现在要做的就是使Modem所接的那个串口可以接受外来连接。打开/etc/inittab,会看到这样的几行代码:

#Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

在这几行之后,加上如下一行代码:

3:2345:respawn:/sbin/mgetty ttyS1

它的意思就是让Mgetty的串口ttyS1上监听,等待连接,如果有连接请求,Mgetty就向用户提示输入用户名和密码。

修改好之后,要使修改有效,可以运行如下代码:

init q

为了从远端登录,还要有一个账号,用useradd命令加一个叫ppp的用户,并用passwd命令为它设置口令。

(2)启动pppd与客户建立PPP连接

打开/etc/passwd文件,找到用户ppp的那一行,应该是这样的:

ppp:500:500::/home/ppp:/bin/bash

由此可以看出,用户ppp使用的shell程序是bash,现在要做的就是用pppd换掉这个bash。这样当用ppp登录时,就不会执行bash,而是执行pppd。如此,pppd就在服务器端启动了。

具体可以在/etc/ppp建立一个ppplogin文件,内容如下:

#!/bin/sh

exec/usr/sbin/pppd debug passive asyncmap 0 proxyarp lock Modem crtscts

chmod+x ppplogin

用ppplogin替换用户ppp的登录shell,就像如下代码:

ppp:500:500::/home/ppp:/etc/ppp/ppplogin

由于pppd执行必须要root权限,所以还要将pppd设成以root权限执行:

chmod u+s/usr/sbin/pppd

替换了登录shell和修改pppd属性之后,可以试一试。与前面介绍方法一样进行拨号,在输入用户名和密码之后,如果能看到pppd所特有垃圾字符,并且一行一行的没完,就说明服务器端pppd已经启动了。接着单击“继续”按钮,也就是启动客户端的pppd,与服务器的pppd进行握手。过了一段时间,就会看到登录网络成功,其标志就是熟悉的绿色小计算机出现了。

(3)针对Windows 98客户的特殊设置

Windows 98要求域名服务器在连接的时候传给它。pppd有个参数ms-dns,就是用来传DNS给客户的。在ppplogin里加上这个参数就可以了,比如:

#!bin/sh

exec/usr/sbin/pppd debug passive asyncmap 0 proxyarp lock\

Modem crtscts ms-dns 202.106.0.20

这两个DNS中,第一个DNS是主,第二个DNS是辅的。

2.回拨(Callback)

Callback就是当用户拨号连到拨号服务器时,服务器先断掉连接,然后再拨回给用户。用户的Modem接收这个呼叫,从而建立拨号连接。这样就给“家庭办公”创造了有利条件,可以在家里用回拨的方式连到公司进行办公。

(1)服务器端设置

在设置之前,应该确保Mgetty的Callback程序安装好了。将下面这行内容加到/etc/mgetty+sendfax/login.config中:

call_hxf--/usr/sbin/callback-d-l ttyS1-s 115200 -S 62345678

前面的call-hxf是指为Mgetty增加一个名为call_hxf的用户入口。这个用户只是Mgetty用来启动Callback程序的,而不是Linux系统中的用户,不要真的用useradd添加一个call_hxf用户,这个call_hxf用户名只是Mgetty用的,不是系统的。用户通过Modem连到Linux上,Mgetty提示输入用户名时,如果输入的是call_hxf,Mgetty就调用/usr/sbin/callback程序来处理回拨。参数-b是指在/var/log/mgetty.ttyS1留下调试信息;-1 ttyS1是指使用ttyS1为拨出设备;-s 115200是串口速率;-S 62345678是指定的回拨电话号码。如果没有-S参数,Mgetty就会提示输入回拨的目的电话号码。基于安全考虑,建议这里指定回拨的目的号码,否则别人用call_hxf登录,同样也可以使用回拨了。

现在可以试一试在Windows 98环境下,使用“拨号后出现终端窗口”的拨号连接。当出现终端口并提示login时,输入call_hxf。如果在login.config中没有指定回拨号码,现在就会有提示问回拨的电话号码了。输入现在使用的号码,此时服务器断开电话准备回拨,但是Windows 98会认为服务器断了,弹出一个对话框告诉用户服务器断开连接,请稍候再试。过一段时间后,电话会振铃,服务器正在回拨,但是Windows 98已经不响应了,看来Windows 98还要设置一下才能协调起来。现在还是把Linux服务器上的那个callback进程停止,不然它会一直播下去的。

(2)客户端设置

服务器准备回拨的时候要把电话先断掉。目的是让Windows 98检测不到这个变化,这样它就不会退出拨号程序了。打开所使用的拨号连接的属性的“常规”、“设置”、“连接”、“高级”、“附加设置”,将AT&C这个命令写在附加设置里。这个命令的意思就是让串口听载波检测(Carrier Detect)那根线保持有效,这样Windows 98就会认为电话一直是通的,服务器回拨时断掉电话它就检测不出来了。这样Windows 98的拨号客户程序就可以继续与服务器对话,并建立连接了。

下面的工作就是使Windows 98能接听服务器回拨的电话,并通过服务器的用户认证。建立一个脚本文件callback.scp,内容如下:

proc main
waitfor "ogin:"
transmit "call_hxf^M"
waitfor "munber for callback:"
transmit "65145678^M"
waitfor "RING"
transmit "ATA^M"
waitfor "ogin:"
transmit "^M"
waitfor "assword:"
transmit $PASSWORD
tramsmit "^M"
endproc



在所使用拨号连接的“属性”、“制作脚本”里填上文件的全路径和文件名。用户根据实际情况修改相应地方。

此脚本由一个一个的waitfor-transmit对组成,收到登录提示符“login:”,就发送callback的用户名call_hxf。如果服务器没有指定回拨的电话号码,就要在收到“number for callback:”这样的字符串后,发送自己的电话号码。当用户给了回拨号码后(或服务器已经指定),服务器就挂断电话、进行回拨。客户端Modem检测一个振铃,就向串口发送一个RING字符串,Windows 98从串口读到这个字符串,就会向Modem发出ATA命令,让它接听这个电话。之后,Mgetty向客户提示输入用户名和密码,这里的$USERID和$PASSWORD就是引用用户在拨号对话框里填入的用户名和密码。

在这个过程中,Windows 98的拨号程序一直通知用户正在验证用户名和口令。因为它不知道在做回拨,所以只好认为是在验证口令了。在整个回拨过程中,不要随便按“取消”,因为服务器端的Callback程序并不知道已取消了,它会一直拨电话。这个Callback程序的反应速度不是很快,在服务器断掉电话到听到回拨的电话铃声,可能要等20~30s。在回拨过程中,会发现在有一个被最小化的终端窗口,它就是Callback.scp脚本文件执行时的窗口。在听到回拨的电话铃声时,会在这个窗口看到“RING”,这表示Modem收到一个振铃。接着Callback.scp就会发出“ATA”接听这个电话,PPP就通了。


至此,linux拨号服务器以及回拨服务器的配置就讲完了。大概你可能觉得做服务器不如做客户条理清楚,头绪比较繁杂。的确,linux配置拨号服务器细碎的地方比较多,下面就把服务器的配置过程整理一下:


使IP转发有效echo "1">;/proc/sys/net/ipv4/ip_forward,RedHat可以修改/etc/sysconfig/network


安装mgetty。编辑/etc/inittab文件,加入7:2345:respawn:/sbin/mgetty ttyS1这一行。init q使修改有效。


编辑拨号登录文件ppplogin,内容就是执行pppd程序。将ppplogin设置成可执行chmod +x ppplogin。将pppd程序设置成以root权限执行chmod u+s /usr/sbin/pppd。


用useradd加一个拨号用户,比如ppp。用passwd为这个用户设置密码。编辑/etc/passwd文件,修改此用户的登录shell为ppplogin。


为客户分配IP地址,编辑文件:/etc/ppp/options.ttyXX,填入IP地址对。


为支持AutoPPP,修改/etc/mgetty+sendfax/login.config文件,把AutoPPP前的#去掉。再编辑/etc/ppp/pap-secrets文件,加入一行* * "" *,以支持AutoPPP。

以上是设置基本的拨号服务器的步骤,完成这些设置后,就可以进一步设置回拨服务器了,下面是设置回拨服务器的步骤。


Linux服务器:编辑/etc/mgetty+sendfax/login.config,加入一个回拨用户,就是类似这样的一行:call_hxf - - /usr/sbin/callback -d -l ttyS1 -s 115200


Win95客户:打开所使用的拨号连接的属性-〉常规-〉设置-〉连接-〉高级-〉附加设置,将AT&C这个命令写在附加设置里。


Win95客户:编辑并使用回拨脚本,如本文所述的callback.scp。

现在,你可以按照这些步骤来轻松的配置你的拨号服务器甚至是回拨服务器了!

至此,linux下的拨出和拨入就全部介绍完了。本文是以实用为目的,介绍我的一些经验,并没有讲述很多理论。如果有错误或是不足还请指出,也让我提高提高。希望这篇文章对你有所帮助。谢谢。

论坛徽章:
0
3 [报告]
发表于 2004-10-27 13:57 |只看该作者

请教:linux可不可以外接modem

是ppp连接吗?

论坛徽章:
0
4 [报告]
发表于 2004-10-28 12:30 |只看该作者

请教:linux可不可以外接modem

是点对点拨号
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP