将整个IPv6 / 64块添加到debian上的networking接口

我尝试添加一个完整的IPv6(/ 64)块到一个接口使用

ip route add local 2001:41d0:2:ad64::/64 dev lo 

就像在我的Debian服务器上描述的那样,但是我似乎错过了一些东西。

如果我在本地ping例如2001:41d0:2:ad64::fe一切正常,但如果我尝试从远程机器不起作用。 然后我尝试在eth0上添加路由:

 ip route add local 2001::41d0:2:ad64::/64 dev eth0 

现在我甚至无法在本地ping任何示例地址!

我有点失落,因为我似乎失去了一些东西,但我在这里找不到答案。

简而言之:我希望2001:41d0:2:ad64::/64绑定到eth0,这样这个块所包含的每个IP都可以从我的机器上的互联网上获得。

我希望有人能指点我的道路。 提前致谢。

ISP提供的指南要求我明确地将每个IPv6添加到接口。 我希望它是隐含的。

使用明确的IP地址绑定进行工作configuration

的/ etc /networking/接口:

 auto eth0 iface eth0 inet static address my.ip.v4 netmask 255.255.255.0 network my.network.address.ip broadcast my.broadcast.address.ip gateway my.gateway.ip iface eth0 inet6 static address 2001:41d0:2:ad64::fe netmask 64 gateway 2001:41d0:2:adff:ff:ff:ff:ff up ip addr add 2001:41d0:2:ad64::1/64 dev eth0 down ip addr del 2001:41d0:2:ad64::1/64 dev eth0 up ip addr add 2001:41d0:2:ad64::2/64 dev eth0 down ip addr del 2001:41d0:2:ad64::2/64 dev eth0 up ip addr add 2001:41d0:2:ad64::3/64 dev eth0 down ip addr del 2001:41d0:2:ad64::3/64 dev eth0 up ip addr add 2001:41d0:2:ad64::4/64 dev eth0 down ip addr del 2001:41d0:2:ad64::4/64 dev eth0 up ip addr add 2001:41d0:2:ad64::5/64 dev eth0 down ip addr del 2001:41d0:2:ad64::5/64 dev eth0 up ip addr add 2001:41d0:2:ad64::6/64 dev eth0 down ip addr del 2001:41d0:2:ad64::6/64 dev eth0 up ip addr add 2001:41d0:2:ad64::7/64 dev eth0 down ip addr del 2001:41d0:2:ad64::7/64 dev eth0 up ip addr add 2001:41d0:2:ad64::8/64 dev eth0 down ip addr del 2001:41d0:2:ad64::8/64 dev eth0 up ip addr add 2001:41d0:2:ad64::9/64 dev eth0 down ip addr del 2001:41d0:2:ad64::9/64 dev eth0 up ip addr add 2001:41d0:2:ad64::a/64 dev eth0 down ip addr del 2001:41d0:2:ad64::a/64 dev eth0 

解决scheme尝试#1

我试图重新启用本地路由为@ kasperdbuild议。

我的/ etc / network / interfaces的内容

 auto lo iface lo inet loopback post-up ip route add local 2001:41d0:2:ad64::/64 dev lo pre-down ip route del local 2001:41d0:2:ad64::/64 dev lo auto eth0 iface eth0 inet static # <snip of ipv4 config> iface eth0 inet6 static address 2001:41d0:2:ad64::fe netmask 64 gateway 2001:41d0:2:adff:ff:ff:ff:ff 

本地路由表:

 # ip -6 route show table local local ::1 dev lo proto none metric 0 local 2001:41d0:2:ad64::fe dev lo proto none metric 0 local 2001:41d0:2:ad64::/64 dev lo metric 1024 local fe80::225:90ff:fe06:6bbe dev lo proto none metric 0 ff00::/8 dev eth0 metric 256 

