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

umo*_*mop 8 mac-osx ip-address ifconfig interface osx-lion

我确定之前已经问过并回答过这个问题,但我找不到它,所以希望这至少可以将某人链接到正确的地方。

我想找出用于访问某个主机的本地接口和 IP 地址。例如,如果我有 3 个适配器连接到我的盒子,并且它们都连接到不同的网络,我想知道这三个中的哪一个(特别是它的 IP 地址)用于访问 my.local.intranet(在这个在这种情况下,它将是一个 vpn 隧道接口)。我怀疑这是 ifconfig 或 traceroute 的工作,但我一直无法找到正确的开关。

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

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

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

欢迎任何改进/优化。

小智 15

route -n 获取 www.yahoo.com

我正在运行 os x 10.6.8


Uni*_*426 7

您可以尝试“路由”来打印您的路由表,该表将显示各种接口的目标网络和网关。

如果 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. ...
Run Code Online (Sandbox Code Playgroud)

  • 我确实最终使用了路线。谢谢你。这是我的最终命令:`ifconfig \`route get &lt;host&gt; | grep "接口:" | sed "s/[^:]*: \(.*\)/\1/"\` | grep "inet" | sed "s/.*inet \([0-9.]*\) .*/\1/"`。这有效,但欢迎任何建议/优化。 (2认同)

mgo*_*ven 5

您可以使用它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
Run Code Online (Sandbox Code Playgroud)