web-dev-qa-db-ja.com

起動時に別のネットワークデバイスを起動する前に、ネットワークデバイスが起動するのを待ちますか?

大学のワイヤレスネットワーク(WPA2-Enterprise認証が必要)とプライベートワイヤレスルーター(WANポート)経由)の間のブリッジとしてRaspbianを実行するRaspberryPiをセットアップしている最中です。 。

私はここでいくつかの驚くべき助けを受けました: どうすればwlan0とeth0の間のトラフィックを最も簡単に透過的にブリッジできますか?

ほとんどの場合、私のセットアップは意図したとおりに機能しています。唯一の問題は、Raspberry Piでeth0をautoまたはallow-hotplugに設定した場合(ブート時にすべてがヘッドレスで起動するように)、すべてのインターネットトラフィックがeth0を介してルーティングされているように見えることです。 。これは正しくありません。私のインターネット接続はwlan0にあり、eth0はその接続を私のプライベートルーターに共有します。

Eth0が自動的に起動しないようにすることで、この問題を解決できます。/etc/network/interfacesからeth0のautoまたはallow-hotplugを残し、Raspberry Piの起動を許可してから、手動で「ifup eth0」を実行すると、期待どおりの動作が得られます。

起動時にeth0を起動する前にwlan0が完全に起動されていることを確認する方法はありますか(eth0が起動するためのより高速なインターフェイスですが)?または、それが失敗した場合、どうすればインターネットトラフィック(これはeth0からのものであることに注意してください)をwlan0のみに強制できますか?

編集:今のところ、回避策として、起動時にeth0を起動するスクリプトを実行していますが、30秒の遅延でwlan0が最初に起動するようになっています。このソリューションはエレガントでも信頼性でもありませんが(wlan0認証に30秒以上かかる場合はどうなりますか?)、今のところうまくいっているようです。しかし、私はまだより良い解決策を探しています!

4
snoopy91

うーん..ただの考え。ただし、Wi-FiネットワークでDHCPを使用していることを前提としています。したがって、ネットワークが完全に稼働するまで、IPアドレスはありません。

それでは、whileループを少しだけ見てみましょう。

while [ "$(ifconfig wlan0 | grep inet | grep 192.168.)" = "" ];  do sleep 1; done

192.168。標準範囲に置き換える必要があります。これで、すでに接続されているかどうかが1秒ごとにチェックされ、wifi経由で接続されたらすぐに、ifupeth0で直接フォローアップできます。

2
TheCommoner282

可能性:

  • Eth0の静的設定では、デフォルトゲートウェイを設定しないでください。 (これが本当の問題だと思います)
  • dhcpクライアント構成にフックを追加して、構成が成功した後に他のインターフェイスを起動します。
0
hildred