分類: 樹莓派物聯網

樹莓派 Raspberry Pi 設定無線網路 WiFi AP,打造無線 IP 分享器

這裡介紹如何使用樹莓派架設一個無線網路 AP,讓各種無線網路設備透過樹莓派上網。

樹莓派在插上一張 USB 無線網路卡之後,可以透過無線網路上網,而除了讓樹莓派上網之外,我們也可以使用同樣一張 USB 無線網路卡將樹莓派打造成無線網路基地台(AP,Access Point),當作 IP 分享器使用。

以下是用樹莓派打造無線 IP 分享器所需要準備的設備:

這裡要注意一點,並不是每一張 USB 網路卡都支援 AP 模式,在選擇 USB 網路卡時要先確認一下,有支援 AP 模式的網路卡可以參考 Embedded Linux Wiki

以下是整個安裝與設定過程。

基本 Linux 系統

將樹莓派安裝好基本的 Linux 系統,若是新手建議使用 NOOBS 安裝。

安裝好 Linux 系統之後,將 USB 無線網路卡插上樹莓派。

樹莓派與 USB 無線網路卡

網路設定

這裡我規劃使用樹莓派的有線以太網路(eth0)對外,而 USB 無線網路卡(wlan0)則對內,在開始設定之前請先確認自己的樹莓派基本環境是可以正常上網的(也就是 eth0 要先設定好),接著再調整無線網路卡的網路設定。

首先關閉無線網路卡 wlan0

sudo ifdown wlan0

編輯 /etc/network/interfaces 設定檔:

auto eth0
iface eth0 inet static
  address 192.168.0.200
  network 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  dns-nameservers 192.168.0.1 168.95.192.1 168.95.1.1

auto wlan0
iface wlan0 inet static
  address 192.168.2.1
  netmask 255.255.255.0

這裡需要更改的是 wlan0 的部份,要選定一個新的虛擬網段,並且指定一個固定的 IP 位址。

eth0 的部份就要看自己的環境是怎麼設定,我這裡的 eth0 是設定為靜態的固定 IP 位址,使用 DHCP 動態取得應該也是可以。

啟用無線網路卡 wlan0

sudo ifup wlan0

DHCP 伺服器

樹莓派對內的區域網路(wlan0)中需要一台 DHCP 伺服器來配發上網設備的 IP 位址,這樣才能上內部的設備自動取的 IP 上網。

在樹莓派上安裝 DHCP 伺服器:

sudo apt-get install isc-dhcp-server

編輯 /etc/dhcp/dhcpd.conf 設定檔,將 domain name 的全域設定拿掉:

# option definitions common to all supported networks...
# option domain-name "example.org";
# option domain-name-servers ns1.example.org, ns2.example.org;

設定這個 DHCP 伺服器為官方(authoritative)伺服器:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

設定要給 DHCP 伺服器配發的 IP 網段,這裡的網段要跟上面無線網路卡的網段相同:

subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.10 192.168.2.50;
  option broadcast-address 192.168.2.255;
  option routers 192.168.2.1;
  default-lease-time 600;
  max-lease-time 7200;
  option domain-name "local";
  option domain-name-servers 168.95.192.1, 168.95.1.1;
}

編輯 /etc/default/isc-dhcp-server 設定檔,設定 INTERFACES

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="wlan0"

設定好之後,重新啟動 DHCP 伺服器:

service isc-dhcp-server restart

並檢查是否有錯誤訊息。

Packet Forwarding

封包轉送(packet forwarding)的作用在於將內部 wlan0 區域網路的封包轉送至 eth0,讓內部的設備可以連線至外部網路。

編輯 /etc/sysctl.conf 設定檔,設定 packet forwarding:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

若要讓 packet forwarding 馬上生效,可以執行:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

設定 NAT:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

查看 iptables 的設定:

sudo iptables -t nat -S
sudo iptables -S

接著要讓 NAT 的設定可以在每次開機都自動設定,我們將 iptables 的設定儲存在 /etc/iptables.ipv4.nat 中:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

編輯 /etc/network/interfaces,加入:

up iptables-restore < /etc/iptables.ipv4.nat

這樣在網路啟動時就會自動設定 NAT。

Page: 1 2

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

1 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

2 年 ago