免费注册 查看新帖 |

Chinaunix

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

Linux 拨号服务器 (方便远程管理) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-23 23:51 |只看该作者 |倒序浏览
http://www.phpchina.com/bbs/viewthread.php?tid=93358&extra=page%3D10&sid=yIxJ2l
http://www.oklinux.cn/html/other/yjxg/20070518/23587.html
Linux 拨号服务器回叫配置指南
                                               
                                               
                                                                                                                                                                                                                        如
今多数人都经常在办公室和家里访问Internet,但即使在家里,我们也常常需要访问工作单位的局域网,或者通过单位的网络接入Internet。当我
们出差在外时,这种需要更加突出。不少单位鼓励员工在家里工作,并为此配置了拨号路由器/服务器允许员工接入。但通常员工仍需承担电话拨号费用。回叫正是
为了解决这个问题而产生的,是由拨号服务器接受拨号请求后反过来呼叫员工家庭电话号码,这样拨号费用由单位承担。
---- 作为最常见的拨号服务器系统之一,Linux也支持回叫。工作过程是首先由用户拨叫,Linux服务器经过身份认证后
切断连接,并呼叫该用户,用户的身份被再次确认后连接正式建立起来。用户只需为首次拨叫承担费用。在回叫程序中,
二次身份认证和一些额外选项的作用是防止不当使用。通过配置,我们能够限制用户对企业网或Internet的访问。回叫的配置过程十分灵活。下面具体介绍
回叫服务器在Linux系统上的配置。
一、从调制解调器开始
---- 在Linux 2.4系列内核发布之前(在本文发稿时消息传来,Linux 2.4.0已于2001年1月4日正式发布),Linux还不能使用Windows专用的调制解调器(Win-Modem)。
---- 对于Linux来讲,外置调制解调器要比内置的型号的更容易配置。具体的配置过程可以参考Linux Modem
HOWTO。如果是配置即插即用的Modem,则一定要首先打开内核中的PnP选项。遇到问题可以参考Linux Plug and Play
HOWTO。
---- 安装调制解调器后,首先我们应该检查一下调制解调器所使用的串口,然后创建符号链接/dev/modem指向该串口。举个例子, 假设调制解调器安装在第二个串口上,我们用如下的命令创建符号链接:
---- #ln -s /dev/cua1 /dev/modem
---- 随后使用如下命令来检查安装情况。
---- #ls -l /dev/modem
---- lrwxrwxrwx 1 root uucp 9 Sep 19 19:10 /dev/modem -> /dev/cua1
---- 串口与Linux设备文件的对应关系如附表。
/dev/cua0 或 /dev/ttyS0 COM1
/dev/cua1 或 /dev/ttyS1 COM2
/dev/cua2 或 /dev/ttyS2 COM3
/dev/cua3 或 /dev/ttyS3 COM4
---- 您可以使用minicom程序来检查一下调制解调器的配置。
二、呼叫Linux
---- 配置回叫的第一步是Linux内核的配置,如果当前内核还不支持PPP,需要重新编译内核加入PPP支持。有关信息可以参考Linux Kernel-HOWTO。
----
内核编译完成后,即可开始回叫软件的安装与配置。回叫程序是mgetty-sendfax和ppp的一部分。您可在Linux发行版光盘中找到它们。为了
实现回叫系统的双重身份确认,我们需要创建一个在服务器端运行PPP协议的用户pppuser,缺省shell为/etc/ppp/ppplogin。添
加完成后,在/etc/passwd文件中应该增加了类似如下的一行:
---- pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin
---- 在更改或设置口令之后。我们必须向文件/etc/ppp/pap-secrets中增加一些有关口令的信息。在该文件中增加如下一行:
---- pppuser 所设用户口令
---- 您可以使用用命令"man pppd"获得相关的详细信息。
---- pppuser不能使用通常意义的shell,而只能使用文件/etc/ppp/ppplogin。我们需要手动创建这个文件。使用命令"vi /etc/ppp/ppplogin"并输入如下内容:
---- #!/bin/sh
---- exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2
---- 这里,192.168.1.1是拨号服务器的IP地址,192.168.1.2是为客户端调制解调器分配的IP地址。这个文件要具有可执行属性。这时,为了使用ppp守护程序,必须设置相关参数。编辑文件/etc/ppp/options,设置如下内容:
netmask 255.255.255.0
proxyarp
lock
crtscts
modem
----
其中,proxyarp是最重要的一个选项。它的作用是使拨号客户端可以通过拨号服务器的调制解调器连接Internet。如果去掉proxyarp选
项, 则拨号用户就只能在单位局域网中工作了。其余的选项是用来控制调制解调器的。PPP-HOWTO或pppd帮助文件中有更详细的信息。
---- 接下来是调制解调器的设置。编辑文件/etc/inittab,设置连接在第二个串口的调制解调器如下::
---- s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100
---- 如果调制解调器连接在第一个串口,上面的内容要相应做如下修改:
---- s0:2345:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0 vt100
---- 这时最好运行如下命令来对/etc/inittab文件做语法检查:
---- #init q
---- 如果输出信息中没有显示任何错误,就可以进入下一步了。回到/etc/ppp目录下,创建options.ttyS1(如果是COM1, 则为options.ttyS0,其余类推)文件,其内容格式如下:
---- IP_local: IP_remote
---- 对于我们在上面的例子中假设的网络,这一行对应为:
---- 192.168.1.1:192.168.1.2
---- 这时还应该检查文件/etc/mgetty+sendfax/login.config,其中如下一行最重要,其余都可以用#号注释掉。
---- /AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug
---- 我们还需要为PPP守护程序设置SUID属性, 因为pppuser必须运行pppd并访问网络接口设备。运行如下命令。
---- #chmod u+s /usr/sbin/pppd
---- 这时,可以使用命令"ls -l /usr/sbin/pppd"进行检查,如果得到类似如下的输出,就说明改动生效了。
---- rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd
---- 建议您将它加入cron表,因为重新启动服务器后pppd的优先权可能会改变。另外,由于拨号服务器将承担路由器的工作,我们必须启用IP转发。将下面一行加入文件/etc/rc.d/rc.local中。
---- echo 1 > /proc/sys/net/ipv4/ip_forward
---- 在这里,如果您使用RedHat,可以在文件/etc/sysconfig/network中将FORWARD_IPV4的值由false改为true,也能达到同样的效果。
---- 如果是使用Linux客户端拨号,我们通常使用脚本来完成这个工作,对于Windows系统要在拨号设置时选中"连接后弹出终端窗口"选项。
---- 最后,我们以pppuser的身份登录。
三、请Linux"回电"
---- 如果前面步骤顺利完成,我们已经可以向Linux服务器拨号了。接下来就是回叫的设置。为此,我们只需要修改两个文件。首先创建一个空文件/etc/mgetty+sendfax/callback.conf。运行如下命令:
---- #touch /etc/mgetty+sendfax/callback.conf
---- 为了回叫,必须从用户那里得到电话号码,也就是记录下拨入的号码。为此,首先需要编辑文件/etc/mgetty+sendfax/login.conf, 加入如下一行:
---- call - - /usr/sbin/callback - S 123456
---- 这里的"call"是一个虚拟用户,用来初始化连接。这一行的作用是启动回叫程序,
呼叫指定的号码。本例中的号码是123456。同样的过程也适用于其他用户。当我们呼叫服务器时,我们以虚拟用户登录,通过身份确认。然后,客户机的的脚
本将连接挂断,回叫程序开始工作。客户端pppuser的账号和口令再次进行身份确认,随后连接就绪。
---- 拨号客户端的配置也比较简单。如果客户端使用Windows,我们必须为你的号码安装拨号程序. 在调制解调器的属性中找到"扩展属性"*"额外选项",加入如下命令:
---- &c0s0=1
---- 随后就可以按照上述说明拨号了。如果使用Linux客户端, 通常需要使用脚本来进行拨号。除了脚本配置以外,系统的PPP配置也非常重要。
---- 下面的两份脚本文件分别基于Slackware和RedHat Linux调试通过。您可以参考PPP-HOWTO获得关于在Linux如何书写脚本的详细信息.
---- 1.基于Slackware的脚本。
---- 首先是pppd的配置文件(以COM2的调制解调器为例)/etc/ppp/options。
lock
defaultroute
noipdefault
modem
/dev/cua1
33600
crtscts
debug
passive
asyncmap 0
and the specific scripts
the first named /etc/ppp/ppp-call
#!/bin/bash
teksta="Connection failed"
tekstb="Probably, You will be connect"
# /sbin/setserial /dev/cua1 spd_vhi
killall -INT pppd 2>/dev/null
rm -f /var/lock/LCK* /var/run/ppp*.pid
(/usr/sbin/pppd -detach /dev/ttyS1 115200  
connect "/usr/sbin/chat -v -f /etc/ppp/pppcallback" &) ||  
(echo $teksta; ls marsss >/dev/null; exit 1)
echo $tekstb
exit 0
第二个文件是/etc/ppp/pppcallback:
TIMEOUT 60
ABORT 'ERROR'
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'NO DIALTONE'
ABORT 'nVOICEr'
ABORT 'nRINGINGrnr
nRINGINGr'
'' AT&FH0 'OK-+++c-OK' 'AT&C0S0=1'
TIMEOUT 75
OK ATDT123456
CONNECT ''
ogin:-ogin: ppp_pseudouser
'nNO CARRIERr' ''
TIMEOUT 180
'nRINGr' AT&C1A
CONNECT ''
TIMEOUT 20
ogin:-ogin: pppuser
sword:-sword password_
for_pppuser
现在即可运行ppp-call了。
2.基于RedHat的配置脚本。
首先是/etc/ppp/options。
lock
defaultroute
noipdefault
modem
33600
crtscts
debug
passive
asyncmap 0
然后是/etc/ppp/pppcallback。
TIMEOUT 5
ABORT 'ERROR'
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'NO DIALTONE'
ABORT 'nVOICEr'
ABORT 'nRINGINGrn
rnRINGINGr'
'' AT&FH0 'OK-+++c-OK' 'AT&C0S0=1'
TIMEOUT 40
OK ATDT5376443 CONNECT ''
ogin:-ogin: ppp-pseudo-user
'nNO CARRIERr' ''
TIMEOUT 180
'nRINGr' AT&C1A
CONNECT ''
TIMEOUT 20
ogin:-ogin: pppuser
sword:-sword password_
for_ppuser
/usr/bin/ppp-call
#!/bin/bash
teksta="Connection failed"
tekstb="Probably, You will be connect"
# /sbin/setserial /dev/cua1 spd_vhi
killall -INT pppd 2>/dev/null
rm -f /var/lock/LCK* /var/run/ppp*.pid
(/usr/sbin/pppd -detach call ppp_call &) ||  
(echo $teksta; ls marsss >/dev/null; exit 1)
echo $tekstb
exit 0
编辑完成后,就可以使用ppp-call了。
您使用Microsoft Windows系统,可以使用下面的脚本进行连接。
proc main
delay 1
waitfor ogin:
transmit call^M
waitfor RINGtransmit ATA^Mwaitfor "CONNECTwaitfor ogin:
transmit pppuser^M
waitfor word:
transmit ppp^M
endproc
四、小结
----
回叫本身的配置并不复杂,最重要的是在Linux上正确配置PPP服务器,本文描述的配置方法是经过多次试验总结出来的,但决不是一成不变的,我建议您阅
读与其相关的文档, 譬如pppd手册、 NET4-HOWTO、PPP-HOWTO等,结合实践总结出自己的方法。这也正是使用Linux的乐趣所在。
======================================
odem可谓Linux下最难搞定的设备之一,它是我们使用Linux时许多失望和喜悦的源泉。本文介绍Modem相关的各种问题,比如端口、中断、PnP以及Modem检测、网络配置,等等。
作者:俞良军(仙人掌工作室)
端口与Modem类型
  计算机有许多连接其内部和外部世界的接口,部分接口是专用的,例如键盘接口只能连接键盘而不能连接任何其他设备,连鼠标也不能。
 
 连接外部设备的多用途接口称为“端口”(Port)。大多数PC机都带有两个串行端口和一个并行端口。串行端口用一条线路串行传送数据,每次传送一个数
