2020-12-31

V6プラスの IPv6 側を使って Wireguard VPN を接続する


最新の我が家のネットワーク図は次のようになっています。


Rakuten Casa が仲間入りしました。





クリックして拡大





これまで、外から中への接続のために、MAP-E で割り当てられた IPv4 ポートの一つを開放していて、このポートで Wireguard VPN を張れるようにしていました。


Wireguard は Raspberry Pi 3 model B にインストールしてあり、すでに IPv6 化はしていますが、VPN 接続自体は IPv4 のままでした。



client は MacBookAir や Android 機の  Wireguard アプリです。


この VPN 接続を IPv6 でできないか、ということです。




なぜ、突然こんなことを考えたか、といいますと、楽天ひかりの「クロスパス (DS−Lite 方式)」 を検討しているからす。

 

 

 

「楽天ひかり」は3年縛りはありますが、1年間無料で、2年目以降は 3,800円 です(集合住宅の場合)。




これは、「フレッツ光ネクスト(ギガマンションタイプ)+@nifty」の 3,900円 よりも 100円 安くて済みます。



 

また、@nifty がノジマ に売却されてからは、なにかと速度制限がされるなど、サービス低下していることも @nifty 離れを決意させる理由です。 

 

 

 

 


「V6プラス(MAP−E 方式)」は、ポート数が240個と限定的ではあるものの IPv4 でポート開放ができますが「クロスパス(DS−Lite 方式)」はできません。




別件で、V6プラスで IPv6 ポートの開放をしました(Rakuten Casa の接続のために IPsec IKE を IPv6 でポート開放しました)。





そこで、ハタと気がついたのです。



  「そうか、Wireguard VPN も接続を IPv6 化すれば、

   DS−Lite 方式でもポート開放できるじゃん」



と。



そこで、V6プラスの IPv6 側で Wireguard VPN 接続をしてみることにしました。


これができれば DS−Lite 方式でも同様にできることになります。



IPv4 の場合は、ルーターの NAT を通過するために ポートマッピング機能を使って設定しますが、IPv6 の場合は NAT はありません。


ですので、IPv6 フィルター機能で「特定ポート1を特定アドレスの特定ポート2向けのみ」 通過設定します。




まず、Wireguard の Server になる Raspberry Pi 3 model B のターミナルで ifconfig して、IPv6 アドレスを確認します。


次に RTX830 ルーターの設定をします。


IPv6 filter で「Client の ポート1」から「Server の IPv6 アドレス:ポート2」を、パススルー設定します。


 ❏ Client:ポート1(例:12345)

 ❏ Sever:ポート2(例:54321)


Wireguard のデフォルトポートは「51820」ですが、これとは違う番号がいいと思います。


