【问题标题】:Source address selection in IPv6 [duplicate]IPv6中的源地址选择[重复]
【发布时间】:2014-05-08 05:04:20
【问题描述】:

要从可用的多个 ipv6 地址中确定首选源地址,我可以使用以下命令 ip -6 route destaddr。 我的问题是 ip 是一个实用程序,是否有任何系统调用或库 API 可用。因为我的全部任务是使用任何系统调用或库 API 确定源地址。然后在我的应用程序中使用它。

【问题讨论】:

  • 路由信息是动态变化的,所以只有事后才真正知道经过了哪些接口信息。您可以使用IPV6_PKTINFO 套接字选项使用recvmsg 检索接收数据包的目标地址作为控制消息。

标签: c linux ipv6


【解决方案1】:

没有得到您的确切要求。如果您想知道自己的系统 IP,那么您可以尝试其中任何一个。

  • ifconfig
  • ip addr show
  • ip addr show eth0
  • hostname -i

或者您可以将任何 ipv6 ip 地址设置为 interface(eth0) 并使用这些命令您可以知道地址。

  • /sbin/ip -6 addr show dev eth0
  • /sbin/ifconfig <interface>

【讨论】:

  • 他在询问是否有 C API 可以在不借助外部程序的情况下找到相同的结果。如果您没有得到问题的确切要求,建议您发表评论并要求澄清而不是写答案。
  • 计算机可以连接到多个网络并拥有多个 IP 地址。 OP 想知道到某个给定目标地址的最短路径的接口的 IP 地址,而不调用外部程序。
  • @zneak 是的,我应该先问。但正如你所说,那么它可以是基于算法的,如生成树或 OSPF
  • @zneak 你说对了。 @ rohit ip -6 route get DstAddr 返回我最喜欢的可用于此 DstAddr 的本地 ip。但是 ip 是一个实用程序,我想要的是一个可以为我执行此操作的系统调用/库 API。我想要这个的原因是在我的应用程序中我使用了第三方堆栈。在发送数据的应用程序中,我需要命令该堆栈使用本地 ips 之一发送数据。因此在发送数据之前我需要知道可以使用的最合适的源地址。
  • @pratik03 getaddrinfo 将返回 IP 地址。 link 但它是否会找到最合适的那个是问题。
【解决方案2】:

希望对你有所帮助,Linux会在ip地址的接口中将最新的ip地址作为源地址,Linux实现了这一点

http://www.rfc-editor.org/rfc/rfc3484.txt

selsction 算法。该算法首先为源地址创建潜在的 ip 地址列表。 有关更多信息,请查看此

http://www.davidc.net/networking/ipv6-source-address-selection-linux.

【讨论】:

  • 你给我的其实是一个源地址选择算法。我很好。我想要的系统调用/库 API 可以执行您在此处描述的相同算法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多