私は5台のコンピュータ(Windows PC 1台とRaspbianがインストールされたRaspberry Pi 4台)で構成された一時的なWi-Fiを作成しようとしています。 Raspberry Piはmqttを介して通信しますが、それはポイントではありません。私が経験している問題は、再起動wlan0
するたびにインターフェイスを取得するには常に次のことを行う必要があることです。
sudo ifdown wlan0
sudo ifup wlan0
理由をご存知ですか?私の設定は次のとおりです(明らかにIPアドレスを除くすべてのパイで同じです!)。
~ % ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:ff:88:99
inet addr:192.168.1.41 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:951 errors:0 dropped:0 overruns:0 frame:0
TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:66321 (64.7 KiB) TX bytes:43663 (42.6 KiB)
wlan0 Link encap:Ethernet HWaddr 00:0f:13:51:05:8c
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2520 (2.4 KiB)
~ % iwconfig
wlan0 IEEE 802.11bgn ESSID:"mirroir"
Mode:Ad-Hoc Frequency:2.412 GHz Cell: 42:B1:44:EB:D2:C1
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
~ % more /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
wireless-channel 1
wireless-essid mirroir
wireless-mode ad-hoc
wireless-key 967136deac
~ % sudo route add -net 192.168.0.0 netmask 255.255.255.0 wlan0
~ % netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
どんなアイデアがありますか?
これはうまくいくようですが、必ずしもそうではありません。ブートが10回中1回程度になるようです。本当に変ですか? !
答え1
次の回避策のいずれかを試してみましたか?問題は簡単に再現されず、購入したドライバに問題がある可能性があるため、ここで答えを推測する必要があります。
「auto wlan0」をコメントアウトし、インターフェイスファイルに「allow-hotplug wlan0」を残します。
#auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp ... rest of the config ...
おそらくあなたが探している理想的な解決策ではないでしょう。ただし、次の内容を含め、お気に入りのスクリプトディレクトリに実行権限を持つ新しいシェルスクリプトを作成してみてください。
ifdown wlan0 ifup wlan0
次に、インターフェイスファイルに次の行を追加します。
auto wlan0 iface wlan0 inet dhcp ... rest of the config ... post-up /path-to-your-script/script.sh
ワイヤレス接続を有効にせずにコンピュータが起動する場合。
iwconfig
インターフェースが表示されるまで、さまざまなパラメーターを操作してみてください(リスト全体を表示するには、man iwconfigを試してください)。txpower
どのようなスイッチが役に立つと思いました。これがうまくいく場合は、pre-up <command-that-worked>
2番目の答えのようにインターフェースファイルで使用し、そこにコマンドを残してください。だから結局これが起こります((pre | post)-upに絶対パスを渡すことを忘れないでください)
pre-up /sbin/iwconfig wlan0 txpower on
答え2
ここでも同じ問題があります。問題はタイミング問題です。起動プロセスが.wlan0を作成した場合、wlan0はまだ準備されていませんifup
。
pre-up sleep 5
インターフェイスファイルのwlan0にwaitステートメントを追加することでこの問題を解決しました。
marcelo@breeze:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
pre-up sleep 5
address 10.0.0.42
netmask 255.255.255.0
gateway 10.0.0.2
dns-nameservers 10.0.0.2
wpa-ssid mycoolssid
wpa-psk returnguantanamo
答え3
eth0インターフェイスとwlan0に異なる「ローカル」ネットワークを使用したい場合があります。
したがって、wlanの場合はnetwork 10.10.0.1
、maskなどを使用し、255.255.255.0
ethの場合はnetwork 192.168.0.1
、maskなどを使用します。255.255.255.0
RPIではこの問題は発生しませんでした(おそらく常にwlan0とeth0ネットワークIPが非常に異なるため)。しかし、私のWindows PCでは、この問題は引き続き発生します。ワイヤレスを使用して、rasbperryやアドレス(3番目のオクテットを参照)192.168.1.x
などのイーサネットポートに接続すると、常にネットワーク接続が切断されます。192.168.0.x
答え4
コメントを削除するauto eth0
か、デバイスの起動時に表示したいインターフェースを削除しますauto eth1
。auto wlan