Linux 版 (精华区)

发信人: netiscpu (说不如做), 信区: Linux
标  题: 回拔经验谈
发信站: 哈工大紫丁香 (Tue May 18 08:29:44 1999), 转信

NJLUG 1998.12.26 LinuXmas联谊会 征文比赛 参赛作品 

  

作者 : 周健成 

Email: jmzjc@126.com 

  

  

一.Linux与Linux之间的互拔:

    请看图一: 

         我家里:                               办公室: 

         机器名:j128                           机器名:vms68 

             OS: RedHat5.1                          OS: RedHat5.1 

             IP: 192.168.88.128  <----电话网---->   IP: 192.168.89.68 <--->

 Internet 

            |                [ttyS0]           [ttyS1]            [ttyS0] 

            |网线 

            | 

         机器名:j003 

             OS: Win98 

             IP: 192.168.88.3 

第一步要配置Linux为ppp服务器,允许拔入,如姚飞所说: 

  

    使用mgetty 

    (以下假设modem装在ttyS0) 

    cd /etc 

    vi inittab 

    add : 

    d1:2345:respawn:/sbin/mgetty ttyS0 # COM1口允许拔入 

    d2:2345:respawn:/sbin/mgetty ttyS1 # COM2口允许拔入 

    then:    init q                    # 重读配置文件/etc/inittab 

    注意, 如果想拔号出去,  pppd 使用的设备也必须是/dev/ttyS0或/dev/ttyS1, 

    而不是/dev/modem, 要不然是拨不出去的. 

我这样做后,j128和vms68都可允许拔入,但还不是ppp server,还需要以下几步: 

    在vms68里: 

    adduser ppp #新加一个用户 

    passwd  ppp #为ppp起个密码 

    在/home/ppp下建一个脚本ppplogin,内容如下: 

        exec /usr/sbin/pppd 115200 modem asyncmap 0 proxyarp \ 

                   192.168.89.68:192.193.89.69 

        #####            LOCALIP:REMOTEIP 

    vi /etc/passwd 

    将这行ppp:xxxx:505:505:ppp acount:/home/ppp:/bin/bash 

      改为ppp:xxxx:505:505:ppp acount:/home/ppp:/home/ppp/ppplogin 

    在j128里: 

    adduser ppp #新加一个用户 

    passwd  ppp #为ppp起个密码 

    在/home/ppp下建一个脚本ppplogin,内容如下: 

        exec /usr/sbin/pppd 115200 modem asyncmap 0 proxyarp \ 

             0.0.0.0:0.0.0.0.0   ###等vms68分配ip地址 

    vi /etc/passwd 

    将这行ppp:xxxx:505:505:ppp acount:/home/ppp:/bin/bash 

      改为ppp:xxxx:505:505:ppp acount:/home/ppp:/home/ppp/ppplogin 

下一步要配j128拔到vms68,这很简单, 

跟拔到Internet是一样的,文件ppp-onvms68如下: 

# Script to initiate a ppp connection. This is the first part of the 

# pair of scripts. This is not a secure pair of scripts as the codes 

# are visible with the 'ps' command.  However, it is simple. 



# These are the parameters. Change as needed. 

TELEPHONE=xxxx         # The telephone number for the connection 

ACCOUNT=ppp      # The account name for logon (as in 'George Burns') 

PASSWORD=xxxx       # The password for this account (and 'Gracie Allen') 

LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0 

REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0 

NETMASK=255.255.255.0 # The proper netmask if needed 



# Export them so that they will be available at 'ppp-on-dialer' time. 

export TELEPHONE ACCOUNT PASSWORD 



# This is the location of the script which dials the phone and logs 

# in.  Please use the absolute file name as the $PATH variable is not 

# used on the connect option.  (To do so on a 'root' account would be 

# a security hole so don't ask.) 



DIALER_SCRIPT=/home/ppp/ppp-on-dialer 



# Initiate the connection 



# I put most of the common options on this command. Please, don't 

# forget the 'lock' option or some programs such as mgetty will not 

# work. The asyncmap and escape will permit the PPP link to work with 

# a telnet or rlogin connection. You are welcome to make any changes 

