以前在xp系统下使用colinux+winpcap桥接学习linux很是方便,最近换了win7系统,按照以往的办法安装完后设置为winpcap方式联网,因为我是通过路由器上的网,所以winpcap方式可以直接让colinux联网,并且和路由器所在一个网段,我可以躺在床上用平板操作colinux,想法很是不错,但是实际操作中发现,winpcap方式始终无法联网,表现为宿主机WIN7 ping colinux无法ping通,colinux ping网关无法ping通,ping宿主机也无法ping通,更别说外网了,colinux完全无法联网,但是使用tuntap方式却可以和宿主机通讯,但很不方便,只能本机使用。
各种尝试啊,先是换到XP系统下面(我安装的多系统),发现竟然还是无法联网,,用wireshark抓包,完全抓不到colinux的包,以为winpcap版本的问题,换了几个版本还是不行,因为只要用pcap-bridge方式联网,不管桥接的是本地连接网卡还是其他的虚拟网卡都无法联通。后来都打算放弃了,使用原始的slirp方式连外网,使用tuntap连内网,在colinux里绑了三块网卡,三种方式全都加进去,后来无意中把tuntap网卡和本地连接网卡桥接到一块了,在colinux里面ping 8.8.8.8发现竟然可以通了,瞬间想到是不是IP转发的问题,果断把IP转发打开,把tuntap和slirp网卡去掉,只留pcap-bridge网卡,重新启动,终于连上了!
折腾了一下午总算解决了,开启windows的IP Forword。

修改注册表HKLM\SYSTEM\CurrentControlSet\Services\TcpipParameters\IPEnabledRouter=1 开启tcp转发

很无语,以前xp的时候我不知道什么时候已经把IP Forword打开了,所以可以直接使用。

续:今天把IP FORWORD关掉后又试了一下,发现colinux还可以连外网,但却和宿主机无法通讯,只能和局域网内的其他机器通讯,用wireshark抓包看了下,发现是checksum校验的问题,把网卡的checksum校验关掉后就完全正常了。虽然我现在仍然不知道刚开始无法联网的原因,但是只要用桥接的网卡和另外任意的网卡桥接后就完全正常了,不知道是哪的问题,照理说开不开IPFORWORD应该都可以的。