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