【问题标题】:How to curl using IPv6 address?如何使用 IPv6 地址进行卷曲?
【发布时间】:2023-03-07 10:17:01
【问题描述】:

我有一个分配有 /64 IPv6 的 VPS。当我尝试使用块中的一个 IP 进行卷曲时,这是我得到的错误:

curl --interface '2a02:c207:2010:1077::2' http://example.com
curl: (45) bind failed with errno 99: Cannot assign requested address

我究竟需要做什么来解决这个问题?以root身份登录时,我不应该能够使用机器上的任何IP吗?

基本上,我只需要能够使用分配给 VPS 的任何 IPv6 进行卷曲。

【问题讨论】:

  • “分配有 /64 IPv6”是什么意思?是否有配置为使用相关 IPv6 地址的网络接口?您是在告诉 curl 使用具有该地址的接口。

标签: linux shell curl


【解决方案1】:

经过一些测试,我发现以下命令有效:

$ curl -g -6 'http://[fe80::3ad1:35ff:fe08:cd%eth0]:80/'

interface 'eth0' 是启用了 ipv6 的接口,因此您可能需要将其替换为其他接口。

为了以防万一,测试 ipv6 的 telnet 命令:

$ telnet -6 fe80::3ad1:35ff:fe08:cd%eth0 80

【讨论】:

    【解决方案2】:

    来自man curl

    --interface 指定接口,例如eth0:1

    curl --interface eth0 -g -6 'http://[2606:2800:220:1:248:1893:25c8:1946]:80/index.html' -H 'Host: www.example.com'
    

    感觉就像您期望 curl 操纵您机器的界面以添加然后使用特定的 /128 ?如果您愿意,您可能必须编写自己的 shell 包装器。

    【讨论】:

    • @Kenster 询问如何在 curl 中使用特定的 ipv6 地址
    • 是的。我解释说他们正在查看错误的 ISO OSI 层。 curl 只是让您指定哪个接口。如果你想设置 IPv6 源地址,你需要一些 not curl 来设置它。
    • 您的 Apache 是否启用了 IPv6? Apache 日志说明了什么?
    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 2010-12-31
    • 2011-09-17
    • 1970-01-01
    • 2017-11-09
    • 2017-04-11
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多