# 樹莓派4-Wifi基地台(RaspberryPi4 Wifi AP) 目的:使用樹莓派將實體乙太網路打造成Wifi AP分享器 作業系統:Raspberry Pi OS (32-bit) March 4th 2021 說明: 由於樹莓派4內建 Wifi 及 1Gbps 的實體網路, 使用者可視需求擇一連網。本文的目的, 在藉由 Wifi 延伸實體網路訊號, 以作為基地台分享給手機/平板或筆電使用。 作法: 進行系統更新 ``` sudo apt-get update sudo apt-get upgrade -y ``` 安裝套件 hostapd 為無線 AP 服務, isc-dhcp-server 為 DHCP 服務 ``` sudo apt-get install hostapd sudo apt-get install isc-dhcp-server ``` # 設定IP 實體網路自動取得IP即可, 無線網卡需設固定IP。編輯/etc/dhcpcd.conf ``` sudo nano /etc/dhcpcd.conf ``` 在最後面加上 ``` interface wlan0 static ip_address=192.168.10.1/24 nohook wpa_supplicant ``` 重啟 dhcpcd 服務 ``` sudo systemctl restart dhcpcd ``` 此時應可看到wifi網卡已設好固定IP ``` #ifconfig 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether dc:a6:32:0d:fe:73 brd ff:ff:ff:ff:ff:ff inet 192.168.60.222/24 brd 192.168.60.255 scope global dynamic noprefixroute eth0 valid_lft 82961sec preferred_lft 72161sec inet6 fe80::96a6:d534:f366:e8ae/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether dc:a6:32:0d:fe:74 brd ff:ff:ff:ff:ff:ff inet 192.168.10.1/24 brd 192.168.10.255 scope global noprefixroute wlan0 valid_lft forever preferred_lft forever inet6 fe80::47fa:89d9:fed7:c66c/64 scope link valid_lft forever preferred_lft forever ``` # 啟用基地台功能 接下來設定WiFi基地台(/etc/hostapd/hostapd.conf) ``` sudo nano /etc/hostapd/hostapd.conf ``` 加上以下內容 ``` country_code=TW interface=wlan0 driver=nl80211 ssid=Rpi-ap hw_mode=g channel=7 ieee80211n=1 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=abcdefg123 rsn_pairwise=CCMP ``` 大致上都可以照抄, 其中 ssid 為基地台名稱, wpa_passphrase 為連線密碼, country_code 為 wifi 國碼。 設定完成後,還需要告訴樹莓派開機要去哪裡讀取我們的設定。 ``` sudo nano /etc/default/hostapd ``` 加上 ``` DAEMON_CONF="/etc/hostapd/hostapd.conf" ``` 到這邊WiFi基地台已經設定好了, 解除封鎖並設為自動啟動 ``` sudo systemctl unmask hostapd sudo systemctl enable hostapd ``` 接下來, 連上的無線設備必需派發IP給它, 所以要設定 DHCP 服務, 本文這裡介紹的是 isc-dhcp-server。 # 設定DHCP SERVER 派送IP 編輯 /etc/dhcp/dhcpd.conf 設定檔 ``` sudo nano /etc/dhcp/dhcpd.conf ``` 在最後面加上 ``` authoritative; log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.50; option broadcast-address 192.168.10.255; option routers 192.168.10.1; default-lease-time 600; max-lease-time 7200; option domain-name "Rpi-ap"; option domain-name-servers 8.8.8.8, 168.95.1.1; } ``` 編輯 /etc/default/isc-dhcp-server, 將 INTERFACESv4 改為 wlan0, 表示要發放的 IP 需透過 wlan0(無線)介面連線。 ``` INTERFACESv4="wlan0" ``` # 設定分享器封包轉送(NAT)功能 編輯 /etc/sysctl.conf ``` sudo nano /etc/sysctl.conf ``` 在最後面加上 ``` net.ipv4.ip_forward=1 ``` 設定 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 ``` 接著要讓 NAT 的設定可以在每次開機都自動設定,我們將 iptables 的設定儲存在 /etc/iptables.ipv4.nat 中 ``` sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" ``` 開機自動執行 連接內部wifi網路(wlan0)和外部網路(eth0)的橋接器(樹莓派)