这个问题有人提出来:
http://bbs.chinaunix.net/viewthread.php?tid=817960虚拟主机
今天想在Linux上来实现这个.功能,不过因为没有任何进一步资料,暂时没有成功,想把今后几天的实验陆.续写上来,感兴趣的朋友可以一起来讨论。.
我的理论依据:
1、Lin.ux上开DHCPD,如果客.户端是“DHCP Client”,一切OK,略过不表;--------------彩票
2、如果客户端是任一地址/网关/DNS,.比如: 外汇
PC(192.168.0.100/24,gw:192.168.0.1)-------eth0[.172.16.0.1]-L.inux Box-eth1--.internet.
复制代码
这样,Linux box开any source address的snat,理论上.192.168.0.100就可以被.转换出去,但是问题在于:.
1、192..168.0.100在没有路由的情况下,如何把包发给L.inux Box?<性病>
2、如果第一个问题解决了,.回来的数据包,eth0又如何会在没有路由的情况下,把数据包回传给.PC? 电子
对于问题1:可以在Linux Box eth0上ARP代理.,这样,当PC.想上网,它会询问: 建材
"192.168.0.1的MAC地址是多少"?因为eth0上开了arp 代理,所以会回它一个“1.92.1.68.0.1 的MAC.是eth0's MAC”,这样,在PC机上,应该会有如下项: 杀毒
19.2.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 SNA.T这个数据包是没有问题的,除非限定了.来源IP!!!.
数据包返回后,会把数据包回传给192.168.0.100,这需要Linux上有.一条路由(以.MAC表示目标)或者有一条IP-MAC对应项:.
192.168.0.100 -.- PC'MAC 鲜花
一切都OK了!!!!
Linux Bo.x开了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,也没有配置.I.P地址;.
3、没有配置网关或DNS;
4、如果客户端刚好配的同网段,以上例,配的是172.16.0.2.54,但是GW不是0.1,而是0.2,这样,如果0.2开了机,会同时.有两个主机应答它的.arp 汽车
明天,继续!!!