traceroute输出(我的本地家用电脑):

  1 <1 ms <1 ms <1 ms fritz.box [xxx] 2 20 ms 21 ms 24 ms 2002:c058:6301::1 3 21 ms 22 ms 24 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470 :0:150::1] 4 44 ms 31 ms 40 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1] 5 * * * Zeitüberschreitung der Anforderung. 6 * * 35 ms ams-5-6k.nl.eu [2001:41d0::8d1] 7 37 ms 39 ms 36 ms rbx-g2-a9.fr.eu [2001:41d0::ab1] 8 37 ms 70 ms 36 ms chi-3-4m.il.us [2001:41d0::176] 9 Zielhost nicht erreichbar. Ablaufverfolgung beendet. 

服务器上的traceroute6

 traceroute to 2001:41d0:2:ad64::23 (2001:41d0:2:ad64::23), 30 hops max, 80 byte packets 1 2001:41d0:2:ad64::a (2001:41d0:2:ad64::a) 0.028 ms 0.009 ms 0.008 ms 

ping6在服务器上:

 PING 2001:41d0:2:ad64::23(2001:41d0:2:ad64::23) 56 data bytes 64 bytes from 2001:41d0:2:ad64::23: icmp_seq=1 ttl=64 time=0.029 ms 64 bytes from 2001:41d0:2:ad64::23: icmp_seq=2 ttl=64 time=0.057 ms ^C --- 2001:41d0:2:ad64:23 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.029/0.043/0.057/0.014 ms 

tcpdump输出(在远程服务器上ping和tracerouting时):

 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 

tracert到网关:

 Routenverfolgung zu vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff] über maximal 3 0 Abschnitte: 1 <1 ms <1 ms <1 ms fritz.box [2002:5476:1b4c:0:c225:6ff:fe40:b2b0] 2 23 ms 22 ms 26 ms 2002:c058:6301::1 3 24 ms 40 ms 23 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470 :0:150::1] 4 28 ms 37 ms 39 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1] 5 * * * Zeitüberschreitung der Anforderung. 6 38 ms 33 ms * ams-5-6k.nl.eu [2001:41d0::8d1] 7 36 ms 39 ms 38 ms rbx-g2-a9.fr.eu [2001:41d0::ab1] 8 36 ms 35 ms 35 ms vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff] Ablaufverfolgung beendet. 

ping到网关:

 Ping wird ausgeführt für 2001:41d0:2:adff:ff:ff:ff:ff mit 32 Bytes Daten: Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=36ms Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=34ms Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=38ms Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=57ms Ping-Statistik für 2001:41d0:2:adff:ff:ff:ff:ff: Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), Ca. Zeitangaben in Millisek.: Minimum = 34ms, Maximum = 57ms, Mittelwert = 41ms 

所以它仍然只是在本地(服务器),而不是从远程(我的电脑)。

    我过去需要类似的东西。 我发现有三个步骤需要这个工作:

    • 您需要将前缀路由到主机
    • 你需要在主机上的本地路由
    • 应用程序需要在套接字上设置IP_FREEBINDIP_TRANSPARENT选项

    将前缀路由到主机的正确方法是联系您的提供商,如果他们还没有提供给您的话。 他们可能有一个DHCPv6服务器,如果你只是发送正确的DHCPv6请求,它可以委托一个前缀给你。

    如果真正路由的前缀由于某些原因不可能得到,但是您可以根据需要从一个networking接口上的链路前缀中使用尽可能多的地址,则可以将其中的一部分转换为路由前缀有一个守护进程响应该范围内每个IPv6地址的邻居发现请求。

    除了作为最后的手段之外,不build议使用这样的守护进程,因为它将不必要地消耗来自所有邻居的内存。 有这样一个守护进程的一些实现,看起来有保证的是ndppd 。 (我没有具体的使用经验,因为在我用自己的链接前缀进行硬编码后,我才了解了它。)

    看起来你已经有本地路线工作。 正如你注意到的,它必须被分配到lo界面才能工作。

    最后,使用此范围内的地址的应用程序需要一个IP选项,以便能够绑定到未明确分配给主机上特定networking接口的地址。 这是一个代码片段,可以使用:

     const int one = 1; setsockopt(fd, SOL_IP, IP_FREEBIND, &one, sizeof(one));