LoginSignup
6
7

More than 5 years have passed since last update.

NAT 配下の IPv4 環境から SoftEther で繋いだ Conoha VPS 経由で IPv6 を使う

Last updated at Posted at 2017-02-05

 IPv4 でも踊る亀が見たかったのでやりました。
 自分が今使っているインターネットへのアクセスラインは、レオネットです。バックボーンは OCN 光の 100Mbps のようですが、LAN 内へは IPv4 のクラス A プライベート IPアドレスがひとつ降って来る環境です。

目的

 IPv4 の接続ルートは維持しつつ、IPv6 リーチャビリティを個人契約の Conoha VPS 経由で確保します。KAME Project へアクセスして、亀が踊っていれば成功です。
 なお、RA や DHCPv6 での LAN 向けアドレス配布は、対象の PC が 1 台であることからしないこととします。

構成

 PC---(BBRT)--(GW)---(IPv4 Internet)---VPS---(IPv6 Internet)

  • GWはBBRT向けにクラスAプライベートアドレスを、BBRTはLAN向けにクラスCアドレスを、それぞれDHCPで配布しています。

環境

  • Conoha VPS 512MB プラン - Ubuntu 16.04
  • Windows 10 Pro バージョン 1607 x64

IPv6 アクセスのための他の案

  • VPS に squid を入れる :IPv6 だけを proxy する設定ができない
  • グローバル固定 IPv6 割当サービス (http://v6ip.tsukuba.wide.ad.jp/) :スループットは 10Mbps 程度で普通 ([^1]: 簡単なのでこちらもおすすめです)

Conoha 経由で IPv6

事前に準備すること

  • Ubuntu 16.04 512M プラン
  • VPS側 softether server x64 を導入
    • ローカルブリッジに tap を選択
  • PC側 softether bridge を導入
    • ローカルブリッジにLANカードを選択
    • AAAA レコードを返してくれる DNS サーバを IPv4 側に設定 [^2]:8.8.8.8 とか。

Windows側でリンクローカルアドレス確認

 事前準備で、VPS の tap とPCのリンクローカルアドレスには、双方 Ping が通るようになっているはずです。

  • fe80::313a:ed15:ba07:9d97 :PC側リンクローカルアドレス
C:\WINDOWS\system32>ipconfig

Windows IP 構成

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 
   リンクローカル IPv6 アドレス. . . . .: fe80::313a:ed15:ba07:9d97%8
   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.1
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.1.254

VPS に入れるコマンド

まず、ifconfig で IPv6 アドレスを選定。今回は 16 個の追加アドレスのうち、末尾 0 のアドレスにしました。
それから、tap のリンクローカルアドレスを確認します。

  • 2400:8500:1301:740:a133:XXX:XXX:2330/64
  • fe80::2ac:e6ff:fe70:86e/64
root@conoha:~# ifconfig
ens3      Link encap:Ethernet  HWaddr 02:01:85:82:5a:e9  
          inet addr:133.XXX.XXX.233  Bcast:133.XXX.XXX.255  Mask:255.255.254.0
          inet6 addr: 2400:8500:1301:740:133:XXX:XXX:233/128 Scope:Global
          inet6 addr: fe80::1:85ff:fe82:5ae9/64 Scope:Link
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233d/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233c/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233b/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233a/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2339/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2338/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2337/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2336/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2335/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2334/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2333/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2332/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2331/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:2330/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233f/64 Scope:Global
          inet6 addr: 2400:8500:1301:740:a133:XXX:XXX:233e/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1749880 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1605631 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1244575191 (1.2 GB)  TX bytes:1296402001 (1.2 GB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1851 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1851 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:145837 (145.8 KB)  TX bytes:145837 (145.8 KB)

tap_tap   Link encap:Ethernet  HWaddr 00:ac:e6:70:08:6e  
          inet6 addr: fe80::2ac:e6ff:fe70:86e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:485387 errors:0 dropped:25 overruns:0 frame:0
          TX packets:786393 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:121082207 (121.0 MB)  TX bytes:998594524 (998.5 MB)

 次に、VPS の IPv6 デフォルトルート(デフォルトゲートウェイ)を確認します。Flag が GD で ::/0 の、Next Hop がそれです。

  • fe80::740:1
root@conoha:~# route -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2400:8500:1301:740:133:XXX:XXX:233/128 ::                         U    256 0     0 ens3
2400:8500:1301:740::/64        ::                         U    256 1     6 ens3
fe80::/64                      ::                         U    256 1  3443 ens3
fe80::/64                      ::                         U    256 1    10 tap_tap
::/0                           fe80::740:1                UGDAe 1024 1485218 ens3
::/0                           ::                         !n   -1  11187467 lo
::1/128                        ::                         Un   0   2   124 lo
2400:8500:1301:740::/128       ::                         Un   0   1     0 lo
2400:8500:1301:740:133:XXX:XXX:233/128 ::                         Un   0   2    10 lo
2400:8500:1301:740:a133:XXX:XXX:2331/128 ::                         Un   0   2    44 lo
2400:8500:1301:740:a133:XXX:XXX:2332/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2333/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2334/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2335/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2336/128 ::                         Un   0   2     1 lo
2400:8500:1301:740:a133:XXX:XXX:2337/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2338/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:2339/128 ::                         Un   0   1     0 lo
2400:8500:1301:740:a133:XXX:XXX:233a/128 ::                         Un   0   2     1 lo
2400:8500:1301:740:a133:XXX:XXX:233b/128 ::                         Un   0   2    93 lo
2400:8500:1301:740:a133:XXX:XXX:233c/128 ::                         Un   0   2    72 lo
2400:8500:1301:740:a133:XXX:XXX:233d/128 ::                         Un   0   2    11 lo
2400:8500:1301:740:a133:XXX:XXX:233e/128 ::                         Un   0   2   278 lo
2400:8500:1301:740:a133:XXX:XXX:233f/128 ::                         Un   0   2 11889 lo
fe80::/128                     ::                         Un   0   1     0 lo
fe80::/128                     ::                         Un   0   1     0 lo
fe80::1:85ff:fe82:5ae9/128     ::                         Un   0   2  1693 lo
fe80::2ac:e6ff:fe70:86e/128    ::                         Un   0   2  4886 lo
ff00::/8                       ::                         U    256 1 27191 ens3
ff00::/8                       ::                         U    256 1  3071 tap_tap
::/0                           ::                         !n   -1  11187467 lo

root@conoha:~# ip -6 route
2400:8500:1301:740:133:XXX:XXX:233 dev ens3  proto kernel  metric 256  pref medium
2400:8500:1301:740::/64 dev ens3  proto kernel  metric 256  pref medium
fe80::/64 dev ens3  proto kernel  metric 256  pref medium
fe80::/64 dev tap_tap  proto kernel  metric 256  pref medium
default via fe80::740:1 dev ens3  proto ra  metric 1024  expires 1726sec hoplimit 64 pref high

root@conoha:~# ip -6 neigh
2400:8500:1301:740:133:XXX:XXX:234 dev ens3 lladdr 02:01:85:82:5a:ea STALE
fe80::313a:ed15:ba07:9d97 dev tap_tap lladdr d4:3d:7e:be:60:e3 REACHABLE
fe80::740:1 dev ens3 lladdr 00:05:73:a0:00:6f router REACHABLE
fe80::2ae:76ff:fe00:ae76 dev tap_tap lladdr 00:ae:76:66:b2:a6 PROBE
2400:8500:1301:740::1 dev ens3 lladdr 00:05:73:a0:00:6f router STALE
fe80::1:85ff:fe82:5aea dev ens3 lladdr 02:01:85:82:5a:ea STALE
fe80::1:85ff:fe82:5a33 dev ens3 lladdr 02:01:85:82:5a:33 STALE
fe80::88fd:4c82:b12a:4ccb dev tap_tap lladdr 00:ac:ca:ba:16:67 STALE
fe80::f816:3eff:fe23:6ba3 dev ens3 lladdr fa:16:3e:23:6b:a3 STALE
fe80::740:2 dev ens3 lladdr 74:a2:e6:8b:fb:3f router REACHABLE
fe80::14df:8ca3:452f:2910 dev tap_tap lladdr 20:3c:ae:8a:01:61 STALE
2400:8500:1301:740:a133:XXX:XXX:2330 dev tap_tap lladdr d4:3d:7e:be:60:e3 STALE
fe80::f816:3eff:fed8:6c7f dev ens3 lladdr fa:16:3e:d8:6c:7f STALE
2400:8500:1301:740:a133:XXX:XXX:2331 dev tap_tap lladdr d4:3d:7e:be:60:e3 STALE

VPS の設定

 forwarding を有効にすると、VPS のデフォルトゲートウェイが消えるので、accept_ra に 2 を入れて消えないようにします。
 proxy_ndp は、入れておかないと traceroute6 が VPS で止まって通信もできませんでしたが、有効化したらうまくいきました。

echo 2 > /proc/sys/net/ipv6/conf/ens3/accept_ra
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 1 > /proc/sys/net/ipv6/conf/ens3/proxy_ndp

 PC側に割り振る IPv6 アドレスを、VPS から消去します。そして、tap と繋いだ PC 側のリンクローカルアドレスを next hop に。さらに、IPv6 アドレスに対する ndp proxy を、ens3 に設定します。

ip -6 addr del 2400:8500:1301:740:a133:XXX:XXX:2330/64 dev ens3
ip -6 route add 2400:8500:1301:740:a133:XXX:XXX:2330/128 via fe80::313a:ed15:ba07:9d97 dev tap_tap
ip -6 neigh add proxy 2400:8500:1301:740:a133:XXX:XXX:2330 dev ens3

PC の設定

  • IPv6 ユニキャストグローバルアドレス :IPv6 アドレスを設定
  • デフォルトゲートウェイアドレス :tap のリンクローカルアドレスを設定

結果

C:\Users\User>tracert -4 google.com

google.com [216.58.197.14] へのルートをトレースしています
経由するホップ数は最大 30 です:

  1    <1 ms    <1 ms    <1 ms  192.168.1.254
  2    <1 ms    <1 ms    <1 ms  10.55.215.1
  3    21 ms    20 ms    22 ms  118.23.42.246
  4     2 ms     2 ms     2 ms  118.23.42.173
  5     4 ms     3 ms     3 ms  118.23.52.97
  6     4 ms     2 ms     2 ms  61.207.46.213
  7    11 ms    12 ms    10 ms  125.170.96.53
  8    13 ms    14 ms    14 ms  125.170.96.30
  9    23 ms    22 ms    21 ms  153.149.221.14
 10    13 ms    12 ms    14 ms  180.37.200.22
 11    14 ms    14 ms    15 ms  211.122.28.194
 12    30 ms    26 ms    34 ms  108.170.243.33
 13    11 ms    11 ms    10 ms  108.170.238.101
 14    13 ms    11 ms    12 ms  kix06s02-in-f14.1e100.net [216.58.197.14]

トレースを完了しました。

C:\Users\User>tracert -6 google.com

google.com [2404:6800:400a:804::200e] へのルートをトレースしています
経由するホップ数は最大 30 です:

  1    20 ms    20 ms    20 ms  va133-XXX-XXX-233-f.a023.g.tyo1.static.cnode.io [2400:8500:1301:740:a133:XXX:XXX:233f]
  2    86 ms    71 ms    59 ms  2400:8500:1301:740::1
  3    28 ms    25 ms    25 ms  2400:8500:1300:1026::1
  4    20 ms    20 ms    21 ms  2400:8500:1300:1078::1
  5    20 ms    21 ms    20 ms  2400:8500:1300:1038::1
  6    21 ms    21 ms    20 ms  ae-25.r00.tokyjp05.jp.bb.gin.ntt.net [2001:218:2000:5000::3c5]
  7    26 ms    22 ms    20 ms  ae-6.r31.tokyjp05.jp.bb.gin.ntt.net [2001:218:0:2000::351]
  8    23 ms    22 ms    21 ms  ae-6.r02.tokyjp03.jp.bb.gin.ntt.net [2001:218:0:2000::192]
  9    22 ms    22 ms    27 ms  2001:218:2000:5000::47e
 10    27 ms    23 ms    22 ms  2001:4860:0:1001::2
 11    22 ms    21 ms    21 ms  2001:4860::1:0:bcda
 12    32 ms    30 ms    29 ms  2001:4860::1:4000:c874
 13    30 ms    31 ms    31 ms  2001:4860:0:100a::1
 14    28 ms    28 ms    35 ms  2001:4860:0:1::1d77
 15    30 ms    35 ms    33 ms  kix03s01-in-x0e.1e100.net [2404:6800:400a:804::200e]

トレースを完了しました。

IPv6 パケットの IPv4 カプセル化による処理遅延も、ほとんどありません。

C:\WINDOWS\system32>ping -4 133.XXX.XXX.233

133.XXX.XXX.233 [133.XXX.XXX.233]に ping を送信しています 32 バイトのデータ:
133.XXX.XXX.233 からの応答: バイト数 =32 時間 =23ms TTL=47
133.XXX.XXX.233 からの応答: バイト数 =32 時間 =22ms TTL=47
133.XXX.XXX.233 からの応答: バイト数 =32 時間 =20ms TTL=47
133.XXX.XXX.233 からの応答: バイト数 =32 時間 =21ms TTL=47

133.XXX.XXX.233 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 20ms、最大 = 23ms、平均 = 21ms

C:\WINDOWS\system32>ping -6 2400:8500:1301:740:a133:XXX:XXX:233f

2400:8500:1301:740:a133:XXX:XXX:233f [2400:8500:1301:740:a133:XXX:XXX:233f]に ping を送信しています 32 バイトのデータ:
2400:8500:1301:740:a133:XXX:XXX:233f からの応答: 時間 =20ms
2400:8500:1301:740:a133:XXX:XXX:233f からの応答: 時間 =23ms
2400:8500:1301:740:a133:XXX:XXX:233f からの応答: 時間 =41ms
2400:8500:1301:740:a133:XXX:XXX:233f からの応答: 時間 =31ms

2400:8500:1301:740:133:XXX:XXX:233 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 20ms、最大 = 41ms、平均 = 28ms

 亀も踊った・・・!

 なお、Ping6 を通すには、Windows ファイヤウォールの受信の規制から、既存のポリシーを有効化するのではうまく行かなかったため、新しくポリシーを作成し、ICMPv6 を許可する設定を追加するとよいです。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7