1. 程式人生 > >LAN MAC WAN MAC 和 WLAN MAC的關係

LAN MAC WAN MAC 和 WLAN MAC的關係

刷ddwrt後修改MAC地址
先說一下涉及到的幾個地址的含義:
il0macaddr 這個是無線mac地址
et0macaddr 這個是LAN mac地址
et1macaddr 這個是WAN mac地址
lan_hwaddr 這個也是指LAN mac地址
wl_hwaddr 這個也是指無線mac地址
wan_hwaddr 這個也是指WAN mac地址
wl0_hwaddr 這個也是指無線mac地址
moto在ddwrt下mac地址必須遵循一個規律:
lan mac地址
我給一個範例:
00:0C:E5:4B:F2:85 這個地址就可以作為LAN MAC地址
00:0C:E5:4B:F2:86 這個地址就可以作為WAN MAC地址
00:0C:E5:4B:F2:87 這個地址就可以作為無線 MAC地址
下面開始說方法:
1、XP下開啟一個DOS視窗,然後輸入:telnet 192.168.1.1 回車,這裡的192.168.1.1是指你AP的地址,如果更改過,那就用新地址;
2、使用者名稱為root 密碼為admin 如果你改過使用者名稱和密碼,那當然要輸入新的,沒改過,就用上面的;
3、使用者名稱和密碼輸入完成後,複製下面的命令直接貼上到命令視窗內,然後回車,每條命令粘貼後按一下回車,一共9條命令、9次回車,地址你可以自己編,不過需要遵循上面說的規律:
nvram set il0macaddr=00:0C:E5:4B:F2:87
nvram set et0macaddr=00:0C:E5:4B:F2:85
nvram set et1macaddr=00:0C:E5:4B:F2:86
nvram set lan_hwaddr=00:0C:E5:4B:F2:85
nvram set wl_hwaddr=00:0C:E5:4B:F2:87
nvram set wan_hwaddr=00:0C:E5:4B:F2:86
nvram set wl0_hwaddr=00:0C:E5:4B:F2:87
nvram commit(這條命令執行後稍等10秒再執行最後一條命令)
reboot(這個就是重啟路由器,重啟後路由器的地址就會變成上面的地址了)

nvram set il0macaddr=00:00:00:00:00:01
nvram set et0macaddr=00:00:00:00:00:02
nvram set et1macaddr=00:00:00:00:00:03
nvram set lan_hwaddr=00:00:00:00:00:04
nvram set wl_hwaddr=00:00:00:00:00:05
nvram set wan_hwaddr=00:00:00:00:00:06
nvram set wl0_hwaddr=00:00:00:00:00:07
nvram commit
reboot

TELNET命令突破DD-WRT連線數限制(最大埠數)2008-10-29 03:07 A.M.開啟DOS視窗

telnet 192.168.1.1    (此為路由器的IP)
輸入使用者名稱和密碼後執行以下3行
nvram set ip_conntrack_max=4096
nvram commit
reboot

4096是預設最大值,可以修改成任意值,1M的寬頻ADSL取4096差不多。2M建議取值8192

DD-WRT 修改MAC地址

nvram set il0macaddr=00:00:00:00:00:26

nvram set et0macaddr=00:00:00:00:00:25

nvram set et1macaddr=00:00:00:00:00:24

nvram set lan_hwaddr=00:00:00:00:00:23

nvram set wl_hwaddr=00:00:00:00:00:22

nvram set wan_hwaddr=00:00:00:00:00:21

nvram set wl0_hwaddr=00:00:00:00:00:20

nvram commit(這條命令執行後稍等10秒再執行最後一條命令)

reboot(這個就是重啟路由器,重啟後路由器的地址就會變成上面的地址了)

上週在朋友的辦公室遇到一件怪事,有個無線路由器(刷了DD-WRT的),只要一開,整個無線網就沒法用了,後來發現,原來他的這個路由器和主路由 器的MAC地址居然是一樣的,汗~~~由於是在淘寶上同時買的,估計當時淘寶賣家刷路由器 FLASH 的時候,就把所有的路由器刷成一個MAC地址了(山寨貨就是這麼山寨品質,汗~~)。

