クロスパス環境下で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サーバーの構築

この辺は無限に記事があるため割愛

  1. OpenVPNのインストール:OpenVPNパッケージをインストールします。

  2. サーバー設定:/etc/openvpn/server.confにOpenVPNサーバーの設定を記述します。UDP 1194ポートを使用する標準的な設定を行います。

  3. 証明書管理:Easy-RSAを使用してサーバーとクライアントの証明書を発行します。

トラブルシューティング

いくつかトラブルが発生しました。

  • PPPoE接続時のパスワード
    これが一番しょーもないミスだった。
    パソコンでダイレクトにPPPoE接続を行うことはUbuntuだけではなくWindowsでも可能だ。その際、IDとパスワードを入れるのだが、パスワードは紙に記載の初期パスワードではなくマイページのパスワードだった。

※接続パスワードは、会員ページ(メンバーズステーション)へのログインパスワードと共通となります。
契約期間中にパスワード変更されたお客様は、変更後のパスワードで接続設定をお願いします。

楽天ひかりのIPv6(クロスパス)接続ができないので、IPv4(PPPoE)接続の設定方法を知りたいより

このせいで1年間を棒にふるいました…。なんならUbuntu入れる前、リモートデスクトップ環境でもできてたってことじゃん…。ただこれが無ければUbuntuを入れていなかったかも、と考えると悪いことだけは無いが…。

  • ポート競合の解決:UDP 1194ポートの競合があった。原因はSoftEtherVPNを入れていたから。

まとめ

本記事では、Ubuntuを使用したPPPoE直結環境でのOpenVPNサーバー構築手順について解説しました。

今更になってTalescaleとかいうものを知ったよ…いや何も見てない()

いいなと思ったら応援しよう!