DUICUO

オープンソースツールを使用してプライベート仮想プライベートネットワークを作成する

[[408743]]

OpenWRT と Wireguard を使用して、ルーター上に独自の仮想プライベート ネットワークを作成します。

コンピュータネットワークを介してある場所から別の場所へ移動するのは難しい場合があります。正しいアドレスを把握し、適切なポートを開くことに加え、セキュリティ上の懸念事項もあります。LinuxではSSHがデフォルトで広く使用されています。SSHで多くのことができるとはいえ、それはあくまで「単なる」セキュアシェル(SSHの本質はセキュアシェルです)です。トラフィックを暗号化するためのより広範なプロトコルは「仮想プライベートネットワーク」(VPN)です。VPNは2地点間に固有の仮想プライベートネットワークを構築します。VPNを使用すると、別のネットワーク上のコンピュータにログインし、まるで同じ部屋にいるかのようにそのコンピュータのすべてのサービス(ファイル共有、プリンタなど)を使用でき、すべてのデータはポイントツーポイントで暗号化されます。

通常、VPN接続を可能にするには、各ネットワークへのゲートウェイがVPNトラフィックを受け入れ、対象ネットワーク上の特定のコンピュータからのVPNトラフィックをリッスンする必要があります。しかし、VPNサーバーを内蔵した独自のルーターファームウェアを実行すれば、ポート転送や内部トポロジを気にすることなく対象ネットワークに接続できます。私のお気に入りのファームウェアはOpenWrtです。この記事では、OpenWrtの設定方法とVPNの有効化方法を説明します。

OpenWrt とは何ですか?

OpenWrtは、Linuxを使用した組み込みデバイス向けのオープンソースプロジェクトです。15年以上の歴史があり、大規模で活発なコミュニティを擁しています。

OpenWrtの活用方法は様々ですが、主な用途はルーターです。パケット管理機能を備えた書き込み可能なファイルシステムを提供し、オープンソースであるため、コードを閲覧・変更し、エコシステムに貢献することができます。ルーターをより細かく制御したい場合は、OpenWrtが最適です。

OpenWrt は、Cisco、ASUS、MikroTik、Teltonika Networks、D-Link、TP-Link、Buffalo、Ubiquiti などの有名ブランドを含む多数のルーターをサポートしています。

WireGuardとは何ですか?

Wireguardは、OpenVPNなどの他のVPNオプションよりも高速、シンプル、そして安全なオープンソースの仮想プライベートネットワーク(VPN)ソフトウェアです。最先端の暗号化技術を採用しており、対称暗号化にはChaCha20、鍵ネゴシエーションにはCurve 25519(楕円曲線を使用)、ハッシュにはBLAKE2を採用しています。これらのアルゴリズムは、組み込みシステムで効率的に動作するように設計されています。Wireguardは、様々なオペレーティングシステムとプラットフォームで利用可能です。

前提条件

このプロジェクトでは、次のことが必要です。

  • Teltonika RUT955またはOpenWrtをサポートする他のルーター
  • パブリック IP アドレスは、外部ネットワークから仮想プライベート ネットワークに接続するために使用されます。
  • Androidスマートフォン

OpenWrtをインストールする

まず、ルーター用のOpenWrtイメージをダウンロードしてください。ファームウェアセレクターを使って、OpenWrtがルーターに対応しているかどうかを確認し、ファームウェアをダウンロードしてください。ルーターのモデルを入力すると、オプションが表示されます。

OpenWRT ファームウェアセレクター

検索ボックスの右側にあるドロップダウン メニューを使用して、ダウンロードするファームウェア バージョンを選択します。

工場出荷時のイメージをダウンロードします。

工場出荷時のイメージをダウンロード

多くのルーターでは、Webインターフェース経由で不正なファームウェアをフラッシュできますが、Teltonika Networksではそれができません。このようなルーターにOpenWrtファームウェアをフラッシュするには、ブートローダーを使用する必要があります。ブートローダーを使用するには、以下の手順に従ってください。

  1. ルーターの電源コードを抜きます。
  2. リセットボタンを長押しします。
  3. ルーターの電源コードを差し込みます。
  4. 電源コードを差し込んだ後、リセットボタンを 5 ~ 8 秒間押し続けます。
  5. コンピュータの IP アドレスを192.168.1.15に設定し、ネットワーク マスクを255.255.255.0に設定します。
  6. LAN ポート経由でイーサネット ケーブルを使用してルータとコンピュータを接続します。
  7. Web ブラウザを開き、 192.168.1.1:/index.htmlと入力します。
  8. ファームウェアをアップロードしてフラッシュします。

フラッシュ処理には最大3分かかる場合があります。その後、ブラウザに192.168.1.1と入力すると、ルーターのWebインターフェースにアクセスできるようになります。デフォルトではパスワードは設定されていません。

OpenWrtライセンス

ネットワーク接続を構成する

ネットワーク接続が必要です。インターネットサービスプロバイダー(ISP)がDHCPを使用してIPアドレスを自動的に割り当てている場合は、ルーターのWANポートにイーサネットケーブルを接続するだけで済みます。

IPアドレスを手動で割り当てる必要がある場合は、「ネットワーク → インターフェース」に移動します。「編集」を選択してWANインターフェースを編集します。「プロトコル」フィールドで「静的アドレス」を選択し、「スイッチプロトコル」を選択します。

IPアドレスを手動で割り当てる

