- ①設計編
- ②VPS基本設定
- ③OpenVPNサーバ構築
- ④ルータ役PCの設定
- ⑤リモートアクセスPCの設定
- ⑥over IPv6
前回、VPSをレンタルし、OpenVPNサーバを使ってリモートアクセス環境を作ってみました。
自宅はV6プラスでインターネットに接続されていて、その回線を通るVPN接続ですが、速度は「爆速」ではありませんでした。(普通に使用する分には十分な速度ですが)
ボトルネックとしてIPv4でインターネットを2回通る事等が考えられますが・・・改良案を考えてみました。
接続スピードアップに向けて。IPv6を使った実験をしてみたいと思います。
目次
IPv6パケットでIPv4パケットを運んでもらう
「IoTの時代 IPv4アドレスが枯渇 これからの時代はIPv6 対応機器が増加」と世間様では言われております。
IPv6対応機器を使うために。「既存のIPv4のネットワークで、IPv6パケットを運ぶ方法」や「IPv4ルーターでIPv6パススルーを併用する方法」などが紹介されているようですが・・・ここはあえて時代に逆行したいと思います。
インターネットのどこかから、リモートで自宅に接続したい場合。外出先で、IPv6ネットワークを確実に利用できるものでしょうか?
現状、外出先からはIPv4でVPN接続したほうが、確実につながる状況です。リモートアクセス用PCはIPv4を使ったままで。前回作成したシステムを、このように改良してみます。
2回通るうちの、1回を太く(速く)しましょう、と考えてみました。
逆行の意味は、ここでは「IPv6の高速なネットワークで、今更IPv4パケットを運ぶ」ようなVPN接続環境ができないかな?と・・・・こちらが今回の実験ネタになります。
英語表記は「IPv4 tunnel over IPv6」となりますので、IPv6パケットを使った「IPv4トンネル over IPv6」と呼称致します。
さて。うまくゆくでしょうか?
IPv6対応VPSの準備
実験を行うために、IPv6対応VPSと契約する必要があります。
気になるお値段の他、VPS事業者により性能や設定の難易度の差がずいぶんあるようです。
・・・・
IPv6対応のとあるVPSは、ポートフォワードの設定がなかなか大変でした!
この記事ではOpenVPNの設定に重点を置くため。次の設定が完了したとして進めさせて頂きます。VPSの設定は、機会があれば別途記事にしてみたいと思います。
- IPv6対応のVPSを契約
- VPSの基本設定実施
- IPv6についてOpenVPNで使用するUDPポート開放 ←これが大変な場合も
- OpenVPNサーバをIPv4で構築
- ルータ役PCをIPv4で構築
- リモートアクセス用PC構築
6番のリモートアクセス用PCは、ひとまずIPv4をそのまま利用します。
4番のOpenVPNサーバと、5番のルータ役PCをIPv6で接続しましょう、というお話になります。
IPv6でつながるとどうなるか
OpenVPN マネージャでステータスを表示すると、こうなりました。
IPv4とIPv6が混在していますが・・・
- ルータ役PCは、OpenVPNサーバへIPv6アドレスで接続されています。
- 外出先PCは、IPv4アドレスで接続されています。
- 外出先PCから自宅LAN(192.168.1xx.0)の機器へのアクセスは、IPv4アドレスを使用します。
- とくに問題なくファイル転送など行えます。
- 外出先PC→自宅LANへのpingも行えます。しかしバッファーサイズを指定すると動きませんでした。
外出先から自宅の機器が普通に使える感じです。
実現のために、OpenVPNをこのように設定してみました。
IPv6対応設定
OpenVPNサーバ設定変更
/etc/openvpn/server.confを次のような内容にしました。
#IPv6対応 次の1行追加
proto udp6
dev tun
port 1194
proto udp
cd ./server
ca ./keys/ca.crt
cert ./keys/server.crt
key ./keys/server.key
dh ./keys/dh2048.pem
tls-auth ./ta.key 0
server 10.8.0.0 255.255.255.0
# site to siteで接続する先のネットワークを設定。
# client-config-dirでクライアント個別に設定すると同時にここにも書いておく必要あり
route 192.168.111.0 255.255.255.0
# 他のクライアントにルートを通知
push "192.168.111.0 255.255.255.0"
client-config-dir ./ccd
client-to-client
cipher AES-256-CBC
user nobody
group nobody
status ./log/openvpn-status.log
log-append ./log/openvpn.log
verb 4
# インターバル秒 タイムアウト秒=サーバ側で切断と判断
keepalive 10 240
daemon
# telnet localhost 7505による管理機能有効
management localhost 7505
# 証明書を廃止する場合 revoke-full <クライアント名> pemファイル作成
# crl-verify crl.pem
proto udp6の1行を追加しました。proto udpを消すとリモートがつながりませんでしたので、proto行は2行あります。
これでIPv4とIPv6のデュアルスタック動作になります。
ルータ役PC設定変更
macOSで試しました。V6プラス環境、NDプロキシを利用しています。
ルータ役PCから、IPv6を有効にしたOpenVPNサーバ(VPS)へping6が行えることを確認します。
問題なければ、client1.ovpnファイルを次のように変更します
# IPv6対応 次の2行追加
remote <VPSのIPv6アドレス>
proto udp6
# IPv6対応 次の2行削除
# remote <VPSのIPv4アドレスまたはDDNSホスト名>
# proto udp1
dev tun
port 1194
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
client
remote-cert-tls server
ns-cert-type server
cipher AES-256-CBC
verb 4
remoteとprotoの2行をIPv6対応へ書換えた感じです。
あとは、接続し直すだけでIPv6で繋がるようです。
使った感じは
印象としては「やっぱり爆速ではない」「けど実用的な速度は出る」感じです・・・・もっと速さが欲しい・・・・
さらに、実験を進めてみました。
リモート接続PCもIPv6で接続
外出先からもIPv6で接続すると、全体構成はこのようになります。
ovpn設定ファイルを変更します。変更方法は、ルータ役PCと同様にprotoとremoteの2行をそれぞれudp6、VPSのIPv6アドレスに変更します。
外出先でIPv6が使用できて、OpenVPNサーバに接続できれば、全く問題なく外出先から自宅のIPv4機器を使用する事ができました。
この構成の場合・・・接続環境により速度は異なると思いますが、「なんだかキビキビ動く」感じがするような、気の所為のような?
外出先でIPv6が使えない場合はIPv4接続できるように。設定(プロファイル)を2つ用意して切り替えれば、ほぼ確実にどこからでもVPN接続できます。
IPv6 VPNルータが完成?
以上の実験で。VPNトンネル4パターンの2パターン目を作ったかたちになりました。
- IPv4トンネル over IPv4→一般的なVPNルータ
- IPv4トンネル over IPv6→今回のVPS版VPNサーバ
- IPv6トンネル over IPv4
- IPv6トンネル over IPv6
1番2番はIPv4対応機器をVPNで使うための技術、3番4番はIPv6対応機器を使うための技術になります。
2番が実現できたことで、自宅のIPv4機器を外出先から使うための選択肢が増え、より高速に使う可能性が広がった?・・・・そうなると良いなー、という感じです。
3番4番は、自宅にIPv6機器が無いと、作る意味が無さそうな・・・様子見の感じです。
しばらく2番を使ってみて、速度や安定性等を評価してみたいと思います。
ではまた次の機会に!
V6プラス自宅LANに外出先からアクセス
- ①設計編
- ②VPS基本設定
- ③OpenVPNサーバ構築
- ④ルータ役PCの設定
- ⑤リモートアクセスPCの設定
- ⑥over IPv6
コメント
こんにちは。
素人ながらお聞きしたいのですが、
外からIPv6接続が利用できる場合、VPSを経由せずに「外出先PC」から「自宅PCルータの役割」へ直接接続することは出来るのでしょうか。
それが可能な場合IPv6だけでなくIPv4でも自宅PCからインターネットに出ていくことも出来るのでしょうか。
nanashi さんはじめまして。
コメント頂きありがとうございます。
この記事の場合「自宅PCがOpenVPNクライアント」のため、VPSを経由せずに「外出先PC」から直接接続するのは難しいと思います。
理由は、接続は必ずクライアント→サーバの方向である必要があります。
クライアント→クライアントは接続できないためです。
もしもIPv6環境で「自宅PCをOpenVPNサーバにする」のでしたら、確かに外出先PCから接続して、自宅のルータ経由でインターネットを利用することも可能かもしれません。
しかし設計や実験が必要で、簡単ではないと思います。
「自宅PCをOpenVPNサーバにできるかどうか?」が大きな問題になります。
ご利用のIPv6接続サービスの種類は?サーバの設定は?等等
記事では「V6プラスで試しました」という扱いですが
https://www.buffalo.jp/support/other/network-ipv6.html
こちらの「IPv4 over IPv6 通信サービス名」にありますように
様々なサービスがあり、現在も増えているようです。
いろいろ情報収集しないとですね
今現在フレッツ回線を使うプロバイダ(**光等コラボ光も含む)は基本IPv6対応しています。PPPoEのIPv4通信と違ってIPv6の場合IPoEによって基本全ての機器にローカルではなくグローバルのIPv6アドレスが配布されます。
自宅がv6プラス環境であるなら、自宅の機器に割り振られるv6アドレスはグローバルなので外からIPv6で通信可能です。
なので自宅ルーターのIPv6設定によりますが基本は自宅PCをOpenVPNサーバにして直接つなげることが出来ます。
macchky こんにちは。
コメント頂きありがとうございます。
そうですね。IPv6でしたら、技術的には仰る通りだと思います。
実用性はいかがでしょうか?
たとえば外出先のホテルや会社等でも、IPv6が使えるかは、現在は大きな課題だと思います。
安全性はいかがでしょうか?
ルータのIPv6パススルーを使用すると、OpenVPNサーバ以外の機器も、すべてインターネットに直接接続されて、攻撃対象になる気がします。
サーバ以外の機器のIPv6通信を無効にしたり、ポートを閉じたりする必要も出る気がします。
そのあたりの課題をクリアできるソリューションが作れると良いのですが。