這裡介紹如何使用樹莓派架設一個無線網路 AP,讓各種無線網路設備透過樹莓派上網。
樹莓派在插上一張 USB 無線網路卡之後,可以透過無線網路上網,而除了讓樹莓派上網之外,我們也可以使用同樣一張 USB 無線網路卡將樹莓派打造成無線網路基地台(AP,Access Point),當作 IP 分享器使用。
以下是用樹莓派打造無線 IP 分享器所需要準備的設備:
以下是整個安裝與設定過程。
將樹莓派安裝好基本的 Linux 系統,若是新手建議使用 NOOBS 安裝。
安裝好 Linux 系統之後,將 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
樹莓派對內的區域網路(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)的作用在於將內部 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