インターネットにつながっている無線LANルーターから,ちょっと離れている電波が届きにくい所があるので,ラズパイZeroで無線LANのレピーターをやってみた。
無線LAN内蔵のZero Wじゃないので,USBハブでUSB無線LANアダプターを2個接続している。
また,有線から無線LANのNATもやってみたので,USBイーサーネットアダプターもUSBハブに接続している。
(実際はbridgeではなく,無線→無線又は有線→無線のNAT)



USB無線LANアダプターは,Buffalo WLI-UC-GN とRalink RT2870/RT3070ワイヤレスアダプター。
USBイーサーネットアダプターはELECOM EDC-GUA3-B。
写真にはないが,実際にはパソコンをUSBシリアルコンバーターでラズパイZeroに接続して,コンソールで操作した。ラズパイZeroのsshdを有効にしてssh接続でもいい。


Raspbian Buster lite を起動して raspi-config のWiFIで SSID とパスフレーズを入力。無線LANにラズパイZeroを接続しておく。



apt update && apt –y upgrade



無線AP機能のhostapdとDNS/DHCPサーバ機能のdnsmasq をインストール



apt –y install hostapd dnsmasq



wlan0 がラズパイZeroのAPで固定IP,wlan1は無線LANルーターにWPA2で接続するので動的IP。


/etc/dhcpcd.conf
(追記)



interface wlan0
static ip_address=192.168.2.254/24
static routers=192.168.2.0



/etc/dnsmasq.conf
(追記)



interface=wlan0
dhcp-range=192.168.2.50,192.168.2.150,255.255.255.0,12h



/etc/hostapd/hostapd.conf
(新規作成ファイル)



interface=wlan0
driver=nl80211
ssid=pizero
hw_mode=g
channel=6
country_code=JP
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=fujiko3210
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP



/etc/default/hostapd



DAEMON_CONF="/etc/hostapd/hostapd.conf"



hostapdの自動起動



systemctl unmask hostapd
systemctl enable hostapd



iptablesの実行(コマンド入力)



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



iptables –L で確認。間違えたら iptables –F で全削除。


iptables をファイルにセーブ



iptables-save > /etc/iptables.ipv4.nat



/etc/rc.local の exit 0 の前にiptables をリストアするコマンドを追加



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



/etc/sysctl.conf
(# Uncomment the next line to enable packet forwarding for IPv4の次の行をコメントアウト)



net.ipv4.ip_forward=1



リブート! ラズパイZeroが無線AP(SSID: pizero)になるので,pizeroに接続すればインターネットにつながる。USBハブがボトルネックなのか,無線の干渉なのか分かってないが,speedtestでは遅い。



apt install speedtest-cli
speedtest-cli



次は,USB無線LANアダプタの1つを取り外して,一方をUSBイーサネットアダプターにしてみたら,こちらの方は速かった。無線はwlan0,有線はeth0。


hostpadを停止する(使わない)。



systemctl stop hostapd
systemctl disable hostapd



/etc/dhcpcd.conf



interface eth0
static ip_address=192.168.2.254/24
static routers=192.168.2.0



/etc/dnsmasq.conf



interface=eth0
dhcp-range=192.168.2.50,192.168.2.150,255.255.255.0,12h



iptablesの実行



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



iptables のセーブファイルを書き換え。



iptables-save > /etc/iptables.ipv4.nat



/etc/rc.local の exit 0 の前にiptables をリストアするコマンドを追加



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



/etc/sysctl.conf
(# Uncomment the next line to enable packet forwarding for IPv4の次の行をコメントアウト)



net.ipv4.ip_forward=1



リブート! ラズパイZeroのUSBイーサーアダプターにLANケーブル(クロス)で接続すればインターネットにつながる。   無線→有線の方は遅くない。