IPv6 自定义环回地址并从另一台主机 ping 它

IPv6 自定义环回地址并从另一台主机 ping 它

我可以或者如何在主机 A 的环回接口上添加自定义 IPv6 地址并从主机 B 对其执行 ping 操作?

我尝试添加类似这样的内容::ffff:5:4:3:2,但是ip -6 route说,这个目的地是unreachablewith ,但我可以从主机 A ping 它。例如,error 101当我在 上设置此地址时,路由是可达的,但从主机 B 仍然“无法 ping 通”tap0我不明白环回允许哪些地址、为什么我的自定义无法访问、为什么我可以从主机 A ping 它、如何启用route_localnetIPv6 rp_filter

操作系统:ArchLinux,内核 4.10。

我知道 IPv4 的方法,但 IPv6 的工作方式完全(或不是?)不同。

答案1

是的。正如您可以使用 IPv4 执行此操作一样,这称为路由。您必须告诉一台主机如何到达另一台主机。

假设我们有两个主机,A 和 B。

::1主机 A在环回接口上有其默认环回地址以及您的自定义地址。 (在我的示例中,自定义地址将为fd56:dcaa:2099::1。我从唯一本地地址中选择了该地址。您应该使用 ULA 地址用于此类目的。)

主机A还有一个以太网接口,暂且称之为eth0。在 IPv6 中,它将有一个 IPv6 链路本地地址。它可能有其他 IPv6 地址。您可以通过运行找到这些ip -6 addr eth0。这是我的系统中的一个示例:

$ ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2601:404:ce00:adc0:9d6c:9e16:a9a9:b03b/64 scope global temporary dynamic 
       valid_lft 593594sec preferred_lft 74600sec
    inet6 2601:404:ce00:adc0:bc87:129a:ed5d:814/64 scope global temporary deprecated dynamic 
       valid_lft 78769sec preferred_lft 0sec                                                                                                                                                                                      
    inet6 2601:404:ce00:adc0:1453:3734:6742:4500/64 scope global mngtmpaddr noprefixroute dynamic                                                                                                                                 
       valid_lft 2591820sec preferred_lft 604620sec                                                                                                                                                                               
    inet6 fe80::5520:a68f:5416:a68c/64 scope link                                                                                                                                                                                 
       valid_lft forever preferred_lft forever

该列表中有四个不同的地址(您可能有更多)。出于我们的目的,您需要在其后显示“范围链接”。在我的系统上(在我的示例中也是如此),那就是fe80::5520:a68f:5416:a68c.

在主机B上,我们也有一个接口eth0。为了允许主机 B 到达主机 A 的特殊环回地址,主机 B 需要知道在哪里可以找到它。您可以通过向主机 B 的路由表添加一个条目来做到这一点:

# ip route add fd56:dcaa:2099::1 via fe80::5520:a68f:5416:a68c dev eth0

我们正在做的是告诉主机 B 的内核它可以到达fd56:dcaa:2099::1(主机 A 在其环回接口上的特殊地址)fe80::5520:a68f:5416:a68c(主机 A 在其接口上的链路本地地址eth0),但主机 B 需要尝试fe80::5520:a68f:5416:a68c主机B的 eth0界面。 (这就是链路本地地址的棘手之处。地址本身仅在给定网段的上下文中才有意义。请研究 OSI 网络模型以获取更多详细信息。)

一旦主机 B 的路由表中有该条目,您应该能够从主机 B ping 主机 A 的自定义地址,因为主机 B 现在知道使用主机 A 的链路本地地址作为路由器来到达该地址。

答案2

因为环回地址和接口是在单个主机中的。不适用于与其他设备通信。

相关内容