# as desired. Don't use the 'defaultroute' option if you currently 

# have a default route to an ethernet gateway. 



exec /usr/sbin/pppd /dev/ttyS0 115200 modem $LOCAL_IP:$REMOTE_IP  \ 

     defaultroute lock crtscts asyncmap 0  connect $DIALER_SCRIPT \ 

     debug 

现在配vms68拔到j128,文件ppp-onj128如下: 

# Script to initiate a ppp connection. This is the first part of the 

# pair of scripts. This is not a secure pair of scripts as the codes 

# are visible with the 'ps' command.  However, it is simple. 



# These are the parameters. Change as needed. 

TELEPHONE=xxxx         # The telephone number for the connection 

ACCOUNT=ppp      # The account name for logon (as in 'George Burns') 

PASSWORD=xxxx       # The password for this account (and 'Gracie Allen') 

LOCAL_IP=192.168.89.68 # Local IP address if known. Dynamic = 0.0.0.0 

REMOTE_IP=192.168.89.69 # Remote IP address if desired. Normally 0.0.0.0 

NETMASK=255.255.255.0 # The proper netmask if needed 



# Export them so that they will be available at 'ppp-on-dialer' time. 

export TELEPHONE ACCOUNT PASSWORD 



# This is the location of the script which dials the phone and logs 

# in.  Please use the absolute file name as the $PATH variable is not 

# used on the connect option.  (To do so on a 'root' account would be 

# a security hole so don't ask.) 



DIALER_SCRIPT=/home/ppp/ppp-on-dialer 



# Initiate the connection 



# I put most of the common options on this command. Please, don't 

# forget the 'lock' option or some programs such as mgetty will not 

# work. The asyncmap and escape will permit the PPP link to work with 

# a telnet or rlogin connection. You are welcome to make any changes 

# as desired. Don't use the 'defaultroute' option if you currently 

# have a default route to an ethernet gateway. 



exec /usr/sbin/pppd /dev/ttyS1 115200 modem $LOCAL_IP:$REMOTE_IP  \ 

     lock crtscts asyncmap 0  connect $DIALER_SCRIPT              \ 

     debug 

这里要注意LOCAL_IP和REMOTE_IP要给值,还有的是在pppd里没有defaultroute。 

因为vms68还要拔上Internet,所以不要defaultroute。 

在j128上用ppp-onvms68拔上vms68,连通后telnet vms68,执行以下命令: 

      nohup sleep 30;ppp-onj128 

然后在j128上断线,等待vms68拔入。拔通后,在j128上要执行以下命令: 

route add -net 192.168.89.0 gw 192.168.89.69 ppp0 

route add default gw 192.168.89.69 ppp0 

ipfwadm -F -a m -S 192.168.88.0/24 -D 0.0.0.0/0 

现在可再telnet vms68,在vms68上拔号上网,这样j003可通过j128,再通 

过vms68上网,我也不用付任何费用。 

  

二.Win98与Linux之间的互拔:

    请看图二: 

         我家里:                               办公室: 

         机器名:j128                           机器名:vms68 

             OS: RedHat5.1                          OS: RedHat5.1 

             IP: 192.168.88.128                     IP: 192.168.89.68 <--->

 Internet 

            |                                 [ttyS1]            [ttyS0] 

            |网线                                 | 

            |                                     | 

         机器名:j003                             | 

             OS: Win98 --------------------------- 

             IP: 192.168.88.3        电话网 

这里vms68要象第一步所说的,要配成允许拔入的ppp server。 

这里主要是win98的配置,首先象上Internet那样,在拔号网络里新建一个连接, 

要注意两点,一要设置连通后弹出终端窗口,二是最主要的,在“控制面板”里 

选“调制解调器”,选用来连线的modem,选“属性”按钮,选“连接”,再选 

“高级”按钮,再在“附加设置”里输入&C0S0=001。 

为什么要这样做?因为win98自带的ppp client会自动退出当远端ppp server挂线 

时,因此要骗一骗win98,要modem不要报告断线,并自动应答拔入。&C0就是要 

modem不要检测carrier,s0=001要modem在响一下后就应答。 

