異なるネットワークインターフェイスを使用して同じIPにアクセスする方法

異なるネットワークインターフェイスを使用して同じIPにアクセスする方法

私のRaspberryPiに接続されている3つのWLANインターフェイスがあります。

  • wlan0
  • wlan1
  • wlan2

それぞれは次のように接続されています。他のSSID:

  • gopro-0
  • gopro-1
  • gopro-2

GoProカメラがWiFiルーターに設定されている常に同じIPアドレス10.5.5.9

この設定を使用して呼び出すと、次のようになります。

curl http://10.5.5.9

その後、wlan0最初のインターフェイスが使用されます(仮定の簡略化)。カメラを呼び出すには、次のようにgopro-2呼び出す必要があります。

curl http://10.5.5.9 --interface wlan2

効果があるただし、すべてのコマンドでインターフェイスを指定できるわけではないという問題があります(つまりffmpeg、インターフェイスがわかりません)。

どういうわけかLinuxをだますことができますか?代表する特定のIPアドレスを10.5.5.9特定のインターフェイスに転送する必要がありますか?

たとえば、

10.5.4.100 -> 10.5.5.9 @ wlan0
10.5.4.101 -> 10.5.5.9 @ wlan1
10.5.4.102 -> 10.5.5.9 @ wlan2

私は、一般的なHTTP GET / POSTメソッドを使用して別のインターフェイスで同じIPを呼び出すことを可能にするソリューションや他のメソッドを期待しています。

答え1

他の種類のデバイスでも同じ問題が発生し、解決策を見つけました。 iptables mangleとip Routeの組み合わせが必要です。

各インターフェイスに、デバイスと同じサブネット上の一意のIPを割り当てます(下記192.168.44.8)。この例では、最初のデバイスの仮想 IP は 192.168.44.9 です。

192.168.44.1には物理デバイスへの4つの異なるインターフェイスがあり、このモードと仮想IPを使用すると、すべてのデバイスと確実に通信できます。

iptables -t mangle -A PREROUTING -d 192.168.44.9 -j MARK --set-mark 0x01

iptables -t nat -A PREROUTING -m mark --mark 0x01 -d 192.168.44.9 -j DNAT --to-destination 192.168.44.1

iptables -t nat -A POSTROUTING -m mark --mark 0x01 --destination 192.168.44.1 -j SNAT --to-source 192.168.44.8

これを完了したら、次のパスを追加します。

ip route add 192.168.44.0/24 dev eth4 table 1
ip rule add from all fwmark 1 table 1
ip route flush cache

このパターンは好きなだけ繰り返すことができます。保持しているインターフェイスの数に応じてタグとアドレスを追加し続けます。

これは、他のネットワークインターフェイスで重複したアドレスを扱う他の人に役立ちます。

答え2

方法はiptablesを使用してルーティングを設定することです。あなたの質問に対する同様の答えは次のとおりです。

https://serverfault.com/questions/345111/iptables-target-to-route-packet-to-特異的-インターフェース

これはOpenBSD / pfでは少し簡単です。

答え3

このスレッドには同じ問題が記載されています。 https://forum.developer.parrot.com/t/multiple-parrot-anafi-control-via-olympe-on-linux-configure-ip/9590/2

iptablesルールとルーティングを使用する完全なソリューションを提供します。

関連情報