web-dev-qa-db-ja.com

再起動後は常にifdown / ifup wlan0が必要です

私は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ブートのように、本当に奇妙ですか?

8
xavier.seignard

以下の解決策のいずれかを試しましたか?問題を再現するのは簡単ではないので、ここで答えを推測する必要があります。入手したドライバに問題がある可能性があります。

  1. インターフェースファイルで、「auto wlan0」をコメントアウトして、「allow-hotplug wlan0」をそのままにしてください。

    #auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    
  2. おそらくあなたが探している理想的なソリューションではありませんが、次の内容で、お気に入りのスクリプトディレクトリに実行権限を持つ新しいシェルスクリプトを作成してみてください。

    ifdown wlan0 
    ifup wlan0 
    

    次に、インターフェースファイルに次の行を追加します。

    auto wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    post-up /path-to-your-script/script.sh
    
  3. ワイヤレス接続がアクティブでない状態でコンピューターが起動したとき。インターフェースが表示されるまで、さまざまなパラメーターを指定してiwconfigをいじってみてください(完全なリストを取得するには、man iwconfigを試してください)。 txpowerかもしれないと思いますスイッチのようなものがここであなたを助けるかもしれません。それがうまくいくなら、pre-up <command-that-worked>を2番目の回答と同じようにインターフェースファイルに入力し、コマンドはそのままにします。

    したがって、最後にこのようなもの((pre | post)-upに絶対パスを渡すことを忘れないでください

    pre-up /sbin/iwconfig wlan0 txpower on
    
7

ここでまったく同じ問題。問題はタイミングの問題でした:ブートプロセスが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に接続すると、常にネットワーク接続が失われます。

0
Dimitry K

コメント解除auto eth0auto eth1またはauto wlanは、ユニットの起動時に表示するインターフェイスです。

0
clowen