据位,接收后再组合成字节。并行端口使用八条线路每次并行传送8个数据位。大多数家用打印机都连接到PC的并行端口。
  Modem
是一种通过电话线路传送数字信息的设备。我们知道,电话系统原本只为传送语音信息而设计,Modem技术突破了这一局限,它能够调制(modulate)
数字信息,把数字信息转换成可以通过电话线路发送的模拟信号。在接收端,模拟信号重新被转换成数字信号(即解调,demodulate)。Modem这个
词就是从modulator-demodulator缩写得到。
  Modem发明于串行口广泛应用的时代。那时的Modem都是独
立在计算机外的设备,通过电缆连接到串行口。今天我们仍可以见到这种外置的Modem,但更多的是插入主板的Modem卡,即内置Modem。由于大多数
计算机都带有二个串行口,内置Modem通常增加第三个端口。
  外置Modem的设置一般都相当简单,只需接好串行口和Modem之间的电缆、接上电话线、开启电源,大多数外置Modem就能直接开始工作。
 
 内置Modem刚出现时,它的板子上总是带有所有通信所需的电路元件,并提供设置地址和IRQ的跳线。硬件厂商总是在寻求降低成本的途径。随着PC功能
越来越好,Modem厂商开始用软件来替代部分电路元件,这些Modem称为软Modem或Winmodem。软Modem价格低廉,它用设备驱动程序来
完成原来必须由Modem卡电路元件完成的部分任务。
  软Modem的问题在于它的驱动程序是为Windows而不是为Linux编写的。虽然不存在什么特别的原因使得这种驱动程序的Linux版本无法编写,不过这最终还得看Modem厂商。到目前为止还没有厂商这么做。这就意味着软Modem不能在Linux下工作。
 
 购买Modem时应注意它是否注明了Linux兼容。软Modem的清单可以在http://www.o2.net/~gromitkc
