私の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
このパターンは好きなだけ繰り返すことができます。保持しているインターフェイスの数に応じてタグとアドレスを追加し続けます。
これは、他のネットワークインターフェイスで重複したアドレスを扱う他の人に役立ちます。