查找到特定主机的路由接口

查找到特定主机的路由接口

在多宿主 Linux 机器上,如何找出将使用哪个网络接口将数据包发送到特定主机?我需要以编程方式执行此操作,而不想自己解析和解释路由表。

答案1

用于ip route此。例如:

ip route show to match 198.252.206.16

答案2

较短的选项:

ip route get 172.29.42.94

答案3

是的,正如 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

相关内容