OpenWrtでWireGuardを設定する

前回の投稿の続きを書こうと思います。前回はPPPoEとDDNSの設定をしました。

もう一度私のネット環境をお伝えするとIPoE(Transinx)接続のIPv6環境です。前回の投稿でも言及していますが、IPv6だけでWireGuardの接続は可能です。PPPoEもDDNSも必須ではないです。同じIPoE環境でとりあえずWireGuradを試したいと言う方はこの投稿のIPv6に関連した部分を読めば直ぐに使用できるかと思います。ただ必要なソフトウェアの「luci-proto-wireguard」と「qrencode」はインストールしてOpenWrtを再起動させてください。

目次

  1. 事前準備
  2. ポートの開放
  3. WireGuardのインターフェイス追加と設定
  4. ファイアウォールの設定
  5. スマートフォンからの接続
  6. おわり

事前準備

事前準備として上記に記載したOpenWrtに必要なソフトウェアをインストールとしてスマートフォンへWireGuardのアプリをインストールします。

WireGuard
https://www.wireguard.com/install/

インストールが終わりましたらポートのIPv6接続に必要なポートの開放をします

ポートの開放

私の環境では、バッファロー製のルーターがIPv6用に動いています。ルーターは、インターネットと接続している端末の間で壁や門の役割を果たしています。セキュリティ上、ポートの開放などをしない限り、壁や門が邪魔で外部からの接続はできませんが、ポートを開放することで接続が可能になります。

前回、OpenWrtで設定したIPv4でのインターネット接続は、ルーターをPPPoEパススルー接続しているため、OpenWrtから直接インターネットに接続されています。そのため、ルーターでのIPv4設定は必要ありません。ただし外部から接続するためにはOpenWrtのファイアウォールも通す必要があります。IPv6およびIPv4の両方で、そのファイアウォールを通過させないと外部から宅内へアクセスできません。ファイアウォールの設定については、後半で説明します。

では、ポートの開放を行います。

Webブラウザでルーターに接続します。私の使用しているバッファロー製のルーターではログイン後、「詳細設定」→「セキュリティー」→「IPv6フィルター」を開くことで設定が可能になります。

IPv6フィルターの設定例

動作 通過

方向 Internet->LAN

IPアドレス 送信元: (何も書かなければ全てになります)
      宛先: 2409:1010:abab:2020:cdcd:3030:efef:1234(wan6のIPアドレス)

プロトコル TCP/UDP 任意のUDPポート 任意のUDPポート: 51820(WireGuardのデフォルトのポート番号ですが任意に変更が可能です。)

設定を終えたら追加のボタンをクリックしてください。

上記の内容でルーターのセキュリティーが許可されインターネットからOpenWrtに到達可能になりました。

WireGuardのインターフェイス追加と設定

インターフェイスの作成(WireGuard)

インターフェイスの画面を開いてインターフェイスを新規作成をしていきます。「インターフェイス新規作成」ボタンをクリックして作成画面を表示してください。

名前
wg(お好き名前にしてください)

プロトコル
WireGuard VPN

設定と選択が終わったら「インターフェイスの作成」をクリックし「インターフェイス >> wg」の画面を表示させます。

WireGuardの設定

インターフェース >> wg

一般設定

状態 デバイス: wireguard-vpnの状態

プロトコル WireGuard VPN

このインターフェースを無効にする チェックアウト

ブート時に起動 チェック

秘密鍵・公開鍵
「Generate new key pair」のボタンをクリックして生成してください。

リッスンポート 51820

IPアドレス 10.0.1.1

ホストルートなし チェックアウト

設定が終わったらファイアウォール設定のタブを開きます

ファイアウォール設定

ファイアウォールゾーンの作成または割り当て
未設定(グレー) → lan lan:(グリーン)

ファイアウォール設定を終えたら「ピア」のタブを開きます。

ピアの追加

ピアの画面を開いたら「ピアの追加」ボタンをクリックし編集画面を表示します。

インターフェース >> wg >> Edit peer

無効 チェックアウト

説明 myPhone(デバイスの名前等お好きな名前を設定してください)

公開鍵・秘密鍵
「Generate new key pair」のボタンをクリックして生成してください。

事前共有鍵
「Generate new key pair」のボタンをクリックして生成してください。

許可されたIP 10.0.1.2

許可されたIPルート チェック

エンドポイントホスト 入力せず

エンドポイントポート 51820

永続的なキープアライブ 入力せず

設定を終えたら「Generate configuration」をクリックしてQRコードを表示させます。

Configurationで設定ファイルの出力

インターフェース >> wg >> Edit peer >> Generate configuration

Connection endpoint hoge.f5.si
IPv6アドレスで接続する場合はここでIPアドレスを選択します。

許可されたIP 0.0.0.0/0
      ::/0

DNS Servers 192.168.1.1

アドレス一覧 10.0.1.2

ほぼ上記の様な内容になっているかと思います。「Connection endpoint」のリストを確認して頂くと分かると思いますが、DDNSで設定したドメイン名やWANのIPアドレス、PPPoEのIPv4アドレス、WAN6のIPv6アドレスがリストされています。DDNSやPPPoEを設定をせず、WireGuardをIPv6で試したかった方はここでIPv6のグローバルアドレスを選択してください。