處 理的辦法很簡單,只要修改掉路由器中的 MAC 地址就可以了,講到這裡先說一個概念,一般來說,無線路由器的整個 Flash 被稱為 wholeflash ,其中除了包含我們常說的韌體(比如 DD-WRT 或者 Tomato)外,還有 cfe 、nvram 、kernel ,而 MAC 地址儲存的位置有 nvram 和 cfe 。但是在 nvram 裡面的 MAC 地址改掉後,只要 RESET 或者恢復出廠設定,就會被自動恢復。其實,nvram 中的 MAC 地址是由 cfe 來生成的,每次 RESET 或恢復出廠設定後,cfe 都會自動生成一份全新 nvram 。所以要一勞永逸的話,只有去修改 cfe 中的 MAC 地址了。

修改 cfe 的方法有兩種,一種是利用 JTAG 線,這需要一定的硬體知識,而且要有專門的 JTAG 線和電腦上的並口配合使用才能完成,比較複雜。還有一種是利用 Telnet 登陸路由器後,用路由器內的 mtd 裝置來完成。在這裡我就說一下第二種方法。

1. 用 Telnet 命令登陸路由器(要注意一點,使用者名稱一定要寫 root,哪怕你自定義過使用者名稱,但在這裡也還是要用 root 才可以)。

2. 輸入:cat /proc/mtd ,一般會返回如下資訊:
dev: size erasesize name
mtd0: 00040000 00010000 "cfe"
mtd1: 003b0000 00010000 "linux"
mtd2: 002bd000 00010000 "rootfs"
mtd3: 00010000 00010000 "nvram"
mtd4: 00010000 00010000 "ddwrt"

從返回的資訊中,我們可以看到 cfe 其實就是放在 mtd0 區內的。

3. 現在我們先把 cfe 備份出來,使用命令:dd if=/dev/mtd/0 of=/tmp/cfe.bin ,一般返回如下資訊:
512+0 records in
512+0 records out

這樣就把路由 FLASH 中的 cfe 備份到了 /tmp/cfe.bin 中去了。

4. 獲取現在路由的 MAC 地址,這個方法有很多種了,你可以訪問一下 http 方式的管理頁,然後把 Lan MAC 記下來(必須是 LAN MAC ,千萬別記成 WAN MAC 或者 WLAN MAC 了),也可以用命令: ifconfig eth0 來獲取(命令中最後一個字元是數字 0 ,別輸入成字母 0 了) 。
假設這裡獲取到的 MAC 地址是 00:03:78:35:91:26 。

5. 用 sed 命令把 cfe 中的 MAC 地址改掉,假設改成 88:00:00:00:00:05,改好後的 cfe 儲存到 cfe.new 檔案中。命令格式如下: sed "s/00:03:78:35:91:26/88:00:00:00:00:05/g" /tmp/cfe.bin > /tmp/cfe.new
由於該命令是沒有回顯的,所以只要執行結束顯示提示符,就可以了。

6. 最後用 mtd 命令把新的 cfe 內容寫回 cfe 。
mtd write /tmp/cfe.new cfe
如果有提示錯誤,可以改用以下2條命令進行:
mtd unlock cfe
mtd write -f /tmp/cfe.new cfe

如果提示資訊是類似下面的這行,就說明更新完畢:
Writing from /tmp/cfe.bin to cfe ... [w]

7. 完成,您可以在 http 方式的管理頁面中,選擇恢復出廠預設設定一下,也可以按路由器背後的 RESET 強制恢復。現在路由器的 MAC 地址已經是新的了。

可 能有人會問,你只改了 LAN MAC 地址,那路由器還有 WAN MAC 和 WLAN MAC 呢,這兩個又怎麼改?其實這兩個根本不用改的,如果開啟 cfe 看的話也可以發現,裡面根本沒有這兩個 MAC 地址,只有 LAN MAC 地址的。那這兩個 MAC 地址怎麼生成呢?其實很簡單,cfe 會自動用 LAN MAC 地址 + 1 和 +2 來自動生成 WAN MAC 和 WLAN MAC 地址的,所以你改掉了 LAN MAC 就可以了。