멀티 홈 Linux 시스템에서 특정 호스트로 패킷을 보내는 데 어떤 네트워크 인터페이스가 사용되는지 어떻게 알 수 있습니까? 프로그래밍 방식 으로이 작업을 수행해야하며 라우팅 테이블을 직접 구문 분석하고 해석하지 않습니다.
답변
ip route
이것을 위해 사용하십시오 . 예를 들어 :
ip route show to match 198.252.206.16
답변
더 짧은 옵션 :
ip route get 172.29.42.94
답변
예, Michael Hampton이 제안한대로을 사용하십시오 ip route
. 인터페이스 만 원한다면 이것을 사용하십시오
ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}'
예를 들면 다음과 같습니다.
# ip=8.8.8.8
# iface=$( ip -o route get $ip | perl -nle 'if ( /dev\s+(\S+)/ ) {print $1}' )
# echo $iface
eth1