DS-Lite環境でHGWのVPNを使うためにPPPoEを追加した話
インターネットがより快適になるらしい DS-Lite(IPv6 IPoE接続)にフレッツ光のプロバイダを変更したところ、これまで HGW(ホームゲートウェイ)で利用できていたVPN接続が使えなくなったので、その対策をした話です。
Q. DS-LiteでVPNは使えますか?
A. 基本的にHGWで外部から受けるVPNは使えません。DS-Liteでは、複数の契約者で1つのグローバルIPv4アドレスを共有する仕組みになっています。そのため、VPNで利用するポートが自由に使えなかったり、外部からの着信が制限されたりして、接続に失敗します。
つまり、HGWの機能がどうこうというより、DS-Liteの仕組み上、VPNの待ち受けとは相性が悪いというのが実際のところのようです。
なお、IPv6 IPoE接続でもIPIP方式ならVPNが使えるという情報もありました。
ただ今回は、
- HGWのルーター機能とVPN機能をそのまま使いたい
- 固定IPをやめたい
- 主回線はPPPoEに戻さない
という前提だったので、その方法は見送りました。
PPPoEの格安プロバイダを追加してマルチセッション化
月額550円ほどでPPPoE接続が使える格安プロバイダがあったので、この回線をVPNの待ち受け専用として追加してみます。
今回の構成では、通常のインターネット通信はDS-Liteを使い、VPNの待ち受けだけをPPPoE側で受ける形にしました。
HGWの「セッション2」に接続情報を追加
HGWの設定画面から「セッション2」にPPPoEの接続情報を追加します。

設定内容はシンプルで、プロバイダから案内された接続IDとパスワードを入力し、その他の項目は基本的に初期値のまま保存するだけでOKでした。
HGWのVPNサーバ設定で「セッション2」を選択する
先ほど追加したPPPoEの接続情報(セッション2)を、VPN接続の待ち受けに使う設定です。

これにより、通常のインターネット通信はこれまでどおりDS-Lite側を使いつつ、VPNの着信だけをPPPoE側で受ける形になります。
今回のポイントは、HGWを丸ごとPPPoE運用に戻すのではなく、VPN用の入口だけをセッション2へ切り分けることです。
DDNSがPPPoE側IPを取得できるようにする
これだけの設定でVPN接続自体は成功するはずですが、格安プロバイダのため固定IPではありません。VPNを常用するには、ホスト名で接続できるDDNSが必要です。
ということで、以前作成した自作DDNSの記事がこちらです。まずは先に読んでみてください。
この記事の方法だと、取得できるのは主回線であるDS-Lite側のIPアドレスです。そのため、VPN接続に使いたいPPPoE側のIPアドレスとは一致せず、このままではDDNSの更新先として使えません。
HGWの接続ルール設定で「宛先ドメイン名」を指定する
HGWの接続ルールを設定すると、指定したドメイン名へのアクセスだけにセッション2のPPPoE接続を使わせることができます。

この仕組みを使えば、IPアドレス確認用のURLだけをPPPoE側へ流せるため、取得できるIPアドレスもVPN用のものになります。
IPアドレス確認用のスクリプトは、自分で契約している外部サーバに設置しておくのが確実で分かりやすい方法だと思います。
注意点として、同じIPアドレスのサーバでホスト名だけを分けても、期待どおりには分離できませんでした。そのサーバ全体がセッション2経由になってしまったため、確認用スクリプトは別IPアドレスのサーバへ置く方が無難です。
まとめ
DS-Liteに変更したことでHGWのVPN待ち受けが使えなくなったため、PPPoEの格安プロバイダを追加して対応しました。
HGWのマルチセッション機能を使い、通常通信はDS-Lite、VPNの待ち受けとDDNS判定用通信だけをPPPoE側へ振り分けています。
これにより、普段の通信速度を維持したまま、従来どおりVPN接続も使えるようになりました!


