blog

WireGuard を使って、外部ネットワークから OpenWrt にアクセスする

WireGuardを使用して、外部ネットワークからOpenWrtにアクセスする OpenWrtの使用中、DDNSを介してOpenWrtをパブリックネットワークに公開すると、攻撃や侵入を受けやすいので、...

Apr 26, 2023 · 6 min. read
シェア

WireGuard を使って外部ネットワークから OpenWrt にアクセスする。

OpenWrtを使用する過程で、DDNSによってOpenWrtをパブリックネットワークに公開すると、攻撃や侵入を受けやすいので、VPNとしてWireGuardを使用することで、より安全にアクセスすることができます。OpenWrt用WireGuard VPN

WireGuard は、仮想プライベートネットワーク接続を迅速かつ安全に確立できる最新のVPNプロトコルです。 OpenVPNやI PSecのような従来のVPNプロトコルと比較して、WireGuardはよりシンプルな設計、より速い速度、より高いセキュリティ、より少ないコードを提供します

コアコンセプト

WireGuardには主に以下のコンセプトがあります:

  • インターフェース: 暗号化および復号化されたトラフィック、ルーティング、その他のトランスポート情報を処理するための WireGuard エンドポイントの仮想ネットワークインターフェースを表します。
  • Peer: WireGuard を使用して接続されている各デバイスまたはノードを示します。各Peerは、接続時に公開鍵や事前共有鍵などの情報を交換する必要があります。
  • 公開鍵: 各 WireGuard ピアが所有する公開鍵で、トラフィックの暗号化と事前共有鍵の生成に使用されます。
  • 秘密鍵: 各公開鍵とペアになっている秘密鍵で、所有者のデバイスにのみ保存されるべきものです。
  • Endpoint: 接続を確立するためにアクセスできるネットワーク内の Peer の IP アドレスとポート番号。
  • IP Assignment: 各インタフェースに使用する IPv4/IPv6 プレフィックス範囲を指定します。
  • 許可された IP: WireGuard によって処理される IP パケットと、どのインターフェースに再ルーティングされるかを定義します。
  • 事前共有キー: ピア間でセキュアな接続を確立する際にパケットを暗号化するために使用される共有キー。
  • Listen Port: Peer がリッスンする UDP ポート番号。他のPeerはこのポートを使ってPeerにパケットを送信します。

OpenWrt を設定する

WireGuard をインストールする

opkg update && \
 opkg install wireguard-tools luci-app-wireguard luci-i18n-wireguard-zh

このコマンドは WireGuard の依存関係を自動的にインストールします。OpenWrt 管理インターフェース - ステータスを開くと、WireGuard の制御インターフェースが表示されます。このとき、WireGuard ポートが設定されていないことを示すプロンプトが表示されるので、ネットワークインターフェースで設定する必要があります

キーを作成する

wireguard-tools を使って公開鍵と秘密鍵を作成することをお勧めします。

  • フォルダを作成し、パーミッションを変更します
mkdir wireguard && cd wireguard
umask 077

umask770の機能は、ファイルとフォルダのデフォルトのパーミッションをシステムに設定し、それらを作成したユーザだけがフルパーミッションを持つようにすることです

  • OpenWrt キーペアの作成

まず秘密鍵を作成し、次に秘密鍵を使って公開鍵を作成します

<$1

wg genkey > openwrt_private_key
wg pubkey < openwrt_private_key > openwrt_public_key
  • 事前共有キーを作成
wg genpsk > pre_share_key
  • OpenWrt キーペアの作成
wg genkey > peer_private_key
wg pubkey < peer_private_key > peer_public_key

WireGuard インタフェースを追加する

インターフェースを追加する

[Network-Interfaces]で[Add New Interface]そうすることを選んでください、[Protocol Type]で[WireGuard VPN]WireGuard VPN」を選択して確認します。プロトタイプ」カテゴリから「WireGuard VPN」を選択し、オプションインストールを行います。

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

