返回信息流[要求]:
pc1能够ping通pc3(即ping 192.168.1.106通);pc3也能够ping通pc(即ping 192.168.1.104通)
[描述]:
1. 两个开发板分有线和无线部分,两个开发板的无线部分都是跑的ethernet convert模式;
2. 开发板1的有线部分的ip是:192.168.1.21,无线部分的ip是:192.168.200.21;开发板2的有线部分的ip 是:192.168.1.8,无线部分的ip是:192.168.200.8;开发板1下挂pc1的ip地址是: 192.168.1.104(静态ip,网关设为192.168.1.21,连接开发板1的有线部分);开发板2下挂pc3的ip地址是: 192.168.1.106((静态ip,网关设为192.168.1.8,连接开发板2的有线部分)
3. 现在两块开发板的无线部分能够互相ping通,即开发板1: ping 192.168.200.8能通,开发板2: ping 192.168.200.21也能通;pc1能够ping通开发板2的无线部分(即在pc1下ping 192.168.200.8能通);pc3能够ping通开发板1的无线部分(即在pc3下ping 192.168.200.21能通);
4. 但是,开发板1ping不同开发板2的有线部分(ping 192.168.1.8);反过来开发板2也ping不通开发板1的有线部分(ping 192.168.1.21);pc1 ping不通开发板2的有线部分(ping 192.168.1.8); pc3 ping不通开发板1的有线部分(ping 192.168.1.21);当然pc1和pc3互相都ping不通
5.brctl addif br0 ra1后,两个开发板的有线部分可以互相ping通了。但是此时开发板1还是ping不同pc3,反过来开发板2也ping不同pc1,看了此时的路由信息和brctl show的信息
---------------------------------------
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 0.0.0.0 255.255.255.255 UH 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.201.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
---------------------------------------
#brctl show 的命令显示如下:
---------------------------------------
bridge name bridge id STP enabled interfaces
br0 8000.000e8e208235 no eth2
ra1
---------------------------------------
6. 怀疑路由192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
有问题,开发板1里增加路由route add -net 192.168.1.106 netmask 255.255.255.255 gw 192.168.200.21 dev ra1,开发板1ping 192.168.1.106(pc3)还是不同
7. 补充:尝试两块开发板用网线直接连起来,PC1和PC3可以互相ping通。
各位能否帮忙分析下,或者给点建议,麻烦了!
ps:这个问题搞了好久了,最近一直被它绊着了,在网络技术版问过了,没有得到解决。
[接近要求的解决方法]:
两块开发板的路由一样,如下:
---------------------------------------
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 0.0.0.0 255.255.255.255 UH 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.201.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
---------------------------------------
pc1的路由表如下:
---------------------------------------
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 192.168.1.21 255.255.255.0 UG 0 0 0 eth0
default 192.168.1.21 0.0.0.0 UG 0 0 0 eth0
---------------------------------------
注:192.168.200.0这条路由和默认网关是我自己加的
pc3的路由表如下:
---------------------------------------
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 192.168.1.8 255.255.255.0 UG 0 0 0 eth0
default 192.168.1.8 0.0.0.0 UG 0 0 0 eth0
---------------------------------------
注:192.168.200.0这条路由和默认网关是我自己加的
[总结]:虽然之前对通信的知识和一些基本概念都不知道,但是在试图解决问题的过程中,还是收获颇多,主要有以下几点:
1. 会看路由表(说起来惭愧,之前不知道怎么看路由表),会修改路由;
2. 掌握linux下如何划分子网;(有个ppt,见linux划分子网的方法.ppt,19楼)
3. 由这个问题引发,看了《计算机网络》这本书,通过网络理解很多通信的基本概念;
4. 通过在论坛上求助,大家给了很多非常好的思路,在这里谢谢了!但是呢,不要因此就产生依赖性,问题的最终解决还是要靠自己,其实很简单,就是授人以鱼和授人以渔的道理。因为只有自己在解决了问题后,以后类似的问题才知道如何解决,有一套自己的方法论,而且在试图解决的过程中还有其他意想不到的收获。
[遗留的问题]:
1. 软件的本身br0的实现有问题,因为无线部分ra1桥接到br0后,有网线相连的网口的指示灯不停的闪烁;
2. 即使删掉无线部分的路由,ping对方AP的无线部分也可以通;
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #7168同步于 2009/12/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
[算是已解决吧+总结]两个ap下挂pc如何互相连同(下挂PC在同一网
michealyao
2009/12/28镜像同步21 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你的这个命令“brctl addif br0 ra1”是将br0和ra1桥接起来是吗?
试试设置gateway?把PC1和PC2的默认网关都设置为AP1的IP
记得我们实验室有人也弄过类似的,不过都是有线连接
你的这个命令“brctl addif br0 ra1”是将br0和ra1桥接起来是吗?
是的
试试设置gateway?把PC1和PC2的默认网关都设置为AP1的IP
试过了,不可以,现在主要问题要是开发板不能ping通另一块开发板下的PC,要是可以的话差不多就成功了
记得我们实验室有人也弄过类似的,不过都是有线连接
有线的,我试过了,不用改任何配置,完全可以
会不会是这样,ping走的是icmp协议,我怀疑是只有去的路没有回来的路:
比如说:我在开发板1(192.168.1.21)ping 192.168.1.106,数据包是能到106这个pc的,只是回不去。
xp下或者linux下有没有办法或者工具可以看ping 某个ip,到底走到哪里了。
【 在 hobby 的大作中提到: 】
: 你的这个命令“brctl addif br0 ra1”是将br0和ra1桥接起来是吗?
: 试试设置gateway?把PC1和PC2的默认网关都设置为AP1的IP
: 记得我们实验室有人也弄过类似的,不过都是有线连接
【 在 michealyao 的大作中提到: 】
: 会不会是这样,ping走的是icmp协议,我怀疑是只有去的路没有回来的路:
: 比如说:我在开发板1(192.168.1.21)ping 192.168.1.106,数据包是能到106这个pc的,只是回不去。
: xp下或者linux下有没有办法或者工具可以看ping 某个ip,到底走到哪里了。
: ...................
AP1 或者AP2就是开发板吧?
PC1、PC2和AP1有线连接是通过hub或者交换机吧?
建议有线网段用etheral抓包
无线网段用wireshark抓包
同时在PC1用tracert或者traceroute之类的命令跟踪路由,看看包通过有线发送到AP1后数据包的流向
AP1 或者AP2就是开发板吧?
是的
PC1、PC2和AP1有线连接是通过hub或者交换机吧?
不是呢,每个开发板有5个ethernet口,有线部分可以看成一个路由器的
建议有线网段用etheral抓包
好的
两块开发板的路由一样,如下:
---------------------------------------
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 0.0.0.0 255.255.255.255 UH 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.201.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ra1
---------------------------------------
pc1的路由表如下:
---------------------------------------
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 192.168.1.21 255.255.255.0 UG 0 0 0 eth0
default 192.168.1.21 0.0.0.0 UG 0 0 0 eth0
---------------------------------------
注:192.168.200.0和默认网关是我自己加的
pc3的路由表如下:
---------------------------------------
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 192.168.1.8 255.255.255.0 UG 0 0 0 eth0
default 192.168.1.8 0.0.0.0 UG 0 0 0 eth0
---------------------------------------
注:192.168.200.0和默认网关是我自己加的
【 在 ssailing 的大作中提到: 】
: 另外
: netstat -r 把每个开发板及PCx上的路由表贴上来看看
如果是pc的话,可以抓包
常用的抓包软件有sniffer和wireshark,开发板的话,大概是没工具看了
不过你如果愿意折腾的话,可以写个raw socket的程序专收icmp的包嘛~
【 在 michealyao (吾爱雨寒) 的大作中提到: 】
: 会不会是这样,ping走的是icmp协议,我怀疑是只有去的路没有回来的路:
: 比如说:我在开发板1(192.168.1.21)ping 192.168.1.106,数据包是能到106这个pc的,只是回不去。
: xp下或者linux下有没有办法或者工具可以看ping 某个ip,到底走到哪里了。
: ...................