分类
一项实用的技术:Linux下的PPP连接‖
Linux局域网服务器中如何
和服务器,同时讲解如何设
拨出和拨入的方法与技巧,即如
置回拨服务。
何让Linux服务器成为PPP的客户端
| Linux下如何拨号上网 |
| 在Linux服务器中设置P 连。下面为Linux PPP客户 | PP,使其能够拨号,并能连接到 端设置的一般步骤。 | ISP,从而将计算机与Internet相 |
| 1.编译内核使其支持PPP |
| 在大多数情况下,不用 文档,注意这个内核是否支 | 重新编译内核。如果不能确认Li 持PPP。 | nux是否需要编译,可以查阅说明 |
| 2.设置串行端口和调制解调器 |
| (1)串口设备文件 |
| Linux下串口设备文件的命名和DOS的关系如下: |
| DOC COM1=Linux/dev/cua0(and/dev/ttyS0) |
| DOC COM2=Linux/dev/cua1(and/dev/ttyS1) |
| 一般来说,/dev/cua*是用来拨出的 区分了,都用的是/dev/ttyS*。如果计算 备文件。有个脚本程序MAKEDEV可以简化 | ,/dev/ttyS*是用来拨入的,但现在已经可以不加以 机上没有/dev/ttyS*,则需要用mknod来建立这些设 这个工作: |
| # cd/dev |
| # ./MAKEDEV ttyS0 |
| (2)设置中断号和I/O地址 |
| 使用如下命令设置中断号: |
| /sbin/setserial/dev/ttyS0 ieq 3#串行鼠标 |
| /sbin/setserial/dev/ttyS1 ieq 4#MODEM1 |
| 使用如下命令来查看系统的中断设置,以确保没有中断冲突: |
| cat/proc/interrupts |
| I/O地址与中断一样必须是惟一的, 地址是这样的: | 可以设置硬件跳线来改变I/O地址。一般串行口的I/O |
| ttyS0 address 0x3f8 |
| 可以使用下面命令来查看系统的I/O地址设置,以确保没有冲突: |
| cat/proc/ioports |
| (3)设置调制解调器 |
| 一般情况下,调制解调器的出厂设置不用改变什么。 |
| 3.掌握ISP的信息 |
| 需要知道ISP一些基本 不允许在连线之时动态地指 | 信息,特别是DNS地址,并自己 定DNS的IP地址。 | 设置DNS。因为对于Linux来说,它 |
| 4.安装拨号所需软件 |
| PPP客户所需的程序有chat和pppd。 ,也要安装上。 | 还有一个终端通信程序minicom,用来测试拨号用的 |
| chat程序的用途是拨号 途是建立并维持与服务器的 | ,并等待提示,根据提示输入用 PPP连接,并传输数据。 | 户名和密码等登录信息。pppd的用 |
| 5.手动方式建立ppp连接 |
| 整个ppp连接很明显可分成两个步骤: |
| (1)用pppd建立ppp连接 |
| 测试拨号能否成功,退出,然后执行pppd程序如下: |
| pppd debug lock Mode | m crtscts defaultroute /dev/ | ttyS1 115200& |
| 在一个单独的虚拟控制台上运行下面代码: |
| tail-f/var/log/messages |
| 动态地观察各种日志信 了: | 息,包括pppd的调试信息。如果 | 看到下面信息就说明PPP连接成功 |
| Jun23 16:10:31hxf pppd[1234]:loc | al IP address210.88.131.151 |
| Jun23 16:10:31hxf pppd[1234]:rem | ote IP address192.168.10.21 |
| (2)断开连接 |
| 当测试通过后,需要把连接断掉,使用如下命令: |
| Killall pppd |
| 6.使PPP连接自动化 |
| 在经过手动连接测试之 接。 | 后,就要把这些变成自动的,目 | 的是只用一个命令就能实现拨号连 |
| 要使拨号自动化需要两 料。 | 个程序chat和pppd。要得到自动 | 拨号的效果,具体的可查看相关资 |
| 7.设置域名解析(DNS) |
| Linux下设置域名解析不太方便,域名服务器需要自己设定。 |
| (1)设置域名服务器 |
| /ect/resolv.conf文件是存放域名服 | 务器地址的地方,它的内容是这样的: |
| domain your.isp.domain.name |
| nameserver202.106.196.152 |
| nameserver202.106.196.115 |
| 需要做的事情就是把ISP的域名服务器地址填到这个文件里。 |
| (2)自动化 |
| 也许只想在拨号时才加 让这个过程自动化。可以建 本文件。pppd启动之后,会 /etc/ppp/ip-down.local里 中将这个文件改成/etc/res 再将保存的/etc/resolv.co | 上域名服务器地址,别的时间不 立/etc/ppp/ip-up.local和/etc 执行/etc/ppp/ip-up.local里的 的命令。可以先生成一个包含域 olv.conf,并将/etc/resolv.co nf恢复回来。这样就可以实现添 | 需要,因此除了手动之外,还可以 /ppp/ip-down.local两个执行的脚 命令;而pppd结束时,会执行 名服务器的文件,在ip-up.local nf保存下来。在ip-down.local中 加域名服务器的自动化了。 |
| 在局域网中设置拨入服务器 |
| 在局域网中设置拨入服 设用户在公司用Linux设置 而访问公司的局域网,如此 ,用户就可以浏览Internet 回拨(Callback)”将讲述怎 | 务器目的就是将Linux局域网设 了拨号服务器,然后在家里通过 就可以实现“家庭办公”。如果 了。“设置基本的拨号衿鳌?br>样节省联网所需的电话费。 | 置成跟ISP一样的拨号服务器。假 拨号连到公司的拨号服务器上,进 公司的服务器是连在Internet上的 将告诉用户怎样实现这一功能。“ |
| 因为已经介绍如何用Linux服务器做P 讲述Linux服务器。 | PP客户端,所以这一节用Windows 98做客户端来配合 |
| 1.设置基本的拨号服务器 |
| 如果安装了PPP服务, true就行了。之后需要重启 | 可以将/etc/sysconfig/network 以激活IP转发。 | 文件里FORWARD_IPV4=false改成 |
| (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:x:500:500::/home/ppp:/bin/bash |
| 由此可以看出,用户ppp使用的shell 这样当用ppp登录时,就不会执行bash, | 程序是bash,现在要做的就是用pppd换掉这个bash。 而是执行pppd。如此,pppd就在服务器端启动了。 |
| 具体可以在/etc/ppp建立一个ppplogin文件,内容如下: |
| #!/bin/sh |
| exec/usr/sbin/pppd d | ebug passive asyncmap 0 prox | yarp lock Modem crtscts |
| chmod+x ppplogin |
| 用ppplogin替换用户ppp的登录shell,就像如下代码: |
| ppp:x:500:500::/home/ppp:/etc/pp | p/ppplogin |
| 由于pppd执行必须要root权限,所以 | 还要将pppd设成以root权限执行: |
| chmod u+s/usr/sbin/pppd |
| 替换了登录shell和修 输入用户名和密码之后,如 器端pppd已经启动了。接着 行握手。过了一段时间,就 | 改pppd属性之后,可以试一试。 果能看到pppd所特有垃圾字符, 单击“继续”按钮,也就是启动 会看到登录网络成功,其标志就 | 与前面介绍方法一样进行拨号,在 并且一行一行的没完,就说明服务 客户端的pppd,与服务器的pppd进 是熟悉的绿色小计算机出现了。 |
| (3)针对Windows 98客户的特殊设置 |
| Windows 98要求域名服 给客户的。在ppplogin里加 | 务器在连接的时候传给它。pppd 上这个参数就可以了,比如: | 有个参数ms-dns,就是用来传DNS |
| #!bin/sh |
| exec/usr/sbin/pppd debug passive | asyncmap 0 proxyarp lock |
| Modem crtscts ms-dns 202.106.0.20 |
| 这两个DNS中,第一个DNS侵鳎诙鯠NS是辅的。 |
| 2.回拨(Callback) |
| Callback就是当用户拨号连到拨号服 户的Modem接收这个呼叫,从而建立拨号 在家里用回拨的方式连到公司进行办公。 | 务器时,服务器先断掉连接,然后再拨回给用户。用 连接。这样就给“家庭办公”创造了有利条件,可以 |
| (1)服务器端设置 |
| 在设置之前,应该确保 /etc/mgetty+sendfax/logi | Mgetty的Callback程序安装好了 n.config中: | 。将下面这行内容加到 |
| call_hxf--/usr/sbin/ | callback-d-l ttyS1-s 115200 | -S 62345678 |
| 前面的call-hxf是指为 来启动Callback程序的,而 用户,这个call_hxf用户名 Mgetty提示输入用户名时, 处理回拨。参数-b是指在/v 拨出设备;-s 115200是串 Mgetty就会提示输入回拨的 则别人用call_hxf登录,同 | Mgetty增加一个名为call_hxf的 不是Linux系统中的用户,不要 只是Mgetty用的,不是系统的。 如果输入的是call_hxf,Mgetty ar/log/mgetty.ttyS1留下调试 口速率;-S 62345678是指定的 目的电话号码。基于安全考虑, 样也可以使用回拨了。 | 用户入口。这个用户只是Mgetty用 真的用useradd添加一个call_hxf 用户通过Modem连到Linux上, 就调用/usr/sbin/callback程序来 信息;-1 ttyS1是指使用ttyS1为 回拨电话号码。如果没有-S参数, 建议这里指定回拨的目的号码,否 |
| 现在可以试一试在Wind 终端口并提示login时,输 有提示问回拨的电话号码了 Windows 98会认为服务器断 段时间后,电话会振铃,服 要设置一下才能协调起来。 直播下去的。 | ows 98环境下,使用“拨号后出 入call_hxf。如果在login.conf 。输入现在使用的号码,此时服 了,弹出一个对话框告诉用户服 务器正在回拨,但是Windows 98 现在还是把Linux服务器上的那 | 现终端窗口”的拨号连接。当出现 ig中没有指定回拨号码,现在就会 务器断开电话准备回拨,但是 务器断开连接,请稍候再试。过一 已经不响应了,看来Windows 98还 个callback进程停止,不然它会一 |
| (2)客户端设置 |
| 服务器准备回拨的时候 就不会退出拨号程序了。打 高级”、“附加设置”,将 检测(Carrier Detect)那根 拨时断掉电话它就检测不出 并建立连接了。 | 要把电话先断掉。目的是让Wind 开所使用的拨号连接的属性的“ AT&C这个命令写在附加设置里。 线保持有效,这样Windows 98就 来了。这样Windows 98的拨号客 | ows 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 |
| 在所使用拨号连接的“ 际情况修改相应地方。 | 属性”、“制作脚本”里填上文 | 件的全路径和文件名。用户根据实 |
| 此脚本由一个一个的wa callback的用户名call_hxf for callback:”这样的字 已经指定),服务器就挂断 RING字符串,Windows 98从 话。之后,Mgetty向客户提 拨号对话框里填入的用户名 | itfor-transmit对组成,收到登 。如果服务器没有指定回拨的电 符串后,发送自己的电话号码。 电话、进行回拨。客户端Modem 串口读到这个字符串,就会向Mo 示输入用户名和密码,这里的$U 和密码。 | 录提示符“login:”,就发送 话号码,就要在收到“number 当用户给了回拨号码后(或服务器 检测一个振铃,就向串口发送一个 dem发出ATA命睿盟犹飧龅?br>SERID和$PASSWORD就是引用用户在 |
| 在这个过程中,Windows 98的拨号程 道在做回拨,所以只好认为是在验证口令 服务器端的Callback程序并不知道已取消 不是很快,在服务器断掉电话到听到回拨 发现在有一个被最小化的终端窗口,它就 的电话铃声时,会在这个窗口看到“RING 就会发出“ATA”接听这个电话,PPP就通 | 序一直通知用户正在验证用户名和口令。因为它不知 了。在整个回拨过程中,不要随便按“取消”,因为 了,它会一直拨电话。这个Callback程序的反应速度 的电话铃声,可能要等20~30s。在回拨过程中,会 是Callback.scp脚本文件执行时的窗口。在听到回拨 ”,这表示Modem收到一个振铃。接着Callback.scp 了。 |