異なるネットワークインターフェイスを使用して同じ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

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

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

おすすめ記事