/winmodem.html找到。根据经验,如果Modem包装盒注明了“HCF”、“HSP”、“Winmodem”或“soft
modem”字样,那么它很可能不能用于Linux。
总线、中断、地址和PnP
  PC机的大多数配件都和CPU、内存一起直接插入主板。主板提供许多扩展卡的接口,供显示卡、Modem之类的设备接入使用。现在也有许多主板直接集成这些功能,因此也就不需要再加这些扩展卡。许多集成到主板的Modem都可以顺利地在Linux下工作。
 
 主板上的接口连接到系统总线。总线有许多类型,较早的PC使用ISA总线,新的PC使用PCI总线。还有其他一些总线类型,但通常只涉及这两种总线。这
些总线的物理和电学特性都是不兼容的,ISA卡绝不能插入PCI插槽,因此购买Modem之前一定要搞清楚可以使用的总线。除非你的机器非常古老,一般它
会支持PCI。
  在计算机和新插入的卡建立联系之前,计算机必须知道该卡的I/O地址(输入/输出地址)和中断请求线。
  当计算机想要和插入系统总线的卡通信时,它通过发送I/O地址来选中该卡。每块卡都只应答自己的地址,所有卡都必须有不同的地址,
 
 中断(Interrupt)稍微复杂一点。当我们在浏览器中输入一个URL地址,就会建立与目标网站的连接,Modem开始接收数据;与此同时,计算机