「IPv4アドレス」欄にルーターのアドレスを入力します。「IPv4ネットマスク」をネットワークのサブネットに合わせて設定し、「IPv4ゲートウェイ」欄にネットワーク接続に使用するアドレスを入力します。「カスタムDNSサーバーを使用する」欄にDNSサーバーのアドレスを入力します。設定を保存します。

これで完了です。ネットワーク接続を取得するための WAN インターフェイスの構成が正常に完了しました。

必要なパッケージをインストールする

このファームウェアにはデフォルトで多くのパッケージが含まれていませんが、OpenWrtにはパッケージマネージャーとオプションのパッケージがインストールされています。「システム → ソフトウェア」に移動し、「リストを更新...」を選択してパッケージマネージャーを更新してください。

OpenWrt パッケージマネージャー

「フィルター」入力フィールドに「wireguard」と入力し、システムがそのキーワードを含むすべてのパッケージを検索するまで待ちます。「luci-app-wireguard」というパッケージを見つけてインストールします。

luci-app-wireguard パッケージ

パッケージには、WireGuard を構成するための Web インターフェイスが含まれており、WireGuard に必要なすべての依存関係がインストールされます。

Wireguard パッケージをインストールする前に、不足しているパッケージに関する警告が表示され、リポジトリ内で見つからない場合は、無視して続行してください。

次に、「luci-app-ttyd」というパッケージを探してインストールします。これは後でターミナルにアクセスするために使用します。

これらのパッケージをインストールした後、変更を有効にするためにルーターを再起動します。

WireGuardインターフェースを設定する

次に、WireGuardインターフェースを作成します。「ネットワーク → インターフェース」に移動し、左下にある「新しいインターフェースを追加…」を選択します。ポップアップウィンドウで、希望するインターフェース名を入力し、ドロップダウンリストから「WireGuardVPN」を選択して、右下にある「インターフェースを作成」を選択します。

Wireguardインターフェースを作成する

新しいポップアップウィンドウで「キー生成」を選択し、WireGuardインターフェース用の秘密鍵を生成します。「リッスンポート」欄に希望のポート番号を入力します。ここではWireGuardのデフォルトポート「51820」を使用します。「IPアドレス」欄に、WireGuardインターフェースで使用するIPアドレスを入力します。この例では10.0.0.1/24 」を使用しました。「24」という数字はサブネットのサイズを示しています。

Wireguardインターフェースを作成する

設定を保存し、インターフェースを再起動します。

「サービス → ターミナル」に移動し、シェルにログインして、コマンドwg showを入力します。Wiregaurdインターフェースに関する情報(公開鍵を含む)が表示されます。公開鍵をコピーしてください。後でピアを作成する際に必要になります。

Wireguard公開鍵

ファイアウォールを設定する

「ネットワーク → ファイアウォール」に移動し、「トラフィックルール」タブを選択します。ページ下部の「追加」を選択します。ポップアップウィンドウの「名前」欄にルールの名前を入力します(例:「Allow-wg」)。次に、「宛先ゾーン」を「Lan」から「デバイス」に変更し、「宛先ポート」を「51820」に設定します。

Wireguardファイアウォール設定

設定を保存します。

携帯電話でWireguardを設定する

Google PlayからWireguardアプリをスマートフォンにインストールします。インストール後、アプリを開き、新しいインターフェースを最初から作成します。「名前」欄に、インターフェースに使用する名前を入力します。「秘密鍵」欄で、右側の二重矢印アイコンを押して鍵ペアを生成します。上記の公開鍵は、スマートフォンとルーター間のピア接続を作成するために必要になります。「アドレス」欄には、VPN経由でスマートフォンにアクセスする際に使用するIPアドレスを指定します。ここでは10.0.0.2/24使用します。「リッスンポート」欄にポート番号を入力します。今回はデフォルトのポートを使用します。

Androidで仮想プライベートネットワークインターフェースを設定する

設定を保存します。

設定にピアを追加するには、「ピアを追加」を選択します。「公開鍵」フィールドに、ルーターのWireGuard公開鍵を入力します。「エンドポイント」フィールドに、ルーターのパブリックIPアドレスとポートをコロンで区切って入力します(例: 12.34.56.78:51820 51820)。「許可IP」フィールドに、WireGuardインターフェース経由でアクセスするIPアドレスを入力します(ルーターのVPNインターフェースIPアドレスとLANインターフェースアドレスを入力できます)。IPアドレスはカンマで区切る必要があります。サブネットサイズも定義できます。

AndroidでVPNピアを追加する

設定を保存します。

設定の最後の手順は、ルーターにピアを追加することです。

ルータにピアを追加する

「ネットワーク → インターフェース」に移動し、WireGuardインターフェースを選択します。「ピア」タブに移動し、「ピアを追加」を選択します。「説明」欄にピアの名前を入力します。「公開鍵」欄に携帯電話のWireGuardインターフェースの公開鍵を入力し、「許可IP」欄に携帯電話のWireGuardインターフェースのIPアドレスを入力します。「許可IPをルーティング」チェックボックスをオンにします。

ルータにピアを追加する

設定を保存し、インターフェースを再起動します。

テスト構成

スマートフォンでウェブブラウザを開き、URLバーにIPアドレス10.0.0.1または192.168.1.1を入力します。ルーターのウェブサイトにアクセスできるはずです。

AndroidからVPNにログインする

あなただけの仮想プライベートネットワーク

最近、多くのVPNプロバイダーが広告を出していますが、特にセキュリティ強化のためだけにインフラを所有・管理することの重要性は計り知れません。安全なデータ接続を提供するために、他者に頼る必要はありません。OpenWrtとWireguardを使えば、独自のオープンソースVPNソリューションを構築できます。