分类

  • 软件天地

  • 一项实用的技术:Linux下的PPP连接‖
    Linux局域网服务器中如何
    和服务器,同时讲解如何设
    公”一族中,PPP连接是非常实
    拨出和拨入的方法与技巧,即如
    置回拨服务。
    用的一项技术。本文将详细讲解在
    何让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
    了。

    上一页 下一页




    map