「Connection endpoint」の選択が終わったら、QRコードと横並びになっている設定内容を確認して設定に問題が無さそうであればスマートフォンでWireGuardのアプリを起動してQRコードを読み取ってください。読み込みが完了したらOpenWrtの画面に戻り、表示されている「Configuration」画面の右上に有る「保存」ボタンをクリックしてインターフェイスの画面に戻ります。

インターフェイス画面に戻ったら「保存&適用」のボタンをクリックし設定を適用させます。

WireGuradの設定が終わったので最後のファイアウォールの設定に移ります。

ファイアウォールの設定

OpenWrtのWebGUI上部メニューの「ネットワーク」へ移動し「ファイアウォール」を選択します。ファイアウォールの設定画面が現れたら「トラフィック・ルール」のタブを開きます。

ファイアウォール – トラフィック・ルール

最後の設定です。この設定を終える事で外部からポート:51820を通って内部侵入が可能になります。侵入と書くと怖さが有りますが、ポートの開放も含めセキュリティーリスクが有ると言うことなので怖さを含めました。

トラフィック・ルール画面内の左下側にある「追加」ボタンをクリックします。

ファイアウォール – トラフィック・ルール – 名称未設定のルール

一般設定

名前 WireGuard

プロトコル UDPのみチェック

送信元ゾーン wan wan: wan6: pppoe:
(内容は環境によって違うと思いますが赤色のWAN側を選びます)

送信元アドレス 入力せず

送信元ポート 51820

宛先ゾーン デバイス入力

宛先アドレス 入力せず

宛先ポート 51820

アクション 許可

詳細設定

アドレスファミリの制限
IPv4及びIPv6(環境に合わせた設定にしてください)

設定を終えたら「保存」をクリックしてファイアウォール – トラフィック・ルールの画面に戻ります。戻ったら「保存&適用」をクリックして設定を適用させたら。終わりです。

スマートフォンからの接続

宅内で作業をしていると思うので一旦スマートフォンのWiFiをOFFにしてモバイル通信に切り替えます。

スマートフォンのWireGuardアプリを開き設定名をタップしてインターフェイスのスイッチをONにします。画面内は「インターフェイス」と「ピア」のグループに分かれていると思います。スイッチをONにするとピアのグループ内の最下段に「直近のハンドシェイク」と出たら接続に成功です。

分かりにくい場合はこちらの投稿も参考にしてみてください。

スマートフォンのWebブラウザからhttp://192.168.1.1http://10.0.1.1もしくはhttp://openwrt.lanに接続アクセスします。OpneWrtのログイン画面が表示されれば外部から自宅にアクセスできています。

おわり

今回の投稿では外部から自宅にアクセスできる様になりましたが、「外部→自宅→外部」では接続できていないかと思います。次回はDNSの設定に手を加え外部に接続できる様にしつつ、AdBlockを追加してネットサーフィン時の広告を減らす環境を手に入れたいと思います。私がOpenWrtを好きになった理由は軽量コンパクト、設定が簡単という部分、そしてWireGuard+AdBlockの組み合わせが凄く気に入ったからです。外出中、ブラウザの広告ウザイって時にVPNをONにすると、とても快適になります。映像配信プラットフォームなどではリージョン問題で海外からのアクセスを受付無いサービスが有りますが海外旅行中に配信を見たい場合もVPNをONにすれば良いだけです。VPNが有る生活はとても便利かと思います。


内容の更新と確認(2025/02/19)

ピアの設定をいくつか試し、投稿の内容を少し変更しました。「永続的なキープアライブ」を設定した後にOpenWrtを再起動し、「状態」→「WireGuard」で接続をモニタリングすると、「送信済みデータ」のカラムで何もしていないのに少量のパケットが送信されているのが確認できると思います。パケットが漏れている感じがして気持ちが悪いので、以前は25に設定していましたが、入力せずに変更しました。また、ピアの設定でオプションになっている、エンドポイントホスト、エンドポイントポートについても入力せずに変更しました。幾つかの組み合わせた内容を別の投稿で公開できればと思っています。

ちなみに、IPv6アドレスを使ってWireGuard接続する場合、宅内のWiFi環境(我が家では上流のバッファローのルーター)で接続していても、下流のOpenWrtのサブネットに潜ることができます。しかし、ドメイン名で接続しようとすると、宅内からは接続ができません。モバイル通信など(自宅のWiFiに繋がっていない状態)にしないと外部から接続ができないので、現状対策としては、ピアの設定をいくつか作ると良いかもしれません。ドメイン名で接続する方法とIPv6アドレスで接続する方法の2つの接続を作り、それぞれをスマートフォンのアプリに登録すると、簡単な解決になると思います。

内容の更新と確認(2025/02/21)

エンドポイントポートについて入力せず設定を作った場合、結果的にスマートフォンのアプリで「Listen ポート」にポート番号を設定する必要があるので、最初から設定し設定ファイルの生成時にインターフェースの側にもポート番号が設定されている状態を選びました。

コメントする