1. 程式人生 > >[How To]在Linux下設定無線網路橋接

[How To]在Linux下設定無線網路橋接

很多同學在說Linux下配置網路橋接不如Windows方便,如果要共享網路連結很麻煩。其實如果各位能到牆外查檢視,很多部落格都介紹瞭如何在Linux下做網路橋接的姿勢和動作要領。這裡為大家介紹一下。如果你遇到如下問題,這篇文章可以幫助你搞定。
* 對如何在Linux下進行橋接完全沒有概念
* 在執行橋接命令時出現cant add wlan0 to bridge br0: Operation not supported。這是由於您的無線網絡卡沒有處於AP模式。處於Managed模式的無線網絡卡無法進行橋接(不要掙扎了,Managed模式下的網絡卡沒有足夠多的資訊做橋接,這是802.11規定的)。只要按如下所述使用hostapd即可解決問題
* 在執行iwconfig wlan0 mode Master

時出現錯誤

Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument.

這說明您的網絡卡不支援硬體Master模式,您同樣可以使用hostapd實現軟Master模式解決問題。
* 正確設定之後主機無法訪問網際網路。您可能需要刷新系統原有的路由表,並在br0上,而不是eth0上啟動dhcpcd(dhclient)

核心和核心支援

使用bridge功能需要核心支援,大多數預編譯核心(如Fedora, Ubuntu等發行版預設安裝的核心)都內建了bridge支援。在自編譯核心中,你需要啟用Networking support --> Networking options --> 802.1d Ethernet Bridging。如果編譯為模組,可以通過modprobe bridge

將其載入。核心編譯的知識和姿勢請自行Google。

設定hostapd

我知道有大神可以開啟原生的AP(Master)模式。但是不管您是否能通過iwconfig開啟AP模式,我都建議使用hostapd設定。安裝hostapd的方法請自行Google。大多數發行版可以使用軟體包管理器安裝。
要設定一個簡單的AP需要配置設定檔案,以及啟動hostapd程式。大多數操作都需要在root使用者下操作。
在你認為合適的地方建立內容如下所述,檔名不那麼重要的檔案_

interface=wlan0
driver=nl80211
ssid=MyAP
channel=1

這個檔案使埠wlan0工作在1通道下,建立一個ssid為MyAP的熱點。預設不啟用加密。若需設定加密,或需要更多資訊,請參考

這裡
使用命令sudo hostapd /path/to/config/file啟動hostapd,注意需要提供絕對路徑。

建立設定網路橋接

網路橋接的配置需要使用brctl命令,在Gentoo下通過`sudo emerge -av bridge-utils安裝。下面這段命令用於建立一個名叫br0的網橋。並把 wlan0 和 eth0 加入網橋

ifconfig eth0 up
ifconfig wlan0 up
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 wlan0
ifconfig br0 up

如果沒有返回錯誤,橋接就已經成功了。

新的路由項

需要注意的是,在完成橋接設定後,你需要重新設定路由表,使得default指向br0而不是eth0。要做到這一點,最方便的做法(如果你在一個使用dhcp的網路環境下)是使用dhcpcd -k eth0 && dhcpcd br0來重新設定路由。如果沒有DHCP,那您需要手動刪除eth0上繫結的IP地址,並在br0上進行設定,最後更改相應的路由表項。我假設如果您會手動配置網路,一定知道我在說什麼_*。如果您想更方便的設定,wicd中可以在preference中將wired interface改為br0,然後使用wicd進行配置。如果您這麼做,在網橋消失之後(比如重啟計算機之後)您需要將剛才的設定改回eth0。