在外租房子時,寬頻網路可說是基本的設施,許多房東也提供了 IP 分享器。然而並非所有的房東都提供無線網路基地台(AP),對於手機或平版電腦來說相當不便。
若這時候有一台同時俱備線網路與無線網路的電腦,就可以籍由橋接器的方式,架設一個連接有線網路的 AP。這篇文章將介紹如何在 Linux 下設定這樣的 wireless 橋接器。
橋接器
所謂橋接器是在連結層(Link Layer)上連接兩個網路的裝置。有別於路由器(Router),橋接器只是直接轉送兩邊的封包,亦即把兩個網路的集合視為一個更大的區域網路,因此一些主要用在區域網路的服務--比如說網路芳鄰,不需修改設定就可以分享到另一個網路上。當然橋接器能連結的網路大小是有上限的,不過對於家用網路來說已是綽綽有餘。
需要注意的是,如果你想要用橋接器把有線網路上的裝置連上無線 AP,通常會遇到一些麻煩,因為大部份的無線 AP 會過濾 MAC address 以拒絕未認證的裝置,而有線網路上的裝置並未直接連上 AP,因此它們的封包會被 AP 無視。若想透過這種方式橋接,請參考 Debian Wiki 上的 Bridging Network Connections 中,關於 etables 的設定。
前置工作
Kernel
首先,你的 kernel 要打開橋接功能,這個功能位於 Networking → 802.1d Ethernet Bridging。大部份 Linux distribution 所附的 kernel 應該都有打開這項功能。
軟體
接著我們要安裝橋接器設定工具 bridge-utils,在 Debian 上可以透過 apt 安裝:
|
|
我們的目的是把無線網路橋接上有線網路,並利用有線網路與外部連接。這種情況下橋接器同時身兼無線 AP,因此也要安裝 AP server。
|
|
設定
設定橋接介面
首先我們要建立一個橋接器介面,這是虛擬出來的網路卡介面:
|
|
連結有線網路與無線網路的方法很簡單:把要連結的網路卡介面加進橋接器介面即可。
|
|
通常呢,這時候你會看到「Operation not supported」的錯誤訊息,因為 Linux kernel 不允許無線網路以 managed mode 進行橋接。但我們等下就會設定 hostapd 讓無線網路進入 master mode,因此這個錯誤暫時無視即可。
設定 hostapd
Hostapd 的設定檔通常是 /etc/hostapd/hostapd.conf
,安裝時會附上一個相當完整的設定檔,用那個來稍作修改即可。
需要修改的是下列幾個選項:
interface
:作為 AP 的無線網路的介面。bridge
:要加入的橋接器介面。driver
:無線網路的驅動程式種類。並非所有的無線網路卡在 Linux 下都能當 AP 使用,這還需要驅動程式支援才行。至於這個欄位要填什麼值就得去看無線網路卡種類,反正能填的選項不多,每個都試試就行了。ssid
:AP 的名稱hw_mode
:無線網路的模式,可選 a/b/gchannel
:無線網路的頻道,儘量不要和附近的衝突。wpa
:啟用 WPA 加密傳輸,設為 3 即可支援 WPA 與 WPA2。wpa_passphrase
:連接 AP 的密碼,至少要八位英文或數字。你也可以用wpa_psk
設定編碼後的密碼,但要注意若更改 ssid,編碼後的密碼也會跟著改變。
其它選項就讓它保持預設值,就可以啟動 hostapd 了。
|
|
Hostapd 會自動把無線網路介面加到你所指定的橋接介面中,你可以用 brctl
來確認:
|
|
開機自動設定
若每次重開機都要重新執行上面的指令,肯定會得關節炎。我們可以把橋接介面的設定寫在網路設定檔中,在 Debian 上位於 /etc/network/interfaces
:
|
|
這幾行的意思是開機時要自動啟用 eth0 與 wlan0,但不設定其 IP,而是把它們加入 br0 這個橋接介面,然後針對橋接介面設定 IP。
另外也得修改 /etc/default/hostapd
並消去註解,這樣開機時才會自動啟動 hostapd。