免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12489 | 回复: 17
打印 上一主题 下一主题

[网络管理] 网络的即插即用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-23 21:07 |只看该作者 |倒序浏览
这个问题有人提出来:
http://bbs.chinaunix.net/viewthread.php?tid=817960

今天想在Linux上来实现这个功能,不过因为没有任何进一步资料,暂时没有成功,想把今后几天的实验陆续写上来,感兴趣的朋友可以一起来讨论。

我的理论依据:
1、Linux上开DHCPD,如果客户端是“DHCP Client”,一切OK,略过不表;
2、如果客户端是任一地址/网关/DNS,比如:

  1. PC(192.168.0.100/24,gw:192.168.0.1)-------eth0[172.16.0.1]-Linux  Box-eth1--internet
复制代码


这样,Linux box开any source address的snat,理论上192.168.0.100就可以被转换出去,但是问题在于:
1、192.168.0.100在没有路由的情况下,如何把包发给Linux Box?
2、如果第一个问题解决了,回来的数据包,eth0又如何会在没有路由的情况下,把数据包回传给PC?

对于问题1:可以在Linux Box eth0上ARP代理,这样,当PC想上网,它会询问:
"192.168.0.1的MAC地址是多少"?因为eth0上开了arp 代理,所以会回它一个“192.168.0.1 的MAC是eth0's MAC”,这样,在PC机上,应该会有如下项:
192.168.0.1 -- eth0's MAC,
所以,PC发送的CU的HTTP数据包大致如下:
eth0's MAC | PC's MAC | 0x0800 | CU'IP | 192.168.0.100 | TCP |……
Linux Box SNAT这个数据包是没有问题的,除非限定了来源IP!!!

数据包返回后,会把数据包回传给192.168.0.100,这需要Linux上有一条路由(以MAC表示目标)或者有一条IP-MAC对应项:
192.168.0.100 -- PC'MAC
一切都OK了!!!!

Linux Box开了arp 代理会自动生成这一项么??平时没有注意,管它的,试了再说。
[空想理论就到此结束]
——————————————————————————————————————

做实验吧,结果一开始就失败了:
我先开了eth0的arp代理,再来改自己的IP地址,但是由于改了地址,Windows主机发送了一个免费ARP请求,“192.168.0.100的MAC是多少?”本来平时是用来检测地址冲突的,可惜因为我开了ARP代理,eth0回给我一下“192.168.0.100的MAC是eth0's MAC”,所以,我就“地址冲突”了!!

失败!不过至少证明我的想法初步可以实现,我们假设用户是“事先改了IP地址,再接入局域网”的,明天继续做实验!!!

————————————————————————————————————————
我不知我的想法最终能实现不,不过,即使实现了,也有如下问题:
1、今天实验中的免费ARP请求的地址冲突问题;
2、客户端如果即非dhcp client,也没有配置IP地址;
3、没有配置网关或DNS;
4、如果客户端刚好配的同网段,以上例,配的是172.16.0.254,但是GW不是0.1,而是0.2,这样,如果0.2开了机,会同时有两个主机应答它的arp

明天,继续!!!

论坛徽章:
0
2 [报告]
发表于 2006-09-24 18:23 |只看该作者
顶一下搂主。我也关注这个呢。期待下一步。

论坛徽章:
0
3 [报告]
发表于 2006-09-26 10:25 |只看该作者

关注~~~

以前也有类似的想法

论坛徽章:
0
4 [报告]
发表于 2006-09-26 10:36 |只看该作者
原帖由 glider126 于 2006-9-26 10:25 发表
以前也有类似的想法

现在做另一件事,空了会继续做测试,继续贴的!

论坛徽章:
0
5 [报告]
发表于 2006-09-26 10:42 |只看该作者
关注一下,有意思,

论坛徽章:
0
6 [报告]
发表于 2006-09-26 12:59 |只看该作者
确实有点安逸哦。。。
我也来关注一哈。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
7 [报告]
发表于 2006-09-27 00:25 |只看该作者
留个名.继续关注.
楼主加油.

论坛徽章:
0
8 [报告]
发表于 2006-09-27 13:46 |只看该作者
九剑兄很有想法啊.我也来看看

论坛徽章:
0
9 [报告]
发表于 2006-09-27 15:11 |只看该作者
这个问题,我的老师已经解决了。他是通过ARP编程,来控制PC和我们的网关的查询和应答的。

论坛徽章:
0
10 [报告]
发表于 2006-09-28 17:45 |只看该作者
原帖由 cnhero 于 2006-9-27 15:11 发表
这个问题,我的老师已经解决了。他是通过ARP编程,来控制PC和我们的网关的查询和应答的。


我想先做实验,如果不行的话,再来自己构造ARP的请求和应答。

继续实现先:
这一次把地址改好了再接线……

直接ping Linux的网关,测试结果如下:
1、本机arp中有,有自己的网关的MAC,就是Linux的eth0的MAC,应该是proxy_arp生效了;
2、Linux中APP表有PC机的MAC-ip项;
3、地址转换中有数据;
4、在Linux eth1上发包,可以看到Linux外口地址与Linux网关的ICMP应答,说明PC机上的ping包,已经越过Linux的地址转换,到达Linux的网关,而且网关也应答的PC机的ICMP请求;
5、PC机上没有收到网关的应答包

结论:
回来的包应该是被Linux Box给丢弃了,为什么呢?初步估计是因为Linux主机上,没有到PC机的路由!!!

欢迎大家讨论跟贴,明天继续来做测试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP