ip
だから私はcentosまたはubuntu dockerコンテナを持っていますが、netstat
toがないことがわかりましたifconfig
。追加パッケージをインストールしたくありません。上記のコマンドのいずれも機能しない場合、デフォルトゲートウェイを取得する方法はありますか?
PSコンテナからDockerホストにアクセスする方法を知るには、デフォルトゲートウェイが必要です。
答え1
@dirktが述べたように、デフォルトのルートテーブルはすべての最新のLinuxシステムでテキスト形式で保存されますが、/proc/net/route
残念ながらIPアドレスは(逆方向)16進数で保存されます。 Bashハッキングと助けを借りて、これを人間が読めるIPアドレスに変換できますawk
。sed
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