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