VLAN是網絡交換機的一種技術,可以把不同的電腦劃分在不同的網絡中,使其不能互相通信,以達到提高安全性和網絡性能的目的。要跨越VLAN通信,必須借助路由器或者3層交換模塊。
我市的ADSL網在接入層使用了Cisco的Catalyst6509型三層交換機,在端口上設置了VLAN,把同一ip段的用戶相互隔開。這樣一來,安全性倒是高了,可惜平時打游戲、共享文件都不方便,需要通過其他IP段的朋友中轉。于是突破VLAN成了當務之急。
我所在的段,IP地址為10.145.254.x,網關為10.145.254.1,采用24位的掩碼。因為是同一IP段,所以電腦不會自動通過路由器轉發數據,而妄想通過直接通信的方式聯絡對方電腦。在VLAN環境下,ARP是收不到回應的,因此直接通信也就被禁止了。
要想實現互通,必須強制電腦把數據發給路由器。
大家知道,路由器判定一個數據包是否應該轉發,是以其2層地址和3層地址為依據的。假如該數據包的目標MAC地址不是路由器接口的MAC地址,那么這個包根本不是給路由器的,而是HUB產生的1層廣播包;假如目標MAC地址與路由器接口的MAC地址相同,但目標IP地址并不是路由器接口的IP地址,這個包就應該被路由出去;假如目標MAC地址和IP地址都與路由器接口相匹配,那這個數據包是發給路由器本身的。
電腦在發送數據時,先判定目標和自己是否在同一IP網段。假如在同一網段,則發送ARP請求,查詢對方的MAC地址,然后封包發送;假如不在同一IP網段,則發送數據包,并把包頭中目標MAC地址設置為本子網的路由器接口的MAC地址,而目標IP地址則是最終接收數據的電腦的IP地址的數據包。路由器收到數據以后,就會把它轉發出去。
要強制電腦把本來直接發送的數據發給路由器,可以從ARP協議上下手,也可以從判定是否同一網段的過程下手。
使用ARP的方法如下:
1、使用arp -a命令查看已知的MAC列表。因為目前VLAN里只有網關和本身,所以這里只顯示網關的MAC地址:
Internet Address Physical Address Type
10.145.254.1 00-d0-04-14-af-fc dynamic
2、使用arp -s命令把要與之通信的電腦的IP地址和網關的MAC地址強行捆綁。這樣,這臺電腦就會把發給對方的數據發給路由器。對方的機器也要運行這個命令,不過IP地址要指定為這一臺。比如10.145.254.a和10.145.254.b通信,要在10.145.254.a上運行arp -s 10.145.254.b 00-d0-04-14-af-fc ,而在10.145.254.b上運行arp -s 10.145.254.a 00-d0-04-14-af-fc
經過這樣的設置,電腦還以為自己在直接發送數據,而路由器以為自己收到了需要路由的數據包。這其實是一種ARP欺騙技術。
使用同子網判定的方法如下:
雙方使用route命令,建立一條“主機路由”。所謂主機路由,就是針對一臺電腦而不是一個IP網段的路由項目,其目標掩碼為255.255.255.255。
在10.145.254.a上運行route ADD 10.145.254.b MASK 255.255.255.255 10.145.254.1 ,在10.145.254.b上運行route ADD 10.145.254.a MASK 255.255.255.255 10.145.254.1即可。根據路由的最長匹配原則,電腦在發送數據時會選擇掩碼里1比較多的那一項,也就是主機路由(32位掩碼),而不會認為對方和自己同一子網(24位掩碼)。
使用以上兩種方法,就可以突破VLAN的限制了。除了CS的LAN Gane還不能正常運行(Internet Game正常)以外,其他軟件均運行正常。
新聞熱點
疑難解答