Raspberry Pi 3B+ と VPSサーバ で ds-lite(IPv4 over IPv6ルータ) の構築 -さくらVPSサーバ編- 途中結果状態です。

2018年12月13日

【お願い】
今回の構築は解らない部分・理解が出来ていない部分があり、たまたま通信が出来てしまったという状態です。
内容を訂正する場合が確実にあります。
以下のやり方について、PC,その他のトラブルについては責任を負いかねます。
よろしくお願いします。

#—2018-09-06-追加分-開始
さくらVPSサーバで実験してみました。
Raspberry Pi 3B+ と VPSサーバ で ds-lite(IPv4 over IPv6ルータ) の構築 -conohaサーバ編- 途中結果状態です。
で、書かせて頂いたこと同じ操作で動かすことが出来ました。
現在で解っていることを書きたいと思います。

※少し違う部分が出てきましたので、最初から書きたいと思います。
※追加分として書きましたが、文章内を整理したい思いますのでご了承下さい。
#—2018-09-06-追加分-終了

【目的】
“VPSサーバ” と “Raspberry Pi 3B+” を使い1対1通信の “ipoe ds-lite” を構築する。

【必要前提】
・”NTTフレッツ光回線の環境” かつ “フレッツ 光ネクスト、フレッツ 光ライトプラス、フレッツ 光ライト” のサービスである。
・”フレッツ・v6オプション” の手続きが完了している。
・”Raspberry Pi 3B+” に OSがインストールがされている。
・加入されているプロパイダーに “ipv6アドレス” が利用できることを前提とします。※1※2
※1 ipv6アドレスは “INTERLINK サービス名:ZOOT NATIVE” とします。
※1 “サービス名:ZOOT NATIVE” 解約しました。
現在、フレッツ光 – ファミリー・ハイスピードタイプ- かつ “プロパイダー -au one net-(ipv4)”を契約しています。
“au one net” のオプションサービス で ipv6のアドレスを契約しました。
ipv6アドレスは “JPNE” の取得アドレスになります。
※2 ipv6アドレスですが、接続方式・管理団体なの関係で異なります。ご注意を願います。

【必要サービス】
・SAKURA Internet サービス名:さくらのVPS 512MB (東京)

【必要機材】
・Raspberry Pi 3B+ 本体 ※3※4
・USB専用のLANアダプター ※4
・スイッチングハブ ※4
・LANケーブル 3つ ※4
・ディスプレイ(HDMI対応)
・マウス
・キーボード
・PC
※3 本体については、オプション品を使用しています。
※4 製品・機器の規格によりインターネット速度が異なります。ご利用される機器情報を必ず把握をして下さい。

【必要環境】
・Raspberry Pi 3B+ OS:NOOBS ver2.8.2 Raspbian
・VPSサーバOS:centos 7.5

【設定方法】
1. Raspberry Pi 3B+ の設定
Raspberry Pi 3B+ と Ipoe ds-lite 接続について” の 【設定方法】項目1~9までの設定を行う。

2. さくらのVPSサーバ 専用トンネル・ゲートウェイの設定
2.1 カーネルモジュールを設定する。

[user@localhost] sudo modprobe ip6_tunnel

2.2 トンネリングの接続設定をする。

[user@localhost] sudo ip -6 tunnel add ip6tnl mode ipip6 remote 【※5】local 【※6】

※5 Raspberry Pi 3B+ の取得されている IPv6アドレス【】は不要
※6 さくらのVPS の固定ipv6アドレス 【】は不要 ※7
※7 さくらのVPS ではipv6アドレスが 1個 用意されています。

2.3 トンネルインターフェースを有効化する。

[user@localhost] sudo ip link set dev ip6tnl up

2.4 ip6tnlのデバイスのipアドレス設定

[user@localhost] sudo ip addr add 192.0.0.1/30 dev ip6tnl

2.5 sysctl で カーネルパラメーターの設定

[user@localhost] sudo sysctl -w net.ipv4.ip_forward=1
[user@localhost] sudo sysctl -w net.ipv4.conf.all.forwarding=1
[user@localhost] sudo sysctl -w net.ipv4.conf.eth0.rp_filter=0
[user@localhost] sudo sysctl -w net.ipv4.conf.ip6tnl.rp_filter=0
[user@localhost] sudo sysctl -w net.nf_conntrack_max=65535

2.5 NAT設定
ファイアウォールを設定行います。
追加・更新を行います。

#—2018年11月19日—追加分–開始

[user@localhost] firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="【※8】" accept"
[user@localhost] firewall-cmd --reload

※8 Raspberry Pi 3B+ eth0 ipv6アドレス 【】は不要
Raspberry Pi 3B+ と VPSサーバーが通信を出来るよう設定します。
#—2018年11月19日—追加分–終了

[user@localhost] sudo firewall-cmd --zone=trusted --change-interface=ip6tnl
[user@localhost] sudo firewall-cmd --zone=public --add-masquerade
[user@localhost] sudo firewall-cmd --zone=trusted --add-masquerade
[user@localhost] sudo firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
[user@localhost] sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ip6tnl -o eth0 -j ACCEPT
[user@localhost] sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ip6tnl -m state --state RELATED,ESTABLISHED -j ACCEPT
[user@localhost] firewall-cmd --reload

2.6 Routing設定
さくらのVPS 側のプライベートネットワークのルート側でのルーティング設定

[user@localhost] route add -net 192.168.0.0/16 dev ip6tnl
[user@localhost] route add -net 192.0.0.1/30 dev ip6tnl

※この設定ですが・・・理解できていない部分で。。。一応設定をしています。

Raspberry Pi 3B+ 側のipv4アドレスの通信が出来るように設定します。

