━━━アクセスポイントのセットアップ━━━
イーサネットポートeth0と一緒にアクセスポイントについて話します。
別のwifiネットワーク(wlanリピーター)へのwlan0クライアント接続と一緒にアクセスポイントが必要な場合は、ブリッジでオプションのWiFiルーター/リピーターとしてアクセスポイントを見てください。
追加のソフトウェアをインストールせずに、Raspbian Stretchをwifiアクセスポイントとして設定することができます。必要なすべてのコンポーネントが利用可能です:ネットワーキング、DHCPサーバー、ブリッジングにはsystemd-networkdが付属し、wipaはwpa_supplicantでセットアップできます。2つのインターフェイスeth0とwlan0の接続は、ルーティングまたはブリッジングによって実行できます。最初にクイックインストールのセットアップ、次に詳細を示します。最初にsystemd-networkdに切り替える必要があります。
2019-04-14に更新されたRaspberry Pi 3B + でRaspbian Stretch Lite 2019-04-08でテスト済み。Raspberry Pi 4B上の
Raspbian Buster Lite 2019-07-10は2019-07-20に更新されました。
で行われた更新sudo apt update && sudo apt full-upgrade && sudo reboot
。
♦一般的なセットアップ
systemd-networkdに切り替える
詳細については、(1)を参照してください。ここで簡単に説明します。次のコマンドを実行します。
# disable classic networking
rpi ~$ sudo -Es
rpi ~# systemctl mask networking.service dhcpcd.service
rpi ~# mv /etc/network/interfaces /etc/network/interfaces~
rpi ~# sed -i '1i resolvconf=NO' /etc/resolvconf.conf
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service systemd-resolved.service
rpi ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
アクセスポイントとしてwpa_supplicantを構成する
設定するには、wpa_supplicantのアクセスポイントとしてのためのあなたの設定でこのファイルを作成しcountry=
、ssid=
、psk=
、多分にfrequency=
。これをコピーしcat
て、両方のEOFで始まるコマンドブロックに1ブロックで貼り付けることができます(区切り文字EOFはファイルの一部を取得しません)。
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable wpa_supplicant@wlan0.service
一般的なセットアップが完了しました。戻る。
♦スタンドアロンアクセスポイントのセットアップ
このセットアップの例:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
ください「一般設定」、その後のconfigureに以下のファイルを作成しますwlan0。アクセスポイントのみがあります。イーサネットデバイスが構成されていません。
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
EOF
これが必要な場合は、再起動してください。
それでおしまい。
それ以外の場合は、この時点で再起動する必要はありません。
♦ルーティングなしでアクセスポイントを設定し、eth0を使用する
このセットアップの例:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
セットアップ
ください「スタンドアロンアクセスポイントの設定」、次に設定するには、次のファイルを作成しますeth0の。
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
リブート。
それでおしまい。
詳細
インターフェイスeth0は、イーサネットケーブルでインターネットルーターに接続され、インターネットルーターからDHCPによって構成を取得します。それのAddress=192.168.50.2
代わりに例えばで静的IPアドレスをそれに与えることは問題ありませんDHCP=yes
。
ルーティングなしでは、携帯電話でインターネットに接続できません。RPi自体からのみアクセスして、更新などを取得できます。
♦アクセスポイントの設定とeth0、NATの使用(推奨)
このセットアップの例:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
セットアップ
か「一般設定」、その後のconfigureに以下のファイルを作成しwlan0とはeth0。アクセスポイントには、ルーターのサブネットとは異なるサブネットを使用してください。この例のルーターは、サブネット192.168.4.0/24を使用しません。別のサブネットが必要な場合は、アドレス行を変更するだけAddress=192.168.5.1/24
です(例:)。
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
NATを構成するには、wpa_supplicantサービスを次のように拡張する必要があります。
rpi ~# systemctl edit wpa_supplicant@wlan0.service
空のエディターでこれらのステートメントを挿入し、保存してエディターを終了します。
[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
リブート。
それでおしまい。
詳細
インターネットルーターにアクセスできない場合は、NAT(ネットワークアドレス変換)でインターネットルーターを偽造して、すべてのパッケージがRasPi APから来ているという嘘をつくことができます。しかし、これはクリーンなルーティングではなく、制限があります。ルーターのサブネット上のクライアントは、wifi上のクライアントに接続できません。ただし、ほとんどの場合、これは必要ないため、セットアップが簡単になるため、このセットアップをお勧めします。ルーターネットワークからwifiクライアントに接続する必要がある場合は、次のセクションで説明するように、完全なルーティングを使用する必要があります。
♦アクセスポイントの設定とeth0、ルーティングの設定
このセットアップの例:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
セットアップ
か「一般設定」、その後のconfigureに以下のファイルを作成しwlan0とはeth0。アクセスポイントとルーターネットワークに異なるサブネットを使用していることを確認してください。静的IPアドレスをゲートウェイとして使用する必要があるため、静的IPアドレスを使用する必要があります。
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
リブート。
ルーティングを完全に機能させるには、インターネットルーターに静的ルートを設定して、RasPi経由でWi-Fiでアクセスポイントに接続されているクライアントに戻るパッケージのルートを見つける必要があります。ほとんどのインターネットルーターでは静的ルートを設定できますが、その方法はモデルによって異なります。それを見つけるのはあなた次第です。たとえば、RasPi eth0インターフェイスの静的IPアドレスは192.168.50.2です。ルーターのゲートウェイ(次ホップ)は192.168.50.2、宛先ネットワークは192.168.4.0/24(または192.168.4.0ネットマスク255.255.255.0)です。
つまり、インターネットルーターの場合:「サブネット192.168.4.0/24
(APからの宛先ネットワーク)に属するすべてのパッケージを、サブネット上の次のルーターであるRasPi AP 192.168.50.2
(ゲートウェイ)に送信します。どこに行くかを知っています。」
それでおしまい。
♦ブリッジを使用したアクセスポイントのセットアップ
このセットアップの例:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
DHCPサーバーとインターネットルーターを備えたイーサネットネットワークが既にあり、wifiアクセスポイントで同じIPアドレスを使用して拡張したい場合は、ブリッジを使用します。多くの場合、これはルーターへのアップリンクとして使用されます。
セットアップ
やる「一般設定」その後、クリーンアップのディレクトリは/ etc / systemdに/ネットワークが、触れないでください99-default.link
(存在する場合)。eth0およびbr0を構成するために、次の3つのファイルを作成します。IPアドレスは例です。独自に設定する必要があります。
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
ここで、wpa_supplicantにブリッジを使用するように指示する必要があります。サービスを次のように変更することでそれを行います。
rpi ~# systemctl edit wpa_supplicant@wlan0.service
空のエディターでこれらのステートメントを挿入し、保存してエディターを終了します。
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
リブート。
それでおしまい。
詳細
インターフェイスwlan0がブリッジのスレーブであることをwpa_supplicantに伝える必要があります。そうしないと、「間違ったパスワード」でクライアントが接続することを拒否し、キーネゴシエーションが機能しないことを意味します。私たちが教えてくれたとき/ sbinに/ wpa_supplicantのオプションでのブリッジを使用するwlan0、インターフェイスはすでに橋のメンバーである必要があります。それが、wpa_supplicantサービスのドロップインファイル(オーバーレイ)で行うことです。空のステートメントは、古いエントリを削除します。そうしないと、2行あり、wpa_supplicantが2回起動します。で表示できるオリジナル。-dbr0
ExecStart=
ExecStart=
ExecStart=
systemctl cat wpa_supplicant@wlan0.service
通常、イーサネットケーブルで接続しているルーターでは、DHCPサーバーが有効になっています。ブリッジは、ステーション(アクセスポイントに接続されたデバイス)からのDHCP要求に対しても透過的であるため、IPアドレスとオプションを使用したインターフェースの構成について心配する必要はありません。ルーターがサービスを提供します。
excursus:
ただし、ルーターにDHCPサーバーがない場合は、RasPiに DHCPサーバーをセットアップできます。systemd-networkdには組み込みのDHCPサーバーを設定するオプションがありますが、問題はsystemd-networkdがルーター自体で実行されていると想定することであり、この場合は当てはまりません。これは特に、ステーションに間違った選択肢を提供しますルーターオプション。設定する方法はありません。だからインストールする必要がありますdnsmasq
この場合、必要に応じて構成できます。インストールして構成します(例、独自のIPアドレスを使用):
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
この例では、ステーションに与えるために予約された192.168.50.128から192.168.50.164のIPアドレスがあります。他の静的IPアドレスについては、このプールの外部の1つを使用し、ブリッジ自体のIPアドレスも使用します。
♦最適化
wpa_supplicantを起動すると、ほとんどの場合、ジャーナルに次のメッセージが表示されます。
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
大きな問題ではありません。wpa_supplicantは、暗号化キーを生成するために乱数を必要とします。これは少し遅いので、待つ必要があります。幸いなことに、RasPiにはT rue R andom N umber G enerator(TRNG)が組み込まれています。以下を使用してソフトウェア(3)をインストールすることにより、これを使用して乱数の取得を高速化できます。
rpi ~$ sudo apt install rng-tools
更新:Raspbian Stretch 2019-04-08
以降、インストールする必要はありません。デフォルトでインストールされます。
rng-tools
♦トラブルシューティング
systemd-networkd
サービスのステータスを確認します。
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service
またはもう少し:
rpi ~$ journalctl --boot --pager-end
進行中のログを追跡することは有用であることがわかりました。
rpi ~$ journalctl --boot --follow
ファイルをドロップした場合、結果を見ることができます:
rpi ~$ systemctl cat wpa_supplicant@wlan0.service
ユニットのランタイム環境を確認するには、ユニットを表示し、たとえば次の2 ExecStart=
行があるかどうかを確認します。
rpi ~$ systemctl show wpa_supplicant@wlan0.service
そして、他に何も助けなければ、ドロップインファイルで/sbin/wpa_supplicant
with からデバッグオプションを有効にでき-d
ます:
rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
出力はジャーナルにあります。このようにして、間違ったキーネゴシエーションの問題を見つけました。
Wi-Fi
アクセスポイントをセットアップしている場合は、携帯電話で見つける必要があります。利用可能なネットワークを表示すると、RPiNetという名前で表示され、接続できます。RasPiでは、次のコマンドも使用できます。
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
ご覧のとおり、タイプAP(アクセスポイント)であり、使用しているチャネルも表示されます。問題は、チャネルを周波数に変換することです。周波数はチャネルと一致する必要があります。あなたは見ることができます(2) WLANチャンネルのリストのため。たとえば、5.1 GHz帯域でチャネル36を使用するには、で設定frequency=5180
する必要があります/etc/wpa_supplicant\wpa_supplicant.conf
。ただし、wifiが5.1 GHz帯域をサポートしていることを確認する必要があります。で確認できsudo iw phy
ます。これにより、多くの情報が得られます。5000 MHzを超えるサポートされている周波数も含まれている必要があります。24xx MHzの周波数しか表示されない場合は、もちろんこれしか使用できません。
もう1つのポイントは乱数です。セキュリティで保護された接続のキーを暗号化するには、wpa_supplicantに乱数が必要です。これを生成するのは、Raspberry Piでは非常に遅いです。暗号化キーを生成するのに十分なエントロピーがない場合、wpa_supplicantは認証を拒否します。あなたはで見ることができますcat /proc/sys/kernel/random/entropy_avail
提供されていますどのように多くのエントロピー。十分に速く動作するには、1000を超える必要があります。これを高速化するために、rng-tools
デフォルトでインストールされています。詳細については、最適化のセクションをご覧ください。
参考資料:
[1] ネットワークから動的フェイルオーバーを使用してsystemd-networkdに移行する方法
[2] WLANチャネルのリスト
[3] Rng-tools