还可以做其他事情,比如监视鼠标状态、打印输出等等。计算机不应该单独排外地专注于一件事情,应该有一种方法让Modem告诉计算机说:“打扰一下,这儿
有传送给你的数据”。这种方法就是中断。
  每一个中断都有一个独一无二的编号,称为IRQ。IRQ是Interrupt ReQuest的缩写。中断的数量很多,必须搞清楚每一个中断被分配到了什么设备上。例如,如果中断来自Modem,就不应该去检查鼠标。
 
 早期的扩展卡提供跳线让用户设置其I/O地址和IRQ。这种方法很容易出错,比如容易把两块卡设置成相同的地址或IRQ。为解决这个问题,软硬件厂商们
共同建立了一个标准,这个标准允许计算机主动地查询各个扩展卡并分配I/O地址和IRQ。它不仅使得地址和IRQ的分配自动化,同时也避免了可能出现的冲
突。这个标准就是“即插即用”,即Plug and Play,简称PnP。
  计算机启动时首先运行的软件是BIOS(Basic
Input Output
System)。BIOS唤醒计算机的所有设备,简单地检查计算机安装了哪些设备,然后装入操作系统。PnP设备的许多配置工作均由BIOS完成,但也有
部分工作要由操作系统完成。Linux还未能提供完善的PnP支持,虽然许多PnP设备可配置成在Linux下工作,但也有许多不能。
 
 如果Linux没有初始化某个PnP设备,不要马上对此绝望,很有可能存在解决方法。请查看isapnp工具的文档,Modem-HOWTO同样可以提
供帮助。如果兼容设备清单包含了该类Modem,不管它是不是PnP的,很可能无需任何额外的努力它就可以顺利地工作。
  安装Modem最常见的问题有三个:I/O地址或IRQ设置冲突,使用的是软Modem,不完善的PnP支持导致Modem配置错误。
配置拨号网络
  Modem接入计算机之后,怎样才能找到它?
 
 如果Modem是外置式的,那么你应该清楚它连接到了COM1还是COM2。如果Modem是内置式的,那么它很可能连接到COM3。COM1、
COM2这类名字是Microsoft对串行端口的称呼。在Linux中,COM1被称为/dev/ttyS0,
COM2是/dev/ttyS1,而COM3
则是/dev/ttyS2。在较早的Linux中,COM端口可能分别叫做/dev/cua0、/dev/cua1以及/dev/cua2。
  如果Modem是在Linux安装期间配置的,那么/dev目录下会生成/dev/modem。这应该是一个指向Modem正确端口的连接。要查看/dev/modem指向了何处,在X终端输入命令file /dev/modem。输出结果应当类如:
