https://naba-san.hatenablog.com/


Ubuntu 20.04 で 6to4

WebARENA Indigo VPSUbuntu 20.04 LTS をインストールした環境に 6to4 (IPv6) をセットアップしたのでメモ。

 6to4、古の技術と化してて日本語の情報がほぼ無いんですよね。(Indigoがネイティブ対応してくれたらそれで事足りるんだけど‥激安なので文句は言えない。)

 

概要

最初参考にしたページには /etc/network/interfaces にI/F追加しろって書かれてた。
懐かしい。

6to4によるIPv6接続(Linux編) – さくらインターネット研究所

 

20.04 は仕組みが変わり、netplan が使われてるそうで6to4の日本語の設定事例がない‥(初めて使った)。
色々漁って見つけたのがこの情報。結論を書くと、ほぼこの手順のままでおっけー。

HowTo 6to4 NetPlan · Wiki · Максим В. / WikiNotes · GitLab

 

前提

グローバル アドレスが Ubuntu 環境に直接割り振られていること。

手順

# cd /etc/netplan
# ls -l

-rw-r--r-- 1 root root 572 May 7 01:37 50-cloud-init.yaml

手元の環境では、初期構成で「50-cloud-init.yaml」にインタフェースの設定値が登録されていた。この辺はVPSとかだと多少違うかも。
このファイルは勝手に書き換えられる可能性がある為、直接編集してはいけない。

 

トンネルに使うIPv4アドレス情報を取得する。

# ip a

(略)
2: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:13:5d:**:**:** brd ff:ff:ff:ff:ff:ff
inet 164.70.***.**/24 brd 164.70.***.*** scope global ens10
valid_lft forever preferred_lft forever
inet6 fe80::213:5dff:fe13:4c34/64 scope link
valid_lft forever preferred_lft forever

今回は「164.70.***.**」がVPSに割り振られているアドレス。

 

IPv4 グローバル アドレスから、6to4用の IPv6 アドレスを計算する。

# printf "2002:%02x%02x:%02x%02x::1\n" 164 70 *** **
2002:a446:****::1

 

トンネル インタフェース定義を追加。

# cd /etc/netplan
# vim 90-6to4.yaml

network:
    version: 2
    tunnels:
    tun6to4:
        optional: true
        mode: sit
        remote: 0.0.0.0
        local: 164.70.***.**
            addresses:
            - 2002:a446:****::1/16
        routes:
            - to: "2000::/3"
        via: "::192.88.99.1"
        metric: 1 

# netplan apply

netplanを初めて使うので、詳しい事はわからないけど、、

  • local: トンネルを終端する IPv4 アドレス。
    NAT/NAPT 環境の場合はローカル アドレスを指定するらしい。
  • address: 先ほど計算した IPv6 アドレスを指定。
  • via: 6to4 の中継ルーター、固定。
  • routes: IPv6 のルート。2000に縛る必要ない気もする。 あ、これグローバルアドレスに縛ってるだけですね。

 

ちなみに、modeに指定できる値はこの辺参照。ipipとかも設定できそう。
An introduction to Linux virtual interfaces: Tunnels - Red Hat Developer

 

なお脱線ですが、18.04 標準の netplan だと tunnel が使えないそうです。

Ubuntu Server 18.04(Bionic Beaver)でトンネルインターフェースを定義する | DevelopersIO

 

接続確認

試しに www.google.com にIPv6PING

$ ping -6 -c 3 www.google.com
PING www.google.com(nrt12s22-in-x04.1e100.net (2404:6800:4004:80c::2004)) 56 data bytes
64 bytes from nrt12s22-in-x04.1e100.net (2404:6800:4004:80c::2004): icmp_seq=1 ttl=121 time=2.08 ms
64 bytes from nrt12s22-in-x04.1e100.net (2404:6800:4004:80c::2004): icmp_seq=2 ttl=121 time=1.82 ms
64 bytes from nrt12s22-in-x04.1e100.net (2404:6800:4004:80c::2004): icmp_seq=3 ttl=121 time=1.53 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.531/1.812/2.084/0.225 ms

比較用にIPv4PING

$ ping -4 -c 3 www.google.com
PING www.google.com (172.217.31.164) 56(84) bytes of data.
64 bytes from nrt12s22-in-f4.1e100.net (172.217.31.164): icmp_seq=1 ttl=117 time=1.11 ms
64 bytes from nrt12s22-in-f4.1e100.net (172.217.31.164): icmp_seq=2 ttl=117 time=1.29 ms
64 bytes from nrt12s22-in-f4.1e100.net (172.217.31.164): icmp_seq=3 ttl=117 time=1.15 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.111/1.185/1.290/0.076 ms

リレールーター挟んでる割には、遅延は1ms以下に収まってて、そこまで悪くない感じ。

 

速度計測できず。

計測したかったんだけど、手持ちの Vultr VPS(Native IPv6対応) とv6で疎通確認が取れず。Vultrからping叩くとunreachable とか帰ってくるので、Vultr側の問題っぽいんだけど‥

$ traceroute6 2002:a446:****::1

traceroute to 2002:a446:****::1 (2002:a446:****::1), 30 hops max, 80 byte packets
1 * * *
2 2001:19f0:7000:c640::1 (2001:19f0:7000:c640::1) 0.839 ms 0.859 ms 0.921 ms
3 vl504-ds1-q8.tyo2.constant.com (2001:19f0:fc00::a47:111) 1.812 ms vl814-ds2-q8.tyo2.constant.com (2001:19f0:fc00::a47:1c9) 1.395 ms vl504-ds1-q8.tyo2.constant.com (2001:19f0:fc00::a47:111) 1.768 ms
4 vl70-er1-q2.tyo2.constant.com (2001:19f0:fc00::a47:2e9) 17.231 ms !H vl20-er1-q2.tyo2.constant.com (2001:19f0:fc00::a47:f5) 17.162 ms !H 2001:19f0:7000::a47:33d (2001:19f0:7000::a47:33d) 0.470 ms !H

 

$ ping6 -c 3 2002:a446:****::1

PING 2002:a446:****::1(2002:a446:****::1) 56 data bytes
From 2001:19f0:fc00::a47:2e9 icmp_seq=1 Destination unreachable: Address unreachable
From 2001:19f0:fc00::a47:2e9 icmp_seq=3 Destination unreachable: Address unreachable

--- 2002:a446:****::1 ping statistics ---
3 packets transmitted, 0 received, +2 errors, 100% packet loss, time 2001ms

6to4 って、相手事業者によって疎通できない相手がいるっぽいですね‥(致命的じゃね?)

 

参考

research.sakura.ad.jp

gitlab.com

developers.redhat.com

dev.classmethod.jp