现在配vms68拔到j003,文件ppp-onj003如下: 

# Script to initiate a ppp connection. This is the first part of the 

# pair of scripts. This is not a secure pair of scripts as the codes 

# are visible with the 'ps' command.  However, it is simple. 



# These are the parameters. Change as needed. 

TELEPHONE=xxxx         # The telephone number for the connection 

#ACCOUNT=ppp      # The account name for logon (as in 'George Burns') 

#PASSWORD=xxxx       # The password for this account (and 'Gracie Allen') 

LOCAL_IP=192.168.89.68 # Local IP address if known. Dynamic = 0.0.0.0 

REMOTE_IP=192.168.89.69 # Remote IP address if desired. Normally 0.0.0.0 

NETMASK=255.255.255.0 # The proper netmask if needed 



# Export them so that they will be available at 'ppp-on-dialer' time. 

export TELEPHONE ###ACCOUNT PASSWORD 



# This is the location of the script which dials the phone and logs 

# in.  Please use the absolute file name as the $PATH variable is not 

# used on the connect option.  (To do so on a 'root' account would be 

# a security hole so don't ask.) 



DIALER_SCRIPT=/home/ppp/ppp-on-dialer 



# Initiate the connection 



# I put most of the common options on this command. Please, don't 

# forget the 'lock' option or some programs such as mgetty will not 

# work. The asyncmap and escape will permit the PPP link to work with 

# a telnet or rlogin connection. You are welcome to make any changes 

# as desired. Don't use the 'defaultroute' option if you currently 

# have a default route to an ethernet gateway. 



exec /usr/sbin/pppd /dev/ttyS1 115200 modem $LOCAL_IP:$REMOTE_IP  \ 

     lock crtscts asyncmap 0  connect $DIALER_SCRIPT              \ 

     debug 

这里要注意LOCAL_IP和REMOTE_IP要给值,还有的是在pppd里没有defaultroute。 

因为vms68还要拔上Internet,所以不要defaultroute。还有这里没有ACOUNT和 

PASSWORD,因为WIN98的PPP CLIENT不要用户名和密码,因此在PPP-ON-DIALER里 

要把送ACOUNT和PASSWORD的那两行去掉。 

J003通过拔号拔上VMS68后,要TELNET VMS68,在VMS68里执行以下脚本: 

      kill `cat /var/run/ppp0.pid` ###注意如果是用ppp1,就用ppp1.pid 

      nohup sleep 30;ppp-onj003 

这里要特别注意的一点是一定要在linux里断线,因为在WIN98里断线,则WIN98 

的PPP CLIENT就会退出,就不会应答呼叫。 

现在WIN98和LINUX之间就可以实现回拔了,但要注意WIN98的路由问题。 

在win98下要自配一下路由,在win98的目录里有route程序,它的格式如下: 

         route print/add/delete/change (直接打route就有帮助看) 

  

象我的j003,在没有拔号时,用route print得到如下信息:(行号是我加上的) 

Active Routes: 

   Network Address          Netmask  Gateway Address        Interface  Metr

ic 1          0.0.0.0          0.0.0.0   192.168.88.128     192.168.88.3   

    1 2        127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1

       1 3     192.168.88.0    255.255.255.0     192.168.88.3     192.168.8

8.3       1 4     192.168.88.3  255.255.255.255        127.0.0.1        127

.0.0.1       1 5   192.168.88.255  255.255.255.255     192.168.88.3     192

.168.88.3       1 6        224.0.0.0        224.0.0.0     192.168.88.3     

192.168.88.3       1 7  255.255.255.255  255.255.255.255     192.168.88.3  

        0.0.0.0       1 

通过拔号网络拔入vms68后,用route print得到如下信息: 

Active Routes: 

  Network Address          Netmask  Gateway Address        Interface  Metri

c 1*          0.0.0.0          0.0.0.0    192.168.89.69    192.168.89.69   

    1 2*          0.0.0.0          0.0.0.0   192.168.88.128     192.168.88.

3       2 3        127.0.0.0        255.0.0.0        127.0.0.1        127.0

