| tags:raspberry pi buster categories:server

アクセスポイント

ルーターにイーサーネットで繋げたDebianの64bit対応・Busterのラズベリー・パイ3Bにアクセスポイントをインストールをしました。プロキシー(とTorも)・サーバーを入れて串刺しにするかちょっと考えてます。

アクセス・ポイント化する為に必要なソフトは以下の二つ+最後の方でもう一つ(任意)です。aptでインストールします。

pi@cashu:~ $ sudo apt install hostapd dnsmasq
dnsmasqはpiholeとインストール時にコンフリクトします。dnsmasqを停止して、piholeインストールしました。最初にpiholeをインストールしておけば、こちらでインストールする必要はなかったかも。

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 に保存されます。起動時に毎回呼び出され、読み込まれます。

以上の設定が終わったらリブートし完了です。

※ 後々`iptables`を変更・追加などをした場合は、`/etc/iptables/rules.v4`に追加書き込みます。
pi@cashu:~ $ sudo iptables-save | sudo tee /etc/iptables/rules.v4
無線のdhcpで使うIP番号割り当てを有線で使っているIP番号とちょっとバッティングさせてしまい、有線LANが外に出てかない、という不具合がありました。まったくの凡ミスですが、お気をつけのほど。

と、Debianの64bit対応Busterは割と問題なく今の所動いてます。大ハマりだった、ドッカーも起動してます。動作が機敏な感じが。。(RPi0Wと比べたら当たり前か。)あとはBTが動いてくれれば、、。

See Also

🏝 tipping

🌷 sat ⚡️ goozenlab@getalby.com
🌻 bitcoin : bc1qnjhnsxgqah050995dkdveav4y3t3d7uxyme4ud

If you do send a tip, Please email me so that I can say thank you.