获取用于连接到特定主机(ip)的接口和ip地址

我确信之前已经有人问及这个问题,但是我没有find答案,所以希望这至less能把某个人连接到正确的地方。

我想找出我的本地接口和IP地址用于达到某个主机。 例如,如果我有3个适配器连接到我的盒子,他们三个去了不同的networking,我想知道三个(具体来说,它的IP地址)是用来达到my.local.intranet(在这个情况下,这将是一个VPN隧道接口)。 我怀疑这是一个ifconfig或traceroute的工作,但我一直没能find正确的开关。

我正在运行OSX 10.7(达尔文)

编辑:为了方便访问,这就是我最终写的要完成的技巧:

ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/" 

任何改进/优化是受欢迎的。

你可以尝试“路由”来打印你的路由表,它会显示你的各种接口的目标networking和网关。

如果IP地址不能帮助您轻松确定接口,则在运行路由之后运行“traceroute”,查看第一跳,并将其与“路由”中关联的网关进行比较,然后就是您的接口。

 #route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 145.67.4.0 switch47 255.255.255.0 U 0 0 eth0 192.168.1.0 localrouter 255.255.255.0 U 0 0 eth1 #traceroute <destination> 1 switch47.ba.foo.com (145.67.4.1) 0.5 ms ..... 2 xxxxx.xxx.xxxx (xxx.xxx.xxx.xxx) 0.Xms. ... 

路线-n得到www.yahoo.com

我正在运行os x 10.6.8

您可以使用ip route get来查找并输出将用于指定目的地的路由。 输出应该包括接口和源地址。

 % ip route get 8.8.8.8 8.8.8.8 via 172.16.4.1 dev eth1 src 172.16.4.36 

我不确定这是否正确,但netstat可能会这样做。 它显示build立连接的本地地址。

 # netstat -nt Proto Recv-Q Send-Q Local Address Foreign Address State ... tcp 0 0 192.168.1.61:44114 64.34.119.101:80 ESTABLISHED tcp 0 0 192.168.1.61:36036 107.21.205.201:80 ESTABLISHED