昨天的說到配置CoLinux在Windows下面啟動另一個分區里面的Linux,但是網絡配置只是使用了最簡單的slirp模式。
CoLinux的網絡配置共有3種:
- slirp:最簡單的模式,CoLinux內可通過Windows系統訪問網絡,但外部不能直接訪問Linux,如果需要訪問,需要做端口映射。
- tuntap:在Windows中虛擬一塊網卡,Linux與Windows通過該網卡通訊,Linux不能直接訪問外部網絡,必須在Windows上配置路由和NAT,或者簡單使用Windows的Internet連接共享ICS。
- pcap-bridge:必須有一塊連接網絡的網卡才能使用,另外需要安裝WinPCap軟件。該模式將一塊實際網卡模擬出另一塊網卡并連接到網絡,對外部看來,就好像實際上有兩臺不同機器一樣。
- ndis-bridge:與pcap-bridge模式一樣,不過不使用WinPCap軟件接口而是通過Windows的NDIS接口層模擬網卡。
下面是配置方式:
slirp模式的配置最簡單,在CoLinux的配置里面:
eth0=slirp
就可以了。它的具體參數如下:
ethX=slirp,<MAC>,<redirections>
<MAC>可以用來指定網卡MAC地址,也可以直接留空
<redirections>用來指定端口映射,格式為tcp|upd:hostport:linuxport[:count],將Windows的tcp或者udp的hostport開始的count個端口映射到Linux系統的linuxport開始的count個端口上,如果要添加多個映射,用逗號分隔。如
eth0=slirp,,tcp:2222:22/tcp:4000:80:3
將Windows的端口2222,4000,4001,4002映射到Linux的端口22,80,81,82上。
這個模式比較麻煩,實際上是虛擬了一塊網卡和CoLinux相連,所以,Windows和Linux可以直接連接,但是Linux想要訪問外網,則需要配置網關或者ICS。
配置參數:
ethX=tuntap,<network connection name>,<MAC>
<MAC>是MAC地址,可以不填
<network connection name>是使用Tuntap網卡名字,也可以不填,這樣CoLinux會使用第一塊Tuntap網卡。
但是tuntap網卡是可以安裝多塊的,如果需要指定某塊具體的虛擬網卡,則需要指定這個名字。
正常安裝CoLinux以后,Windows里面會多出來一塊網卡,嗯,名字叫什么忘記了:)
進入Windows網上鄰居屬性界面,查看網絡連接就可以看到這塊網卡。在這里可以對網卡改名,比如我改成了“Tap-colinux”,然后在參數里面指定這個名字就可以使用這塊虛擬網卡。
如果名字里面有空格,則必須使用雙引號"括起來。
- pcap-bridge和ndis-bridge模式
這兩個模式實際上是差不多的,除了pcap需要WinPCap軟件支持以外,事實上應該ndis模式會快一點?(猜的,沒測試過)
這兩個模式是先有的pcap,后來才加上了ndis模式,畢竟不需要額外裝個軟件還是比較容易接受一點的。
具體配置參數:
ethX=pcap-bridge|ndis-bridge,<network connection name>,<MAC>,<promisc|nopromisc>
<network connection name>指定要在哪一塊真實網卡上模擬虛擬網卡,這個名字也就是在Windows網上鄰居屬性界面里,查看網絡連接時看到的名字(在那里也可以改名的),這個名字不能省略,否則網絡跑不起來的。
而且需要注意的是,這塊網卡必須要連通網絡,否則的話,這個兩個模式都不能用。
最后需要注意的是,在一些無線網卡上,這兩個模式無法運作。具體原因好像是網卡只接受發到真實網卡的包,其他包直接不要還是怎么的,總之是不能使。(順便說一句,我的無線網卡就不行,哭啊)
<MAC>還是MAC地址,可省略。
<promisc|nopromisc>指定是否工作在sniffer模式下,如果是promisc模式,則能夠收到不是發到這塊虛擬網卡的網絡包,也就可以使用一些sniffer軟件了。而nopromisc模式則正好相反,不能使用sniffer軟件。
昨天的配置文件里面使用的是slirp模式,并且將2222映射到22端口。
然后我先試了下ndis-bridge模式,可惜的怎么都不行,我的無線網卡恐怕是不能支持這種模式了。
最后還是使用tuntap模式:
eth0=tuntap,,02:00:00:00:00:02
然后,去無線網卡屬性里面,“共享”頁面,打開ICS,指定對Tap-colinux網卡共享網絡,這樣就可以了。
這里沒有說在Linux下面怎么設置網絡,其實就和普通網卡一樣設置就好了。
我沒有做什么特別的設置,Debian起來以后,自己認出網卡,然后dhcp獲得IP,一切就好了。
slirp模式下CoLinux會負責分配ip的,tuntap模式下,ICS也會分配。
如果使用ndis或者pcap模式,它實際上就相當于是另一臺機器上的一塊網卡一樣,家里的無線?路由器自然會負責給它分配IP的。