AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 590038
Accepted
Hikaru-Shindo
Hikaru-Shindo
Asked: 2014-04-19 16:55:34 +0800 CST2014-04-19 16:55:34 +0800 CST 2014-04-19 16:55:34 +0800 CST

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

  • 772

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

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

就像在我的 Debian 服务器上描述的一样,但我似乎遗漏了一些东西。

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

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

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

我有点迷茫,因为我似乎遗漏了一些东西,但我在这里找不到答案。

简而言之:我想2001:41d0:2:ad64::/64绑定到 eth0,这样这个块包含的每个 IP 都可以从我机器上的 Internet 访问。

我希望有人能指出我正确的方法。提前致谢。

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

具有显式 IP 地址绑定的工作配置

/etc/网络/接口:

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

解决方案尝试#1

我尝试按照@kasperd 的建议重新启用本地路由。

我的 /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 和跟踪路由时):

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

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

ipv6 linux-networking debian-wheezy
  • 2 2 个回答
  • 11778 Views

2 个回答

  • Voted
  1. Best Answer
    kasperd
    2014-04-26T14:05:28+08:002014-04-26T14:05:28+08:00

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

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

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

    如果由于某种原因您无法获得真正的路由前缀,但您可以从您的一个网络接口上可用的链接前缀访问任意数量的地址,您可以通过以下方式将其中的一部分转换为路由前缀让守护进程响应该范围内每个 IPv6 地址的邻居发现请求。

    不建议使用这样的守护进程,除非作为最后的手段,因为它会不必要地消耗所有邻居的内存。这种守护进程有一些实现,看起来很有希望的是ndppd。(我没有具体的经验,因为我是在用硬编码的链接前缀编写自己的代码后才知道的。)

    看起来你已经让本地路线工作了。正如您所注意到的,它必须分配给lo接口才能工作。

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

    const int one = 1;
    setsockopt(fd, SOL_IP, IP_FREEBIND, &one, sizeof(one));
    
    • 17
  2. Alexander Gnatyna
    2019-06-18T04:58:46+08:002019-06-18T04:58:46+08:00

    现在是2019年。一个词:ip_nonlocal_bind(我可能知道从 4.3 内核开始)。

    使用 ndppd + sysctl net.ipv6.ip_nonlocal_bind = 1,最后一个允许您绑定到任何 IPv6 地址(在这种情况下不需要 IP_FREEBIND)。

    猜你是这样做的:

    ip add add local 2001::41d0:2:ad64::/64 dev lo
    ip route add local 2001::41d0:2:ad64::/64 dev eth0
    sysctl  net.ipv6.ip_nonlocal_bind = 1
    

    ndppd.conf 看起来像:

    route-ttl 30000
    
    proxy eth0 {
    
       router no
    
       timeout 500
       ttl 30000
       rule 2001::41d0:2:ad64::/64{
           static
       }
    }
    

    运行 ndppd,现在您可以绑定到任何地址(添加的块)并使用它,因为它添加了自己。

    • 6

相关问题

  • IPv6 有哪些好的 IP 地址管理解决方案?[关闭]

  • 连接到 NAT 后启用 Teredo 的服务器

  • IPv4管理员的IPv6介绍[关闭]

  • 什么是支持 IPv6 胶水的又好又便宜的注册商?

  • 使用多少 IP V6 寻址?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve