私は5台のコンピューター(1台のWindows PCと4台のRaspberry Piにraspbianがロードされている)で構成されるアドホックwifiを作成しようとしています。 Raspberry Piはmqttを介して通信しますが、それは重要ではありません。私が抱えている問題は、再起動するたびにwlan0
インターフェイスを使用するために、常に次のことを行う必要があることです。
Sudo ifdown wlan0
Sudo ifup wlan0
なぜなのかご存知ですか?ここに私のconfがあります(明らかにIPアドレスを除いて各piで同じです!)
~ % 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ブートのように、本当に奇妙ですか?
以下の解決策のいずれかを試しましたか?問題を再現するのは簡単ではないので、ここで答えを推測する必要があります。入手したドライバに問題がある可能性があります。
インターフェースファイルで、「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
ここでまったく同じ問題。問題はタイミングの問題でした:ブートプロセスがifup
を発行したときにwlan0の準備ができていませんでした。
これを解決するには、待機ステートメントを追加しますpre-up sleep 5
をinterfacesファイルのwlan0に追加します。
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
おそらく、eth0インターフェースとwlan0に異なる「ローカル」ネットワークを使用したい場合があります。
したがって、wlanの場合は10.10.0.1
のようなネットワークを使用し、255.255.255.0
をマスクし、ethの場合は192.168.0.1
のようなネットワークを使用して、255.255.255.0
をマスクします。
私はRPIでこの問題を抱えていません(おそらく、常にwlan0とeth0のネットワークIPを大きく異なっているためです)。しかし、私のWindows PCでは常にこの問題が発生します。192.168.1.x
でワイヤレスを使用してから、イーサネットポート、たとえば192.168.0.x
アドレス(3番目のオクテットを気にする)のrasbperryに接続すると、常にネットワーク接続が失われます。
コメント解除auto eth0
、auto eth1
またはauto wlan
は、ユニットの起動時に表示するインターフェイスです。