WiFiルーティングとゲートウェイについて学ぶ

WiFiルーティングとゲートウェイについて学ぶ

私は完全に迷子になった。私はLinuxネットワーキングの真の初心者です。

私が達成したいもの:

bobstroが言ったように、Wi-Fiに接続されたUPnPカメラがWi-Fiネットワーク間で移動できるようにしたいと思います。 RPIはこれらのネットワークに接続され、カメラはRPiに接続されます。ただし、RPiはアクセスポイントではありません。 TCPまたはWebソケットを介してサーバーに接続し、カメラを介して写真を撮るように指示されます。その後、websocketまたはTCPを介してイメージを再送信します。

私の状況:

私のRaspberry Piには、eth0、wlan0、wlan1(2つのWi-Fi USBアダプタ)の3つのインターフェースがあります。

  • wlan1はSSDP経由でWi-Fiカメラに接続するために使用されます。

  • wlan0は、サーバー(既知のIP /ドメイン名)へのTCP接続を確立するために使用されます。 DHCP経由で接続しているWi-Fiネットワークwlan0については何もわかりません。随時変更されることがあります。ゲートウェイについては具体的にはわかりません。

  • eth0 は SSH アクセスをデバッグするために使用されます。たとえば、MacBook Air を使用して共有サービスに接続します。


        Server <---> Internet <--wlan0--> RPI <--wlan1--> Camera
                                           |
                                          etho
                                           |
                                        Macbook

現在、これらのインターフェイスはオンラインです。以下は出力です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.2.2  Bcast:192.168.2.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.2.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

そしてここ/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"

過去24時間に読んだ内容を正しく理解したら、ルーティング作業を行う必要があります。しかし、私は何を理解していません。

デフォルトパスを変更する必要がありますか?それでは、ネットワークに接続する前にwlan0またはwlan1のゲートウェイがわからないので、どうすればよいですか?解決できない問題ですか?

この投稿は重複している可能性がありますが、昨日から役に立つものが見つからなかったため、元の投稿を見つけるには最小限の支援が必要です。 :)

編集:Goldilocksが述べたように、私の質問は広範囲です。本当に申し訳ありません。私はネットワーキングについて何も知りません。これをより具体的な質問に分ける方法がわかりません。

したがって、おそらく最初の失敗した試みは次のようになります。

sudo ip route del defaultデフォルトのeth0ゲートウェイを削除してみました。これでコマンドはsudo ip route add default dev wlan0機能しますが、次のルーティングテーブルが作成されます。

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 wlan0

そして私はRaspberry Piがwlan0 Wi-FiルーターIP(わかりません。変更される可能性があります)を見つけてゲートウェイとして使用したいと思います。これは良い最初のステップになります。

編集2:wlan1は現在ネットワーク192.168.2.xにあります。

答え1

この問題にアクセスする方法に関連する部分的な回答を提供することができますが、注意すべき点は、起動時にネットワーク構成サービスを使用せずに目的のタスクを実行するためにスクリプトを直接作成することです。

つまり、これをテストするには、除外した/etc/network/interfacesすべての項目をコメントアウトし、lo後者wlan0をDHCPのデフォルトパスとして使用します。これは、システムがこのように起動されることを意味します。この設定はあなた自身を見つけるでしょうが、注意することの1つは、このサブネットマスクが他のサブネットマスクと競合しないことを知る必要があることです。これらすべてが違うはずです。あなたが制御することができるか、事前に知っている2つの方法があります。

1つ目はSSDPカメラサブネットです。ここでの問題の1つは、dhclientすでにwlan0でリースを維持している場合にリースを構成することです。これは簡単だと思うかもしれませんが、見てみると必ずしもそうではありません。あなたはできますこの試みしかし、私の考えでは、潜在的に複雑ではない2つの解決策があるようです。

  • 静的IPを使用してください。これは間違いなく最も簡単で最も確実な方法です。
  • dhcpcdを代わりに使用しますdhclient。どうすればいいかわかりませんが、可能なようです。

固定IPを使用すると、ハードコーディングも可能で、使いやすくなります。このサブネットが192.168.0.0/24192.168.0.101 で、IP が 192.168.0.101 であると仮定します。

ip link set wlan1 up
wpa_supplicant -B -c /path/to/essid/config -i wlan1
ip addr add 192.168.0.101 dev wlan1
ip route add 192.168.0.0/24 via 192.168.0.101

これにより、Macへのeth接続はほぼ同じです。〜しなければならない使いやすい固定IP:

ip link set eth0 up
ip addr add 192.168.1.10
ip route add 192.168.1.0/24 via 192.168.1.10

答え2

私が理解しているように、RPiを使用してWi-Fiに接続されているUPnPカメラがネットワーク間で移動できるようにし、RPiを使用して各サイトのワイヤレスネットワークに接続したいと思います。

そうですか? RPiルーティングなしでネットワークから直接カメラにアクセスできない理由はありますか?

RPiでルーティングを有効にしましたか?インタラクティブにルーティングを有効にするには、次のようにします。

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

永久に作成するには、/etc/sysctl.conf を編集し、net.ipv4.ip_forward=1 行のコメントを外します。

sudo nano/etc/sysctl.conf