[user@localhost] route add -net 192.168.99.0/24 dev ip6tnl

3. Raspberry Pi 3B+ 専用トンネルの設定
3.1 カーネルモジュールを設定する。

pi@raspberrypi:~ $ sudo modprobe ip6_tunnel

3.2 トンネリングの接続設定をする。

pi@raspberrypi:~ $ sudo ip -6 tunnel add ip6tnl1 mode ipip6 remote 【※9】 local 【※10】 dev eth0

※9 conoha VPSサーバ ipv6アドレス 【】は不要
※10 Raspberry Pi 3B+ eth0 ipv6アドレス 【】は不要

3.3 トンネルインターフェースを有効化

pi@raspberrypi:~ $ sudo ip link set dev ip6tnl1 up

4. ルーティングの設定をする。
4.1 構築したトンネルをデフォルトルートに追加する。

pi@raspberrypi:~ $ sudo route add default dev ip6tnl1

4.2 IPv4アドレスのフォワーディングの許可

pi@raspberrypi:~ $ sudo sysctl -w net.ipv4.ip_forward=1

これにより “VPSサーバ” と “Raspberry Pi 3B+” の1対1の通信かつds-liteの構築が完了です。

【オンラインゲーム関連】
・”hangameサイト” かつ “sf2” のゲームにログインすることが出来ませんでした。。。

【その他サイト】
・”youtubeサイト” かつ “動画” アクセス可能
・”google” アクセス可能
・”yahoo” アクセス可能
思い当たるところは可能でしたw

【実行結果】
《DHCPに接続したパソコンでのネットワーク確認画面》

《DHCPに接続したパソコンでの”Radish Network Speed Testing”確認画面》

《pingテスト -各検索エンジン-》

《pingテスト -FF14 MANAサーバー-》

※pingを送っただけで、オンラインゲームに接続確認はしておりません。。。低スペックなので。。。

・”speedtest.net” アクセス出来ませんでした。
conoha VPS 時にはアクセスが可能だったのに。。。と思ってしまいました。

そんな感じです。

最後に。。。
構築が出来たことは本当に嬉しいです。
ただ、アクセスが出来ないサイト・ゲームがあるということが分かりました。
セキュリティやら不正アクセス関連なのか・・・勉強不足・知識不足などなど色々あると思います。
また、時間が出来たときに色々と試したい思います。。。

【追加情報】
2018年11月17日
オンラインゲームのサイトが閲覧できない(また、特定のサイト)と書きましたが、MTU(Maximum Transmission Unit)の値が関係していることが解りました。
MTUは1回転送するデータ量の送信可能な最大値(IPデータグラムの最大値)のことです。
値が大きいと断片化が起きてしまい余計に処理が起きてしまう。
また、値が小さいと送受信処理の回数が余計に発生しています。
MTU値を調整する必要があることが解りました。

今回、“ZOOT NATIVE(transixサービスのipv6)”を再契約しました。また、 “さくらのVPS” を使って実験しました。

“さくらVPS”・”Raspberry Pi 3B+”・PC側でMTU値を変更してみたのですが・・・
最終的に、PC(win7)側だけMTUで変更することで閲覧できなかったサイトが閲覧できるようになりました。
※現時点ではPCだけと書きましたが、他2つの機器も変更する必要があるのでは・・・現在調査中です。。。

windows7 MTU変更の仕方
@管理者権限でコマンドプロンプトを開く

C:\Windows\system32>netsh interface ipv4 show interface

【実行結果】

Idx     Met         MTU          状態                 名前
---  ----------  ----------  ------------  ---------------------------
  1          50  4294967295  connected     Loopback Pseudo-Interface 1
 14          25        1500  connected     ワイヤレス ネットワーク接続
 11          10        1500  connected     ローカル エリア接続
 18          20        1500  disconnected  ローカル エリア接続 4

@MTU値の変更
接続されているLANの”Idx”と”MTU”の値を入れてください。
“OK” と出力されでば完了になります。

C:\Windows\system32>netsh interface ipv4 set interface 【Idxの値】 mtu=【MTUの値】

では、MTUの値はいくつなのか。。。となりますが。
自分の場合は MTUの値は “1355” で設定をしました。
実は・・・正確な値ではないです。
この値にたどりついたのは、自分が構築したOPENVPNサーバに接続した状態で、MTUの値を調べたときに “1355” であったからです。
最初は、フレッツ光回線での指定されているMTU値だと思って設定してみたのですが・・・それでもなかった。
他のサイトさんで色々調べても記事が乏しく、ふと思ったのが “OPENVPNサーバ” だったということになります。
現在、色々と調べていますが・・・現時点での記録とさせて頂きます。

MTU値を確認ができるサイト
speedguide.net さん -SG TCP/IP Analyzer-
MTU値が確認できます。

【参考文献】
ネットワークエンジニアとして さん -MTU / MSS / RWIN-
踊るびあほりっく さん -【MTU値】1500,1492,1454?モバイル回線や固定回線ごとのパケットサイズと通信最適化方法-
www.kichise.com さん -Windows7 MTU変更-

【使用サービス情報】
IPv6 test – IPv6/4 connectivity and speed test さん -ipv6 test-
Radish Network Speed Testing さん
SAKURA Internet さん -さくらのVPS-
au さん -プロバイダ au one net-
speedguide.net さん -SG TCP/IP Analyzer-

【商標情報】
ラズベリーパイ財団 さん – https://www.raspberrypi.org/
マイクロソフト さん -windows-
SQUARE ENIX CO., LTD.、さん -The Lodestone – ファイナルファンタジーXIV-
日本ネットワークイネイブラー株式会社 さん -JPNE-