ソリューション説明されているここ
問題
私の Raspberry Pi には、eth0、wlan0、wlan1 の 3 つのインターフェース (2 つの Wi-Fi USB ドングル) があります。
- wlan1 は、SSDP 経由で WiFi カメラに接続するために使用されます。
- wlan0 は、サーバー (IP/ドメイン名が既知) への TCP 接続に使用されます。DHCP 経由で wlan0 が接続されている WiFi については何も知りません。時々変わる可能性があります。ゲートウェイは特にわかりません。
- eth0 は、例として MacBook Air 接続共有サービスを介して SSH アクセスをデバッグするために使用されます。
実際、これらすべてのインターフェースは動作しています。ifconfig の出力は次のとおりです (wlan1 と eth0 は同じネットワーク上にあります。ただし、将来的にはそうではなくなります)。
eth0 Link encap:Ethernet HWaddr b8:27:eb:8c:e2:10
inet addr:192.168.0.19 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1174 errors:0 dropped:0 overruns:0 frame:0
TX packets:141 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:93616 (91.4 KiB) TX bytes:12342 (12.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr c0:4a:00:2a:ab:6c
inet addr:192.168.43.44 Bcast:192.168.43.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1142 (1.1 KiB) TX bytes:1145 (1.1 KiB)
wlan1 Link encap:Ethernet HWaddr 74:da:38:0c:c6:f0
inet addr:192.168.0.14 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1480 errors:0 dropped:0 overruns:0 frame:0
TX packets:155 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:222449 (217.2 KiB) TX bytes:29711 (29.0 KiB)
以下は sudo route -n の出力です。
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.43.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
過去 24 時間に読んだ内容をよく理解しているのであれば、ルーティングを行う必要があります。しかし、何を、どのように行うのかがわかりません。デフォルト ルートを変更する必要がありましたか? そうであれば、ネットワークに接続する前に wlan0 または wlan1 ゲートウェイがわからないため、それをどのように実行すればよいでしょうか? これは不可能な問題でしょうか?
編集: /etc/network/interfaces を追加
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up route del default dev wlan0
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "wifi1"
wpa-psk "psw1"
auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-ssid "wifi2"
wpa-psk "pwd2"
答え1
デフォルト ゲートウェイを見つけるには、/etc/network/interfaces にあるファイルを参照してください。おそらく 192.168.0.1 ですが、確信はありません。ゲートウェイはルーターのアドレスです。
情報を表示するには、「cat /etc/network/interfaces」と入力します。 変更する場合は、ルート権限 (sudo) で編集します。
これを試して:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
# post-up route del default dev wlan0
address 192.168.0.19
netmask 255.255.255.0
gateway 192.168.0.1
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wpa-ssid "wifi1"
wpa-psk "psw1"
address 192.168.43.44
netmask 255.255.255.0
gateway 192.168.0.1
auto wlan1
allow-hotplug wlan1
iface wlan1 inet static
wpa-ssid "wifi2"
wpa-psk "pwd2"
address 192.168.0.14
netmask 255.255.255.0
gateway 192.168.0.1
元の /etc/network/interfaces ファイルをバックアップして、代わりにこれを試してください。これにより、すべてが静的 (変更なし) に設定されます。ifdown/ifup を使用してインターフェイスを再起動するか、コンピューターを再起動する必要があります。
答え2
過去 24 時間に読んだ内容をよく理解したら、ルーティングを行う必要があります。
システムをルーターとして設定する場合を除き、そうではありません。
デフォルト ゲートウェイは、宛先がどのネットワーク インターフェイスのサブネット マスクの範囲にも入らない場合に Linux がトラフィックを送信する IP です。通常、これは「インターネット」宛てのトラフィックになります。
このシステムがインターネットにアクセスできることを気にしない場合は、インターネット アクセスは必要ありませんが、更新などを取得するために必要になる場合があります。
DHCP は通常、IP アドレスだけでなくデフォルト ゲートウェイも配布します。したがって、wlan0
DHCP から IP を取得している場合は、おそらくデフォルト ゲートウェイも取得します。(または、そうあるべきです。DHCP サーバーがデフォルト ゲートウェイを配布していない場合は、DHCP サーバーをチェックしてください。) したがって、インターネット宛のトラフィックはそのインターフェイスを通過します。
DHCP を使用したくない場合、または DHCP 経由でデフォルト ゲートウェイを配布したくない場合は、手動で指定できます。インターネットとの間で転送できるルーターの IP アドレスにする必要があります。
デフォルト ゲートウェイが 1 つだけであれば、処理が最もスムーズに進むため、他のインターフェイスが静的 IP に設定され、1 つのインターフェイスのみが DHCP 経由で何かを取得していることを確認してください。
答え3
何時間もテストした後、私はこの質問に自分で答えました...
それは説明するここ