netstat/ifconfigとipが利用できない場合のデフォルトゲートウェイの取得方法は?

netstat/ifconfigとipが利用できない場合のデフォルトゲートウェイの取得方法は?

ipだから私はcentosまたはubuntu dockerコンテナを持っていますが、netstattoがないことがわかりましたifconfig。追加パッケージをインストールしたくありません。上記のコマンドのいずれも機能しない場合、デフォルトゲートウェイを取得する方法はありますか?

PSコンテナからDockerホストにアクセスする方法を知るには、デフォルトゲートウェイが必要です。

答え1

@dirktが述べたように、デフォルトのルートテーブルはすべての最新のLinuxシステムでテキスト形式で保存されますが、/proc/net/route残念ながらIPアドレスは(逆方向)16進数で保存されます。 Bashハッキングと助けを借りて、これを人間が読めるIPアドレスに変換できますawksed

for i in $(echo "$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do printf "%d." $((16#$i)); done | sed 's/.$//' 

以下は、同じアイデアをより読みやすい(複数行)のバージョンです。

#!/usr/bin/env bash
get-default-gateway() {
  default_route_ip="$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')"

  hex-ip-to-dec-ip "$default_route_ip"
}

hex-ip-to-dec-ip() {
  local hex_ip="$1" 
  for i in $(echo "$hex_ip" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do 
    printf "%d." $((16#$i));
  done | sed 's/.$//' 
}

get-default-gateway

答え2

cat /proc/net/route同様に、デフォルトゲートウェイを含む完全なルーティングテーブルを提供しますip route。ただし、IPアドレスは16進数でバイトが反転しています。

答え3

CentOSでは、以下からデフォルトゲートウェイの詳細を取得できます。/etc/sysconfig/ネットワーク文書

答え4

あなたはそれを使用することができます路線注文する:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth1

関連情報