linux下静态路由的问题,请斑竹帮忙!!!

小弟刚学linux,碰到了一个问题。

计算机三台:A B C
A 为linux系统,两块网卡:eth0: 192.168.1.1 255.255.255.0
eth1: 192.168.0.1 255.255.255.0
静态路由
B 为windows98系统,一块网卡:192.168.1.2 255.255.255.0 gateway 192.168.1.1
c 为windows2000系统,一块网卡:192.168.0.2 255.255.255.0 gateway 192.168.0.1

在计算机A上的路由表为:
destination gateway genmask flags metric ref use iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.1 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth1

将 /proc/sys/net/ipv4/ip_forward 改为了1,听说是为了启用IP转发
在计算机A上ping 计算机B 通过,ping 计算机C 通过。
在计算机B上ping 计算机A eth0 通过,ping 计算机A eth1 通过。
在计算机C上ping 计算机A eth0 通过,ping 计算机A eth1 通过。

但是计算机B却ping不通计算机C。请大哥们帮忙。

没人肯说吗?

我再顶!!!

这种子网间通信,并不是想当然那样只要有了网关就会自动ok,有了网关,只能使机器知道可以通向外界,但并不能使机器知道其他子网的存在。子网间路由,所有机器必须被告知所有子网的存在。我可能表述得不清楚,见谅,因为我也倍儿糊涂。
试试如下:
1.在b上:route add 192.168.0.0 mask 255.255.255.0 192.168.1.1
2.在c上:route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
顺便说一句,您所实现的是我一直的梦想,用最少的硬件实现尽可能的复杂,低成本的同时可以反复修习复杂的tcpip。

楼上的,你这是在windows下添加路由的方式,在linux是这样的:
route add -net 192.168.0.0 netmask 255.255.255.0 dev ethX

问题应该是你没有设A为网关方式,也就是ip转发的功能,所以只加路由是没有用的.
命令如下:
echo 1 > /proc/sys/net/ipv4/ip_forward

请版主再看一下我的贴,已经作了这一步.

子网之间的关系不需要子网中工桌站清楚,只要网关路由器清楚就形了,它负哲数据包的路由转发.
还有1.在b上:route add 192.168.0.0 mask 255.255.255.0 192.168.1.1
2.在c上:route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
形不通,要与网关处于同一网段.

我想是不是linux下的配置不对.linux机器不知道把数据向它的默认网关括另一个子网转发.

像panhh版主说,是不是还有别的地方要配置.

要命的是linux没有五笔书入法,我打拼音好吃力.有没有linux五笔书入法下载.

在windows98 windows2000
有路由
network mask gateway
0.0.0.0 0.0.0.0 192.168.1.1

network mask gateway
0.0.0.0 0.0.0.0 192.168.0.1

[quote=“myloveqixopl”]

看来还是我没说清,我一直强调的是不要想当然地认为子网间通信与和外网通信是一码事.比如若a机上网,则b,c目前都能上网,但子网间肯定互相不可见.要不凭什么搞子网划分.

终于下了一个五笔,用了很爽。

也许是我没有说清楚。

如图old所示,以前全是用windows2000做路由,全能上网,能ping 通。
后来如图new所示,windows98不能上网,就是我贴出来的问题。

其中如图3所示,我用cisco的路由器做过试验,如图连接。
在路由器上没有启用如rip之类的动态路由,只设了两条静态路由。
也能全部上网,全部 ping 通。

现在我在 linux 机子上安装squid代理,windows98机子不能上QQ,玩联众
之类的东西,我还是想用路由比较好。
123.jpg
111.jpg

linux的防火墙有没有设置,如redhat的iptables如果设置了FORWARD规则有没有设置。
iptables -L可以看看FORWARD规则

echo 1 > /proc/sys/net/ipv4/ip_forward

这一步是不是真的做对了?

这样我也觉得还是不好啊,你想下啦,就是上面的弟台所示的那么IP不会从复嘛要是这样那么服务器我客户机不服务器的IP都一样啦。

你要是那么喜欢用路由的那你就进个这里看看吧
bbiagent.net/gb/support.htm

我先安装时选择无防火墙。
echo 1 > /proc/sys/net/ipv4/ip_forward
关于这一条也写入了启动文件,启动后用cat察看文件内容为1.

在linux机器上显示路由的结果是什么?
正常的应该是

destination gateway genmask flags metric ref use iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.0.2 0.0.0.0 UG 0 0 0 eth1

也就是你的linux的default网关是192.168.0.2,上外网是从上面的win2000走的。

对的,路由表是这样的。昨天我试改了IP。
linux的默认网关是上面的win2000.
我想是不是linux 的静态路由不支持对私有IP的转发。

疯了,这么基础的路由常识硬是争这么久,不是让别人笑咱玩无盘的.我糊涂,大家也并不更清楚.既然如此,我就说得更混乱些.
首先你知道为什么所有讲tcpip的书里都是把路由和代理分开讲,本来你中有我的为什么不参合到一块混着讲,而是倾向于讲成先lan-lan间路由再内外间代理.
其次网关是什么,默认网关(default gateway)又指什么,是一码事吗?
你随便找台网吧的98,比如其ip为192.168.0.10,通常她的路由表会包含这些:
destination netmask gateway metric
0.0.0.0 0.0.0.0 192.168.0.1 2
192.168.0.0 255.255.255.0 192.168.0.10 1
我写得格式并不严格,但应说清了.
你知道此时如果要向192.168.1.100发送分组,这台98会有什么行为吗?她会认为网络192.168.1.0就在本地!会认为无须经过任何路由,本地广播就可以找到了!!
默认网关?路由?她们再正确有个屁用.我win98根本不通过你发送分组.虽然我明知道连接61.54.84.123,www.sina.com等必须通过metric2默认网关.

是不是有点奇怪,好象我说错了?

还有我奇怪,你的c机在192.168.0.0上,b在192.168.1.0上,怎么会
“b上:route add 192.168.0.0 mask 255.255.255.0 192.168.1.1
在c上:route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
就与网关处于不同网段”?

可你一开始写的和我写的不一样哦!!!
是你写错了,还是你设置就是错的?
如果不说上外网的问题只说这三台机器,那你两台win的机器的网关都可以设成linux的ip(同网段的),
这样98这一台ping2000的时候会发现不是同网段的通讯,就会发向linux,linux如果设了转发ip,没有防火墙的情况下会按它的路由转到相应的网卡发出,2000就会收到.
如果你在linux 上运行tcpdump侦听就可以看到包的信息.

网段内的通讯是广播的,所以路由与它无关,所以你A与B通,A与C通与网关都没有关系统,所以你还要查查你98与2000的设置.

哗,老兄没注意您文章数: 2287呀,巨酷。向你看齐,我准备写些关于bsd的玩意,有兴趣一起烟酒烟酒。

FREEBSD我有个朋友在用,我到现在为止还没试过,下过几张光盘,后来就给网上的安装教程搞晕了