2006/11/24

有线通同一个Cable Modem下两台机器添加路由之解决方案

有线通,两个实IP,Windows和Vmware里面的linux各一个,为了能在它们之间直接连线而不受cablemodem的1M带宽限制,需要添 加静态路由(同时也适用于非vmware里面的linux,因为vmware里面的linux本来就是局域网的一台linux)

以下转自cableplus官方网站

不 过两台pc共享上网后也有一个问题,那就是两台pc之间的通讯是通过OCN的网络而不是只通过hub直接通讯,这是因为pc设置dhcp后,在获取ip等 网络信息后生成自己的路由表时将到非本地的任何网络的路由设置为OCN网络上的一个网关,所有到其他pc(包括同一个hub下连的pc)的通信都通过 scn网络上的某个网关,故而这两台pc之间的通讯速度是受cable modem的上下行速度限制,尤其cable modem的上行速度比下行慢一倍,故两台pc之间的通讯更为缓慢,而且也会受到OCN网络延时的影响。
解决这个两台pc之间通讯的问题,只要做一个路由设置,在两台pc互相设置永久指向彼此的路由为对方(一般情况下pc获得ip地址不会改变,如果改变可以删除这条路由设置,重新设置新的路由)。
windows 有一个route命令用来显示、人工添加和修改路由表项目的,该命令只有在安装了 TCP/IP 协议后才可以使用。它的使用方法如下:route [-f] [-p] [command ] [mask subnetmask] [metric costmetric],其中:
-f:清除所有网关入口的路由表。如果该参数与某个命令组合使用,路由表将在运行命令前清除。
-p:该参数与 add 命令一起使用时,将使路由在系统引导程序之间持久存在。默认情况下,系统重新启动时不保留路由。与 print 命令一起使用时,显示已注册的持久路由列表。忽略其他所有总是影响相应持久路由的命令。
Command可指定一个命令。Destination可指定发送 command 的计算机。
mask subnetmask:指定与该路由条目关联的子网掩码。如果没有指定,将使用 255.255.255.255。gateway 参数可指定网关。名为Networks的网络数据库文件和名为Hosts 的计算机名数据库文件中均引用全部 destination 或 gateway 使用的符号名称。如果命令是 print 或 delete,目标和网关还可以使用通配符,也可以省略网关参数。
例如,pc 1的获得的ip地址为:100.100.100.100,pc2获得ip的地址为100.100.200.200
则在pc1的命令行下输入:route add -p 100.100.200.200 mask 255.255.255.255 100.100.100.100
则在pc2的命令行下输入:route add -p 100.100.100.100 mask 255.255.255.255 100.100.100.200.200
在两台pc下输入route print:可以看到路由表中将增加一行:
pc1:
Network Destination Netmask Gateway Interface Metric
100.100.200.200 255.255.255.255 100.100.100.100 100.100.100.100 1
pc2:
Network Destination Netmask Gateway Interface Metric
100.100.100.100 255.255.255.255 100.100.200.200 100.100.200.200 1
pc关电重启路由仍然存在。
此路由的删除方法很简单,如:
pc1: route delete 100.100.200.200
pc2: route delete 100.100.100.100

以上方法是在Windows下面的

以下是Linux里面的。

第一步,需要到3322.org给两台机器分别申请两个域名,以方便后面的操作。

具体见www.3322.org的网站帮助,申请到域名,下载到客户端,并且设置其域名在开机后自动更新。

以下操作时候,假设已经有如下前提

Windows机器:winxp.8866.org

linux机器:linux.8866.org

做了下面一个脚本localroute.sh

在开机后自动执行的脚本当中增加localroute.sh add,让它在最后一个执行

平时可以localroute.sh show看一下路由

#!/bin/sh
while [ -z "$WIN_IP" ]; do
WIN_IP=`nslookup winxp.8866.org | sed -n '6p' | awk -F": " '{print $2}'`
LIN_IP=`nslookup linux.8866.org | sed -n '6p' | awk -F": " '{print $2}'`
done
ACTION=$1
case "$1" in
del | add)
route ${ACTION} -host ${WIN_IP} gw ${LIN_IP}
;;
show)
echo "Windows IP:${WIN_IP}"
echo "Linux IP:${LIN_IP}"
route
;;
*)
echo "Usage: $0 {add|del|show}"
exit 1
;;
esac

:

http://www.haloscan.com/tb/wisicn/116437283416413961

0 Comments:

Post a Comment

<< Home