クロスパス環境下でUbuntuPCをPPPoE直結+OpenVPNでVPNサーバー構築する方法
はじめに
欧州の某国への交換留学をきっかけとして、自分でVPN構築に関心を持ち手を出したところ泥沼にはまりにはまり、結局2年後に実現した、という話です。楽天ひかり、というクロスパス環境でUbuntuを使用してPPPoE(Point-to-Point Protocol over Ethernet)直結環境でOpenVPNサーバーを構築する方法について説明します。
背景
日本の自宅ミニPCをVPNサーバーとして、海外からVPN接続してぇな、と思いつく。日本経由の通信が必要なサービス(例: Yahoo Japan関連のサービス利用が欧州からは不可)が存在するのではないか、と考えたからだ。
そのため出発前から、Windows + Softetherサーバーアプリケーション + VPN Azure設定のOpenSSTPプロトコル、スマホからはOpenSSTP(Androidアプリ)という構成で運用できていた。
ただし問題点があった。VPN Azureサーバー経由のためか通信速度が遅く(結局地理的)、NHK配信のパリ五輪ストリーミングは厳しかった。
んじゃもっと早い方法がないか、と思い、留学先の大学のVPNサービスではOpenVPNを利用していて親近感があったため、自分もOpenVPN構築しようと思って泥沼にはまりました。結果的にはネットワークについての理解がなり深まったため良かったですが、結局実現まで2年かかったのでした…。
ぶちあたった壁
楽天ひかりを契約していたため、クロスパス環境でのネットワーク構成となっていたことが全ての元凶原因です。
これにより、ネットワークはIPv6接続となっており通常のVPN構築に必要なポート開放という概念が存在せず、加えて私の知識不足によりIPv6でのVPN構築に失敗しまくったからです。
IT初心者だったため、有線LAN接続したWindows10上のWSL2にDockerをインストール、さらにそこにOpenVPNをコンテナとして走らせようとするなど、今から考えると奇行とも思える環境構築なども試しました。
そもそも、サーバーマシンに物理的にアクセスできない環境でネットワークをいじるというのがトリッキーかつストレスでした。接続ができないと再起動すらおぼつかないからです。
最終的には帰国したタイミングで物理的にPCにアクセス。Ubuntuをインストール、バッファロー製のルーターはPPPoEパススルー機能を搭載していたこともあり、有線接続 & パソコン上でPPPoE接続&OpenVPNホストにより、相当スリムな構成で実現しました。
きちんと接続できた時は感無量!2年間が救われた気分でした。
以下参考として残しておきます。
環境概要
ハードウェア:Ubuntuを搭載したミニPC(有線LANはUSB-LANアダプタ経由で接続)2コア4スレッド。
ネットワーク:光回線+PPPoEパススルー対応のBuffaloルーター(バッファロー製 WSR-3200AX4S)
目標:
ルーターのNATを介さず、PCが直接PPPoEでグローバルIPv4を取得する。
Ubuntu上でOpenVPNサーバーを稼働させ、外部から直接アクセス可能にする。
ネットワーク関係図
+------------------+
| インターネット |
+------------------+
|
| 楽天ひかり
v
+------------------+
| Buffaloルーター | ----->
| (PPPoEパススルー)| ---- > 無線・有線接続で別の機器
+------------------+
|
| 有線
v
+------------------+
| UbuntuミニPC |
| (PPPoE接続, OpenVPN) |
+------------------+
|
|
v
+------------------+
| VPNクライアント | ----- > 海外PC
+------------------+PPPoE接続の設定
バッファロー製のルーターWSR-3200AX4SはPPPoEパススルー機能搭載で非常に助かりました。これが無いと、スイッチングハブを設けルーター2台構成とする必要があるようです。(参考ページ参照)
https://arimasou16.com/blog/2021/10/03/00425/
①PPPoE接続の設定:pppoeconfコマンドを使用してPPPoE接続を設定します
sudo pppoeconf②インターフェースの特定:接続に使用するWAN側アダプタを特定します。私の場合usb アダプタを利用していたため、eth0等のようなわかりやすい名称ではありませんでした。
③dsl-providerの設定修正:特定したインターフェースに合わせてdsl-providerの設定ファイルを修正します。
OpenVPNサーバーの構築
この辺は無限に記事があるため割愛
OpenVPNのインストール:OpenVPNパッケージをインストールします。
サーバー設定:/etc/openvpn/server.confにOpenVPNサーバーの設定を記述します。UDP 1194ポートを使用する標準的な設定を行います。
証明書管理:Easy-RSAを使用してサーバーとクライアントの証明書を発行します。
トラブルシューティング
いくつかトラブルが発生しました。
PPPoE接続時のパスワード
これが一番しょーもないミスだった。
パソコンでダイレクトにPPPoE接続を行うことはUbuntuだけではなくWindowsでも可能だ。その際、IDとパスワードを入れるのだが、パスワードは紙に記載の初期パスワードではなくマイページのパスワードだった。
※接続パスワードは、会員ページ(メンバーズステーション)へのログインパスワードと共通となります。
契約期間中にパスワード変更されたお客様は、変更後のパスワードで接続設定をお願いします。
このせいで1年間を棒にふるいました…。なんならUbuntu入れる前、リモートデスクトップ環境でもできてたってことじゃん…。ただこれが無ければUbuntuを入れていなかったかも、と考えると悪いことだけは無いが…。
ポート競合の解決:UDP 1194ポートの競合があった。原因はSoftEtherVPNを入れていたから。
まとめ
本記事では、Ubuntuを使用したPPPoE直結環境でのOpenVPNサーバー構築手順について解説しました。
今更になってTalescaleとかいうものを知ったよ…いや何も見てない()
