不支持的地址方法“v4tunnel”

Kum*_*Tea 6 ubuntu ipv6 tunnel

我正在尝试创建一个到HE.net 的隧道,以在我的(云)服务器上获取 IPv6 地址。

当我创建隧道并将其放入时/etc/network/interfaces

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address <my IPv6 address>
        netmask 64
        endpoint 66.220.7.82
        local <my IPv4 address>
        ttl 255
        gateway <my gateway>
Run Code Online (Sandbox Code Playgroud)

然后ifup he-ipv6,我得到:

error: /etc/network/interfaces: line5: iface he-ipv6: unsupported address method 'v4tunnel'
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

操作系统是Ubuntu 18.04.3.

(我试图搜索这个错误,但似乎没有人遇到过这个错误。但我已经在不同提供商的两台单独的机器上进行了尝试,结果是相同的。)


更新:添加图片以了解详细信息:

点击这个


更新2:添加netplan图片:

点击这个


结论:问题是由 引起的ifupdown2

A.B*_*A.B 4

ifupdownifupdown2

从您的错误消息来看,您正在使用包ifupdown2而不是ifupdown。两者都可以在 Ubuntu 上使用,但在线联机帮助页仅显示一个版本,我猜是默认安装的,这可以解释为什么您最终使用ifupdown2

  • Ubuntu 16.04 LTS:接口(5)

    提供者:ifupdown_0.8.10ubuntu1_amd64
    [...]

    作者
    ifupdown 套件由 Anthony Towns <aj@azure.humbug.org.au> 编写。

  • Ubuntu 18.04 LTS:接口(5)

    提供者:ifupdown2_1.0~git20170314-1_all
    [...]

    作者
    Roopa Prabhu <roopa@cumulusnetworks.com>

虽然ifupdown2是Cumulus Networks 开发的ifupdown 的替代品,改进了对现代网络功能的支持,但存在一些语法不兼容的情况。

因此,要么安装ifupdown而不是ifupdown2,要么调整我在下面给出的配置。


什么隧道?

原来的ifupdown提供了v4tunnel方法

v4隧道方法

该方法可用于建立IPv6-over-IPv4隧道。它需要 iproute 包中的 ip 命令。

ifupdown设置运行这些实际命令

ip tunnel add he-ipv6 mode sit remote 66.220.7.82 local <my IPv4 address> ttl 255
ip link set he-ipv6 up
ip addr add <my IPv6 address> dev he-ipv6
ip route add <my gateway> dev he-ipv6
ip route add ::/0 via <my gateway> dev he-ipv6 onlink
Run Code Online (Sandbox Code Playgroud)

所以我们知道这是一条SIT隧道。


使用ifupdown2

ifupdown2不提供v4tunnel方法,并且缺少替换tunnel方法的文档,该方法应该在 中进行描述,man ifupdown-addons-interfaces但没有。仍然可以从 获取ifquery --syntax-help。以下是摘录(来自 Ubuntu 18.04 版本):

tunnel: create/configure GRE/IPIP/SIT tunnel interfaces
[...]
  endpoint
    help: IP of remote tunnel endpoint
    required: True
    validvals: <ipv4>,<ipv6>
    example:
      endpoint 192.2.0.23
  local
    help: IP of local tunnel endpoint
    required: True
    validvals: <ipv4>,<ipv6>
    example:
      local 192.2.0.42
  mode
    help: type of tunnel as in 'ip link' command.
    required: True
    validvals: greipip,sit
    example:
      mode gre
  ttl
    help: TTL for tunnel packets
    required: False
    validvals: <number>
    example:
      ttl 64
Run Code Online (Sandbox Code Playgroud)

请注意,模式值中有一个拼写错误(应该是gre,ipip,sit)。较新的版本将处理更多模式(无论如何我们已经可用sit):

    validvals: gre,gretap,ipip,sit,vti,ip6gre,ipip6,ip6ip6,vti6
Run Code Online (Sandbox Code Playgroud)

这给出了这个工作配置:

auto he-ipv6
iface he-ipv6 inet6 tunnel
        mode sit
        address <my IPv6 address>
        netmask 64
        endpoint 66.220.7.82
        local <my IPv4 address>
        ttl 255
        gateway <my gateway>
Run Code Online (Sandbox Code Playgroud)

区别在于通用tunnel方法和您使用关键字指定隧道的类型mode