Ubuntu

不支持的地址方法“v4tunnel”

  • February 13, 2020

我正在嘗試創建通往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>

然後ifup he-ipv6,我得到了:

error: /etc/network/interfaces: line5: iface he-ipv6: unsupported address method 'v4tunnel'

我怎樣才能解決這個問題?

作業系統是Ubuntu 18.04.3.

(我試圖搜尋這個錯誤,但似乎沒有人擁有它。但我已經在不同供應商的兩台不同的機器上嘗試過,結果是一樣的。)


更新:添加圖片了解詳情:

點擊這裡


更新2:添加一張netplan的圖片:

點擊這裡


結論:問題是由**ifupdown2**.

ifupdownifupdown2

從您的錯誤消息中,您使用的是包ifupdown2而不是ifupdown。兩者都在 Ubuntu 上可用,但線上手冊頁只顯示一個版本,我猜是預設安裝的,這可以解釋為什麼你最終使用ifupdown2

提供者:ifupdown_0.8.10ubuntu1_amd64

$$ … $$ 作者

ifupdown 套件由 Anthony Towns <aj@azure.humbug.org.au> 編寫。

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

$$ … $$ 作者

Roopa Prabhu <roopa@cumulusnetworks.com>

雖然ifupdown2是Cumulus Networks 開發的ifupdown 的替代品,並且改進了對現代網路功能的支持,但存在一些語法不兼容。

所以要麼安裝ifupdown而不是ifupdown2,要麼調整配置,我在下面給出。


什麼隧道?

原來的ifupdown提供了v4tunnel 方法

v4tunnel 方法

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

ifupdown設置執行這些實際命令:

ip tunnel add he-ipv6 mode sit remote 66.220.7.82 local &lt;my IPv4 address&gt; ttl 255
ip link set he-ipv6 up
ip addr add &lt;my IPv6 address&gt; dev he-ipv6
ip route add &lt;my gateway&gt; dev he-ipv6
ip route add ::/0 via &lt;my gateway&gt; dev he-ipv6 onlink

所以我們知道這是一個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: &lt;ipv4&gt;,&lt;ipv6&gt;
    example:
      endpoint 192.2.0.23
  local
    help: IP of local tunnel endpoint
    required: True
    validvals: &lt;ipv4&gt;,&lt;ipv6&gt;
    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: &lt;number&gt;
    example:
      ttl 64

請注意,模式值中有一個錯字(應該是gre,ipip,sit)。較新的版本將處理更多模式(無論如何我們已經有sit):

    validvals: gre,gretap,ipip,sit,vti,ip6gre,ipip6,ip6ip6,vti6

這給出了這個工作配置:

auto he-ipv6
iface he-ipv6 inet6 tunnel
       mode sit
       address &lt;my IPv6 address&gt;
       netmask 64
       endpoint 66.220.7.82
       local &lt;my IPv4 address&gt;
       ttl 255
       gateway &lt;my gateway&gt;

不同之處在於通用方法,並且您使用關鍵字tunnel指定隧道的類型。mode

引用自:https://serverfault.com/questions/1002230