在多宿主 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