| tags:raspberry pi buster categories:server
アクセスポイント
ルーターにイーサーネットで繋げたDebianの64bit対応・Busterのラズベリー・パイ3Bにアクセスポイントをインストールをしました。プロキシー(とTorも)・サーバーを入れて串刺しにするかちょっと考えてます。
アクセス・ポイント化する為に必要なソフトは以下の二つ+最後の方でもう一つ(任意)です。aptでインストールします。
pi@cashu:~ $ sudo apt install hostapd dnsmasq
wlan0設定
無線LANの設定します。まずは、ドライバーなどしっかり認識されているかチェック。(ちょっと心配だった。)
pi@cashu:~ $ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
docker0 no wireless extensions.
root@iska:~$
認識はされているようなので、設定をします。wlan0
のファイルを追加して編集します。
pi@cashu:~ $ sudo vi /etc/network/interfaces.d/wlan0
基本的なIPアドレスの割り当ての設定ですが、一点だけ違いがあります。 hostapdは起動時に立ち上げられますが、自分の環境ではwlan0の認識がその後になってしまっているようです。 wlan0が起動された後にもう一度、hostapd起動します(※注意)。ここの部分にたどり着くまで、かなり時間がかかりましたよ。。。
auto wlan0
iface wlan0 inet static
post-up /usr/sbin/hostapd -B /etc/hostapd/hostapd.conf # <<-- ※注意
address 10.0.0.10
netmask 255.255.255.0
hostapdの設定
お次はアクセス・ポイントを設定します。この部分は
vi /etc/hostapd/hostapd.conf
で新規ファイルを作って下記を書き込みます。最近の3B+では80211a、5Ghzも使えるので、そちらを使う場合は少し変更が必要です。以下の設定は11g.2.4Ghzバージョンです。オリジナルの設定ファイルはかなりボリュームがあります。
# This is the name of the WiFi interface we configured above
interface=wlan0
driver=nl80211
# Use the 2.4GHz band
hw_mode=g
channel=6
# Enable 802.11n
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Accept all MAC addresses
macaddr_acl=0
# Use WPA authentication
auth_algs=1
# Require clients to know the network name
ignore_broadcast_ssid=0
# WPA + Access Point
wpa=2
wpa_key_mgmt=WPA-PSK
ssid=rpi3b
wpa_passphrase=raspberry
# Use AES, instead of TKIP
rsn_pairwise=CCMP
保存して閉じます。SSIDやwpa_passphrase(パスワード)は環境に合わせて編集してください。そして、プロセスの設定を行います。
pi@cashu:~ $ sudo vi /etc/default/hostapd
読み込む設定ファイルを指定します。コメントを外して読み取り先を書き込みます。
DAEMON_CONF="/etc/hostapd/hostapd.conf"
で、動作確認をします。エラーがあればその内容が表示されると思います。問題なく起動したので、Ctl+cでシェルに戻ります。
pi@cashu:~ $ sudo hostapd -d /etc/hostapd/hostapd.conf
起動時に動くようにします。
pi@cashu:~ $ sudo systemctl enable hostapd
ここで、ちょっと難が出ますが、結果オーライというか、起動時に立ち上げないでもいいような気もしますが、、、動いているので不問にします。
pi@cashu:~ $ sudo systemctl status hostapd
● hostapd.service
Loaded: masked (Reason: Unit hostapd.service is masked.)
Active: inactive (dead)
root@iska:~#
dnsmasq
次は、アクセスポイントにアクセスしに来た端末へのアドレスの ためのdnsmasq
を設定します。シンプルに番号を割り当てるだけのdhcpサーバーの簡易バージョンです。MACアドレスとIP、ホスト名を書き込んだ設定ファイルを使えば任意の番号を指定の端末に割り振ることもできます。(今回はしてません。)
# Use interface wlan0
interface=wlan0
#except-interface=eth0
# Explicitly specify the address to listen on
listen-address=10.0.0.10
# Bind to the interface to make sure we aren't sending things elsewhere.
bind-interfaces
# Forward DNS
server=10.10.10.60
server=1.1.1.1
# Don't forward short names
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Assign IP addresses
# with a 24 hour lease time
dhcp-range=10.0.0.20,255.255.255.0,24h
listen-address, DNSserver, dhcp-range
は編集してください。listen-addressはwlan0で割り当てたIP番号と同じにしてください。
iptables: ポートフォワード
無線LANに入ってくる通信を、有線LANに振り分けてあげる必要があります。無線LANの通信はそのまま有線LANに流れていきますのでセキュリティー的にはNGです。まあ、個人での環境では問題はありませんが、状況により慎重にした方が良い時もありますのでご注意のほど。
まずは、システム設定を変更します。sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
で一発でできますが、vi /etc/sysctl.conf
で直接設定をいじることもできます。
で、再起動します。
そして、パケットの流れを設定に追加します。何処のものが何処から何処へ行く、と言う意味があります、大文字小文字の違いも意味があります。本来なら、ここでポートの番号やらなんやら追加され、呪文のようになります。
pi@cashu:~ $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pi@cashu:~ $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
pi@cashu:~ $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables
の設定はシャットダウンすると消えてしまいます。iptables設定を保存するためのツールをインストールします。
pi@cashu:~ $ sudo apt-get install iptables-persistent
途中に、ipv4, ipv6の状態を保存するか?との質問があります。“はい"で現在のiptablesの設定内容が、/etc/iptables/rules.v4 に保存されます。起動時に毎回呼び出され、読み込まれます。
以上の設定が終わったらリブートし完了です。
pi@cashu:~ $ sudo iptables-save | sudo tee /etc/iptables/rules.v4
と、Debianの64bit対応Busterは割と問題なく今の所動いてます。大ハマりだった、ドッカーも起動してます。動作が機敏な感じが。。(RPi0Wと比べたら当たり前か。)あとはBTが動いてくれれば、、。