当前位置:Linux教程 - Linux - Linux与Linux之间的互拔

Linux与Linux之间的互拔

一.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 dont ask.)
#
DIALER_SCRIPT=/home/ppp/ppp-on-dialer
#
# Initiate the connection
#
# I put most of the common options on this command. Please, dont
# 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. Dont 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 dont ask.)
#
DIALER_SCRIPT=/home/ppp/ppp-on-dialer
#
# Initiate the connection
#
# I put most of the common options on this command. Please, dont
# 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. Dont 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 dont ask.)
#
DIALER_SCRIPT=/home/ppp/ppp-on-dialer
#
# Initiate the connection
#
# I put most of the common options on this command. Please, dont
# 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. Dont 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 Metric
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.88.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 Metric
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.168.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.168.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
注意我打*号的地方,从WIN98拔号到LINUX,WIN98会自动配置路由,从LINUX拔号到WIN98?
?
WIN98就得手工配置路由,打*号的就是要在LINUX拔号到WIN98时要手工加上的。

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

Active Routes:

Network Address Netmask Gateway Address Interface Metric
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.88.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 192.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.69 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.168.89.69 192.168.89.69 1
现在可看到跟上面的不同了,要在WIN98的DOS窗口下执行以下批处理:
route change 0.0.0.0 mask 0.0.0.0 192.168.88.128 metric 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 Metric
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.168.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.168.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下
用那种多用户卡最好,在那有卖,多少钱