.0.1       1 4     192.168.88.0    255.255.255.0     192.168.88.3     192.1

68.88.3       2 5     192.168.88.3  255.255.255.255        127.0.0.1       

 127.0.0.1       1 6   192.168.88.255  255.255.255.255     192.168.88.3    

 192.168.88.3       1 7     192.168.89.0    255.255.255.0    192.168.89.69 

   192.168.89.69       1 8    192.168.89.69  255.255.255.255        127.0.0

.1        127.0.0.1       1 9        224.0.0.0        224.0.0.0     192.168

.88.3     192.168.88.3       1 10       224.0.0.0        224.0.0.0    192.1

68.89.69    192.168.89.69       1 11 255.255.255.255  255.255.255.255    19

2.168.89.69    192.168.89.69       1 注意我打*号的地方,从WIN98拔号到LINUX

,WIN98会自动配置路由,从LINUX拔号到WIN98? ? 

WIN98就得手工配置路由,打*号的就是要在LINUX拔号到WIN98时要手工加上的。 

现在TELNET上VMS68执行回拔脚本,连通后用route print得到如下信息: 

Active Routes: 

   Network Address          Netmask  Gateway Address        Interface  Metr

ic 1          0.0.0.0          0.0.0.0   192.168.88.128     192.168.88.3   

    1 2        127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1

       1 3     192.168.88.0    255.255.255.0     192.168.88.3     192.168.8

8.3       1 4     192.168.88.3  255.255.255.255        127.0.0.1        127

.0.0.1       1 5   192.168.88.255  255.255.255.255     192.168.88.3     192

.168.88.3       1 6     192.168.89.0    255.255.255.0    192.168.89.69    1

92.168.89.69       1 7    192.168.89.69  255.255.255.255        127.0.0.1  

      127.0.0.1       1 8        224.0.0.0        224.0.0.0    192.168.89.6

9    192.168.89.69       1 9        224.0.0.0        224.0.0.0     192.168.

88.3     192.168.88.3       1 10 255.255.255.255  255.255.255.255    192.16

8.89.69    192.168.89.69       1 现在可看到跟上面的不同了,要在WIN98的DOS窗

口下执行以下批处理:   route change 0.0.0.0 mask 0.0.0.0 192.168.88.128 met

ric 2   route add 0.0.0.0 mask 0.0.0.0 192.168.89.69 

现在再用route print就会得到如下信息: 



Active Routes: 

   Network Address          Netmask  Gateway Address        Interface  Metr

ic 1          0.0.0.0          0.0.0.0    192.168.89.69    192.168.89.69   

    1 2          0.0.0.0          0.0.0.0   192.168.88.128     192.168.88.3

       2 3        127.0.0.0        255.0.0.0        127.0.0.1        127.0.

0.1       1 4     192.168.88.0    255.255.255.0     192.168.88.3     192.16

8.88.3       1 5     192.168.88.3  255.255.255.255        127.0.0.1        

127.0.0.1       1 6   192.168.88.255  255.255.255.255     192.168.88.3     

192.168.88.3       1 7     192.168.89.0    255.255.255.0    192.168.89.69  

  192.168.89.69       1 8    192.168.89.69  255.255.255.255        127.0.0.

1        127.0.0.1       1 9        224.0.0.0        224.0.0.0     192.168.

88.3     192.168.88.3       1 10       224.0.0.0        224.0.0.0    192.16

8.89.69    192.168.89.69       1 11 255.255.255.255  255.255.255.255    192

.168.89.69    192.168.89.69       1 

现在可TELNET上VMS68,在VMS68上拔号到INTERNET,现在J003可通过VMS68上网了。 

一些不足的地方: 

  一.要手工的地方太多,不大方便,请朋友们再改良一下。 

  二.只能用两个串口,我没有玩过多用户卡,请有经验的朋友指点一下在LINUX下 

      用那种多用户卡最好,在那有卖,多少钱? 

  

请与我联系:jmzjc@990.net 

---------------------------------------------------------------------------

-----

版权所有 (C) 1998 NJLUG

出版于《Linux公报》1998年12月 中文版第二期

---------------------------------------------------------------------------

-----

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:203.762毫秒