まず、インターフェイスを設定するか、新しい鍵ペアを生成することを選択できます。

  • 公開鍵/秘密鍵: 暗号化通信とピア接続の認証に使用します。
  • リスニング・ポート: ネットワーク・トラフィックをリッスンして処理するために使用される UDP ポート番号で、相手側がアクセスしやすいように固定する必要があります。
  • リスニング・ポート: ネットワーク・トラフィックをリッスンして処理するために使用される UDP ポート番号で、相手側がアクセスしやすいように固定する必要があります。
  • IP アドレス: ノードを識別するために使用され、通常は CIDR 形式で表されます。例えば、.0.0.1/24 という設定は、OpenWrt ノードの IP アドレスが 10.0.0.1 であることを意味し、/24 は、10.0.0.0 から 10.0.0.255 までの範囲を含むネットワークプレフィックスの長さを意味します。
  • ホストレスルーティング: 複数のピア間で共通のネットワーク環境を共有する方法で、ホストのルーティングテーブルを変更することなく、複数のサブネット間で通信することができます。ホストレスルーティングでは、相互作用するピアのアドレスのみをローカルのルーティングテーブルに追加することができるため、他の VPN のようにすべてのトラフィックを VPN 経由でトンネルする必要がなく、最短経路を取ることで効率的な直接通信が可能になります。これにより、他のVPNのようにすべてのトラフィックをVPNにトンネルする必要がなく、最短経路を使用することで効率的な直接通信が可能になり、追加のオーバーヘッドや不要な待ち時間を回避できます。ホストレスルーティングを使用することで、WireGuardネットワークにサブネットやノードを追加しても既存のIPルーティング設定が中断されることがないため、より効率的な通信が実現します。

ぴあセッティング

WireGuardIntaflexのプログラム "Peer"。-Add Peer選択」を選択して確認してください。公開鍵、秘密鍵、事前共有鍵のいずれかを作成した場合は、それを使用することができ、新しい鍵ページまたは事前共有鍵を作成した場合は、それを使用することができます。 Pairs and Pre-Shared Keys

  • 事前共有鍵: 接続の両側の認証のセキュリティを強化し、通信中のデータのプライバシーと完全性を保護するための対称暗号化鍵を生成するために使用します。
  • Allowed IPs: ピアが許可する IP アドレスのリストを追加します。これは、宛先がこのノードに設定されている IP パケットだけが WireGuard インターフェイスを経由してルーティングされることを許可されることを示します。鍵に対応するクライアントの IP を指定することをお勧めします。これは、競合しないようにする必要があります。たとえば、.0.0.2/32 は、このピアだけがこの鍵ペアを使用してアクセスすることを許可します。

その他の設定を変更する必要があります。Intelligent FilesとOpenWrtの設定を再度有効にしたい場合は、以下のリンクをクリックすることで、効果的に行うことができます。

手の側面に使用

セットアップファイルを追加します。

  • openwrt.conf
[Interface]
PrivateKey = 8MG0PBAlRjk3+tc9DWfOAZF+lrDKAn4GREs+7NpsMGo=
Address = 10.0.0.2/32

[Peer]
PublicKey = Dc+xgDkSA7vYh311ZOhCPeGS5Rnqphel1u60VeCI2lE=
PresharedKey = HAntyG+i3nhaDzy7PhmzUDk4+te20JVPglzFbMllJvg=
AllowedIPs = 10.0.0.0/24
Endpoint = 192.168.2.253:19999
PersistentKeepalive = 25
  • Interface: ローカルノードのネットワークインタフェース属性設定を示します。

    • PrivateKey はローカルノードの秘密鍵で、ネットワークパケットの暗号化と復号化に使用されます。
    • Address は、ノードのあるサブネットの IPv4 アドレスで、OpenWrt で設定されているピアのアドレスと同じである必要があります。
  • Peer: 接続するリモートノードの属性設定です。

    • PublicKey はピアの公開鍵で、リモートノードと公開鍵を交換することで取得できます。
    • PresharedKey は、ローカルノードとリモートノードの間でネゴシエートされる事前共有鍵で、接続の両側で認証のセキュリティを強化し、通信中のデータのプライバシーと整合性を保護するための対称暗号化鍵を生成するために使用されます。
    • AllowedIPs は、VPNトンネルを通過することを許可されたIPアドレスの範囲です。これは、VPNを通過するすべてのトラフィックをフィルタリングするために使用されます。この場合、.0.0.0/24ネットワークセグメントにアクセスするものだけがVPNアクセスを使用します。
    • EndpointはリモートノードのIPアドレスとポート番号で、パブリックネットワークでアクセスする場合は、もう一方の端がパブリックIPを持っている必要があります。
    • PersistentKeepaliveは、VPN接続が長時間の非アクティブによって切断されるのを防ぐために、接続をアクティブに保つことです。

WireGuard をインストールする

WireGuard Installation.confを選択してインポートし、起動をクリックして、接続を記述する最新のハンドシェイクがあることわかります。 成功

OpenWrtWireGuardの接続状態を確認し、カメラ側が正常に接続されていることを確認します。

ブラウザを使って訪問すると、普通にOpenWrtのページ

以下はアクリルの使用例です。
Read next

gRPCでStreamとTransportイベントをリスニングする

gRPC はリクエストを監視するインターセプターを提供しますが、ストリームまたはトランスポートの特定のイベントはインターセプターを通じて実装できません。gRPC はそのよ

Sep 4, 2022 · 3 min read