/dev/modem: symbolic link
to ttyS2
  它告诉我们Modem安装在COM3。如果/dev/modem存在且没有指向Modem实际安装的端口,则应删除该连接。有些Linux发行版本提供一个名为modemtool的工具,使用它可以创建正确的连接。
  请确保所有用户都具有访问/dev/modem以及串行端口的权限。
  如果你使用KDE,那么kppp是一个帮助你配置和管理Internet连接的优秀工具。大多数Linux发行都提供kppp。注意在建立拨号连接之前必须先收集必要的信息,比如用户名字、密码、电话号码、DNS服务器地址。下面是具体的配置过程。
  步骤1:指定系统所安装的Modem
  启动kppp。如果不能在KDE菜单上找到它,试一下/usr/bin/kppp命令。
  首先要做的事情是让kppp知道Modem在哪里。点击Setup按钮,在配置窗口中选择“Device”。
  点击“Modem Device:”旁边的箭头,出现一个可选用Modem端口的清单,选择Modem所接入的端口。接下来,再把“Connection Speed:”设置成115200,当然如果机器支持的话也可以把这个速度设置得更高。
  步骤2:测试Modem
  要测试Modem,先选择“Modem”页。点击“Query Modem”按钮,此时将出现一个窗口显示查询Modem的进度。请确保“Modem Volumn”(音量)设置在指示条的中间,以便在Modem工作时听到声音。
  如果kppp不能找到Modem,你可以返回步骤1试一下另外的端口(或速度)。
  步骤3:设置帐号参数
  接下来就可以设置帐号参数。返回“Accounts”页,选择“New”设置一个新的帐号。
  在“Dial”页下面,取一个容易使人记起拨号目标的名字(建议使用ISP的名字)并将它输入“Connection Name”框。然后再将ISP的电话输入“Phone Number”框。
  现在选择“IP”页,选中“Dynamic IP Address”检查框(如果ISP提供了固定的IP地址,则不要选中该项)。在DNS页,输入ISP提供的DNS服务器的IP地址。
  点击OK保存新创建的帐号。再次点击OK关闭“Configuration”窗口。
  步骤4:连接
  现在我们回到了最初的kppp窗口。输入用户名字和密码,然后点击“Connect”按钮。
  如果计算机能接通Modem,它将开始向设定的ISP拨号。此时可以听到Modem拨号的声音。
用Minicom测试Modem
  把Modem接入计算机之后首先要做的事情之一是测试一下看看它能否工作。这可以使用前面介绍的kppp,如果kppp不行,还可以使用一个名为minicom的Linux小工具。
  第一次运行minicom的时候必须进入设置模式,告诉它Modem所使用的端口。在X终端输入命令minicom -s(必须以root身份运行),此时将出现一个菜单。使用“Serial port setup”,确保端口和速度的设置都正确无误。
 
 配置好minicom之后,接下来就可以直接向Modem发送命令。大多数Modem都支持“贺氏协议”(Hayes
Protocol)。试一下AT命令,如果Modem能正常工作,它将应答OK。如果没有得到OK应答,那么可能端口设置错误,可能Modem已经损坏,
可能Modem不能适应你所设置的速度等选项。
  另外一个可能的原因是Modem被设置成了“静默”模式。试一下ATE1Q0V1命令。该命令告诉Modem回显并应答用户命令(如果它能够接受命令的话)。
  贺氏协议
 
 正如计算机业的其它许多事情,标准往往是由特定领域第一个取得成功的公司建立。第一个真正成功的Modem厂商是贺氏(Hayes)。贺氏开发了一种用
于控制其Modem的非常简洁的语言,即贺氏协议(Hayes Protocol)。今天,贺氏协议得到了几乎所有Modem的支持。
  贺氏协议的命令以AT开头,一行之内单个“AT”之后可以跟随多个命令。虽然贺氏协议的应用已经相当普遍,但某些Modem仍不能支持完整的贺氏命令集。要得到Modem所支持贺氏命令的完整清单,请参见Modem手册或制造商网站。
  下面是你应该熟悉的基本命令,大多数Modem都支持这些命令:
Z:(重新)初始化/重置
H:挂断
Ln:扬声器音量(L0=最低,L1=低,L2=中,L3=高)
Mn:扬声器控制(M0=关,M1=连接后关,M2=总是开启)
Vn:结果码格式(V0=以数字显示结果码,V1=以文字显示结果码)
En:命令回显(E0=不回显,E1=回显命令)
                     
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4700/showart_1840387.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP