인터넷에 연결하기 위해 어떤 인터페이스를 사용하고 있는지 어떻게 알 수 있나요?

인터넷에 연결하기 위해 어떤 인터페이스를 사용하고 있는지 어떻게 알 수 있나요?

나는 가지고 eth0있고 wlan0그에 따라 ifconfig할 수 있습니다 ping google.com.

일반 사용자의 경우 root어떤 인터페이스를 어떻게 찾을 수 있습니까?긍정적인예를 들어, ping(또는 필수가 아닌 기타 ping)은 어떤 인터페이스를 사용합니까?

Ubuntu 11.04 또는 Fedora 14를 사용하고 있습니다.

답변1

route다음 명령을 사용하여 기본 경로를 찾을 수 있습니다.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Iface대상 행의 열은 default사용할 인터페이스를 알려줍니다.

답변2

내 버전은 기본적으로 다음을 기반으로합니다.이것그리고이것:

route | grep '^default' | grep -o '[^ ]*$'

이,실험장, macOS의 경우:

route -n get default | grep 'interface:' | grep -o '[^ ]*$'

답변3

GNU/Linux 시스템의 경우:

#!/bin/sh

# host we want to "reach"
host=google.com

# get the ip of that host (works with dns and /etc/hosts. In case we get  
# multiple IP addresses, we just want one of them
host_ip=$(getent ahosts "$host" | awk '{print $1; exit}')
    
# only list the interface used to reach a specific host/IP. We only want the part
# between dev and the remainder (use grep for that)
ip route get "$host_ip" | grep -Po '(?<=(dev ))(\S+)'

답변4

일반적으로 명시적으로 라우팅되는 DMZ, 개인 네트워크, VM 호스트 등과 달리 "나머지" 인터넷으로 라우팅하는 데 일반적으로 사용되는 기본 네트워크 인터페이스를 가져옵니다.

$ ip route get 8.8.8.8 | sed -n 's/.* dev \([^\ ]*\) .*/\1/p'
eth0

관련 정보