netstat または route、およびおそらく他のいくつかのコマンドを使用すると、メイン ルーティング テーブルでデフォルト ゲートウェイを簡単に取得できます。(ただし、抽出は予想よりも困難です) しかし、各インターフェイスの各ゲートウェイを見つける方法は見つかりませんでした。
具体的には、wlan0 および eth0 インターフェイスがあり、それぞれに独自の標準ゲートウェイがあります。とにかくどこかからそれらを抽出することはありますか。できれば C++ で、Linux ディストリビューションの場合。(具体的にはUbuntu 12.04)
編集:
おそらく私の用語は正しくないので、明確にしようとします:
- ラップトップで wlan0 インターフェイスのみが動作している場合 (つまり、LAN ケーブルを取り外した場合)。
- IP *.*.108.1 のデフォルト ゲートウェイと *.*.108.56 のローカル IP があります。
- イーサネット ケーブルを接続すると、*.*.105.129 のデフォルト ゲートウェイと *.*.105.170 のローカル IP が取得されます。両方のサブネット マスクは 255.255.255.128 です。
それに応じてルーティングテーブルを設定して、両方を使用したいと思います。
ゲートウェイの目的を誤解している場合は、主な目的を説明させてください。
イーサネット ケーブルの代わりにワイヤレス接続を使用するように指定したり、その逆を指定できるようにしたいと考えています。
EDIT2:
これらは、UDP パケットをポート 5555 からリダイレクトして WLAN 経由で送信するために使用するルーティング コマンドです。
iptables -A OUTPUT -o wlan0 -t mangle -p udp --sport 5555 -j MARK --set-mark 1
ip rule add fwmark 1 table 1
ip route add dev wlan0 default via *.*.108.1 table 1
最後のコマンドでは、探しているゲートウェイを提供する必要があります。