ルーターを通過設定する障壁を少しでも高くするためです(ポート番号1 と 2 の計 10 桁を一致させにくくするのです。


ルーターで 「any_addr:ポート1」から「Sever_IPv6_addr:ポート2」以外はリジェクトするのです。


できれば、Client の IPv6 アドレスも限定したいところですが、Client は キャリアの LTE 網か、フリー WiFi から接続をすることを想定していますので、IPv6 アドレスの固定化は無理があります。




ルーター側の IPv6 ポート開放(IPv6 フィルター通過設定)はこれだけです。





問題は Client 側の設定です。


Android の Wireguard アプリの「接続先設定」に「Sever_IPv6_addr:ポート」設定をしようとしますが、直接に IPv6 アドレスを書き込めないのです。



設定エラーになってしまいます。




このフィールドには IPv4 アドレスか、DDNS 名しか記述できず、IPv6 アドレスを記述できないのです。



DDNS を使うしかないか、と考え、No-IP で設定しますが、IPv6 アドレス解決はしてくれません。



それでは、と RTX830 ルーターのネットボランチ機能で DDNS 設定できないかを調べてみましたら、ルーターアドレスは IPv6 で登録できますが、配下の機器の IPv6 アドレスは登録できません。




困ってしまいました。

 ⇓

 ⇓

 ⇓

 ⇓

いろいろ調べてみましたら、i.open.ad.jp という「ソフトイーサ株式会社が開発・提供している NTT 東日本のフレッツ光ネクスト用の DDNS サービス」がありました。



早速、xxxx.i.open.ad.jp に Raspberry Pi 3 model B の IPv6 アドレスを登録、開放した IPv6 のポート(IPv6 フィルターでパススルーしたポート)を Android Wireguard アプリに設定してあっさりとつなげることができました。


  ※ xxxx は i.open.ad.jp の一意に定まるサブネット名

   簡単にいうと「先取り」した方が採用される名前

 



ネット速度も IPv4 接続時に比べて一段と早くなったような気がします。






【IPv4 over IPv6 について】


IPv4 over IPv6 技術には大きく MAP-E(RFC7597)、DS-Lite(RFC6333)、4rd/SAM(RFC7600)があります。


4rd/SAM は MAP-E の前身ともいわれていますが、厳密な意味では現在国内ではサービスされていません。


BBIX は 4rd/SAM では? ということが一時期いわれていたことがありますが、これは IPv4 とIPv6 の共存の仕方の一つではあるが、独自で IPIP であるけれども 4rd/SAM ではないようです。



国内では、JPNE がサービスする「V6プラス」や、マルチフィードがサービスする「Transix」、BBIX の「4rd/SAM もどき」が代表的です。



「V6プラス」、「Transix」はサービス名称で、方式名はそれぞれ「MAP−E」、「DS−Lite」です。




「クロスパス」はアルテリア・ネットワークスがイネイブラーとしてサービスする「DS−Lite 方式」のサービス名称です。




MAP−E との大きな違いは NAT がステートレス(CPE がルーター側)か、ステートフル(PE がプロバイダー、すなわちネットワークイネイブラー側)かです。 





ステートレスは IPv4 ポート開放が限定的ではあってもできますが、ステートフルは IPv4 ポート開放はできません。





ところが IPoE 接続である IPv6 はどちらの方式であっても、自由にポート開放ができます。


今回は、この仕組みを利用した、ということです。









5 件のコメント:

Unknown さんのコメント...

バイク野郎さん、突然のコメント失礼いたします。
YAMAと申します。当方もRakuten CasaのLTEがつながらずこちらのブログにたどり着きました。

色々試したのですが、私の知識不足で現在もLTEが接続できず困っております。
お忙しい所、大変恐縮ですがもしお気づきの点がございましたらアドバイス頂けたら幸いです。

サポートセンターとは何度がやり取りしておりRakuten Casa自体は一度交換しておりますが、それでも改善しないためこちらのブログを参考に以下の設定を行っておりますが、残念ながら解決に至っておりません。

●環境
回線:楽天ひかり(以前はフレッツ光(戸建タイプ)を利用)
ルーター:NEC ATERM WG2600HP4


●ルーターの設定
動作モード > PPPoEルーター
IPv6モード > 使用する

●IPv6パケットフィルター
1.優先度19にプロトコル番号50のInを透過で宛先IPをアドレス指定 > IPv6アドレス/プレフィックス長(グローバル)の最初の4つ分+::(aaaa:bbbb:cccc:dddd::)として、/の後ろのインプットボックスに64をセット
2.優先度20にポート500のUDPのInを透過で上記と同じアドレスを追加
*宛先アドレスはクイック設定Web > 現在の状態 > NGNの状態 > IPv6アドレス/プレフィックス長(グローバル)からから取得しております

理想は動作モードをクロスパスにしてRakuten CasaのLTEを有効にしたいのですが、実現可能かわかりませんでしたので、まずはPPPoEでの接続を試みております。

上記の設定で不備がありましたらご指摘いただけますと大変助かります。


  

bike86-3 さんのコメント...

YAMAさん、こんにちは。

設定自体は正しいように思えます。

ただ、PPPoE のときに IPv6 が楽天ひかりではどういう扱いだったのかはわかりません。

PPPoE+IPoE ではなく IPoE+IPv4 over IPv6(Xpass のことです)で Casa はつながりますよ。

ですので、PPPoE ではなく「自動接続」または「Xpass」で接続し、Casa がつながるかどうかを試してください。

2〜3日でつながらなければサポートに電話して、センター側での接続確認をしてもらってください。


わたしも以前は楽天ひかりでしたが、いまは enひかりの Xpass に変えています。
また Casa は返却しています。

楽天ひかりで Xpass を使って Casa 向けの IPv6 フィルターの設定をして問題なくつながるはずです。

Unknown さんのコメント...

バイク野郎さん、YAMAです。

早速のご連絡ありがとうございます。


設定自体は正しそうとのことで、安心しております。ご確認ありがとうございました。

上記で追加したIPv6パケットフィルター(優先度19,20)を維持した状態で
動作モードをxpassに変更しましたので、数日様子を見たいと思います。

以前、他のサイトで

お忙しい所、貴重なアドバイスを頂きありがとうございました。

Unknown さんのコメント...

バイク野郎さん、お世話になっております、YAMAです。

先日頂きましたアドバイスのとおり、xpassに変更して様子をみたところ
昨日より無事LTEの電波が発信されました!

この度はお忙しい中、貴重なアドバイスをありがとうございました。

bike86-3 さんのコメント...

YAMAさん、こんにちは。

LTE を吹くようになったそうで、よかったです。
お役に立てて嬉しく思います。