# IPv4 パケット転送をイネーブルにするには、次の行のコメントを外します。
net.ipv4.ip_forward=1

設定を見てみると、RPiはデフォルトゲートウェイを提供するDHCPを介してWLAN0のアドレスを取得します。

カメラがどのように接続されているか説明していません。 RPiをアクセスポイントとして使用しますか?その場合は、カメラがRPiにワイヤレスで接続され、RPiを指すIPアドレスとデフォルトゲートウェイが割り当てられるようにhostapdを設定し、RPiをDHCPサーバーとして設定する必要があります。

eth0インターフェースが診断目的でのみ使用されている場合は、RPiのデフォルトゲートウェイとして使用しないことがあります。

何をしようとしているのかを話すのではなく、何をしたいのかを正確に明確に説明する必要があります。あなたがやっていることはおそらく間違った方法です。

役に立つ場合は、同様に構成されたRPiを使用する方法は次のとおりです。

1つのWi-FiインターフェースはRPiを設定するためにのみ使用されます。 Hostapdとdnsmasqを使用してアクセスポイントとして設定しました。サイトにRPiを初めて配置したとき、MacBookはこのAPに接続して設定しました。私のMacBookには、dnsmasqを介してRPiを指すIPアドレスとデフォルトゲートウェイが割り当てられています。設定が完了した後、このインターフェイスは通常使用されませんが、必要に応じてアクセスできます。

1つのWi-Fiインターフェースは、リモートアクセス用に各サイトのクライアントネットワークを接続するために使用されます。 wicd-cursesを使用してインターフェイスを設定し、そのネットワークでpingできることを確認しました。その後、VPNを介してサイトに接続してRPiにアクセスできます。サイトWiFiネットワークに接続すると、私のRPiにはDHCPを介してサイトのインターネットルーターを指すデフォルトゲートウェイが割り当てられます。

有線インターフェイスはテストネットワークに接続するために使用されます。 /etc/network/interfaces を介して固定 IP アドレスで構成されます。

ネットワーク間でトラフィックが流れたくないので、ルーティングを使用しません。すべてのトラフィックはRPiで終了します。ただし、一部のスクリプトでは、必要に応じてルーティングをオンにすることができます。必要に応じて、RPiをブリッジまたはNATルーターとして使用するスクリプトがあります。

達成しようとしている目標をより詳細に説明できれば、答えは簡単なはずです。

答え3

wlan0だから、デフォルトのパスがどこにあるかに対する(一時?)解決策を見つけたようです。 Wi-Fiゲートウェイを知る必要はありません。

重要なことは、@goldilocksのアイデアに沿ってルーティングプロセスをスクリプト化することです。ただし、このソリューションを使用すると、dhcpで維持してeth0実行できます。wlan1

そこで、以下を含むファイル/etc/dhcp/dhclient-enter-hooks.d/post-wlan0(およびそのchmod +x内容)を追加しました。

# post-wlan0 script
# Goal : activate default route via wlan0 after wlan0 is up

#echo  "post-wlan0 start" >> /tmp/testwlan0.debug
if [ "$interface" = "wlan0" ]; then

        #echo  "wlan0 detected" >> /tmp/testwlan0.debug
        if [ -n "$new_routers" ] ; then

                #echo  "setting route" >> /tmp/testwlan0.debug

                sudo ip route del default
                sudo ip route add default via $new_routers dev wlan0

        fi
fi

実際、このスクリプトはdhcpクライアントが動作しているときにトリガーされるフックです。詳細についてはを参照してください/etc/dhcp/dhclient-enter-hooks.d/debug

したがって、wlan0起動したら、古いデフォルトルートを削除し、wlan0ルータIP($new_routers)を使用して新しいルートを追加します。

出力sudo route -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.43.1    0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan1
192.168.2.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

eth0wlan1ネットワーク上のデバイスまたはpingを実行できます。私はsshを通してそれをしますeth0

@goldilocksと@bobstro:助けてくれてありがとう!このソリューションが良いと思いますか?


私の設定:

/etc/network/interfaces:

auto lo
iface lo inet loopback

# Connection to the world
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-ssid "wifi1"
        wpa-psk "pwd1"

# Debugging connection
auto eth0
iface eth0 inet dhcp

# Connection to the future camera
auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
        wpa-ssid "wifi2"
        wpa-psk "pwd2"

出力ifconfig

eth0      Link encap:Ethernet  HWaddr b8:27:eb:8c:e2:10  
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1371 errors:0 dropped:0 overruns:0 frame:0
          TX packets:494 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:145112 (141.7 KiB)  TX bytes:87219 (85.1 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:230 errors:0 dropped:0 overruns:0 frame:0
          TX packets:323 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:22412 (21.8 KiB)  TX bytes:32270 (31.5 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:1942 errors:0 dropped:1 overruns:0 frame:0
          TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:305388 (298.2 KiB)  TX bytes:3302 (3.2 KiB)

編集:このソリューションはUPnPデバイスを使用してどこかでテストされましたwlan1sudo ip route add 239.255.255.250 dev wlan1良いインターフェイスを通過するには、UPnPで見つかったパスを追加する必要がありました。

使ったこれテスト用の NodeJS コードです。

関連情報