WireGuardは、シンプルで高速で最新のVPN実装です。広く展開されており、クロスプラットフォームを使用できます。
VPNは、伝統的に理解し、構成、展開するのが難しいものでした。WireGuardは、単一のタスクに焦点を当て、キーディストリビューションやプッシュ構成などを除外することにより、その複雑さのほとんどを削除しました。トラフィックを暗号化および検証するネットワークインターフェイスを取得し、アドレス、ルーティングなどのセットアップなどの残りのタスクは、次のような通常のシステムツールに任されていますip-route(8)そしてIP-Address(8)。
暗号化キーのセットアップは、キーベースの認証用のSSHの構成に非常に似ています。接続の各側には、独自のプライベートキーとピアの公開キーがあり、これは交換されたトラフィックの暗号化と検証を開始するのに十分です。
WireGuardの仕組みの詳細、および他のプラットフォームでの可用性に関する情報については、参照セクションを参照してください。
ワイヤガードの概念
WireGuardを他のものと同様に、主にネットワークインターフェイスと考えるのに役立ちます。IPアドレス、CIDRなどの通常の属性があり、それに関連するルーティングがあります。しかし、物事のVPN部分を処理するワイヤガード固有の属性もあります。
これらはすべて、異なるツールを介して構成できます。WireGuard自体は、ユーザースペースパッケージに独自のツールを出荷しますワイヤーガードツール
:WGそしてwg-quick。ただし、これらは厳密には必要ありません。適切な特権とカーネルコールを備えたユーザースペースは、ワイヤガードインターフェイスを構成できます。例えば、systemd-networkd
そしてネットワーク管理者
ワイヤガードのユーザースペースユーティリティなしでは、独自に行うことができます。
ワイヤガードインターフェイスの重要な属性は次のとおりです。
- 秘密鍵:対応する公開キーとともに、データの認証と暗号化に使用されます。これはで生成されます
WG GenKey
指示。 - ポートを聞いてください:WireGuardが着信トラフィックのために聴くUDPポート。
- のリストピア、それぞれ:
- 公開鍵:秘密鍵の一般の対応。そのピアの秘密鍵から生成され、
WG PubKey
指示。 - 終点:暗号化されたトラフィックをどこに送信しますか。これはオプションですが、対応するピアの少なくとも1つが接続をブートストラップするためにそれを持っている必要があります。
- IPSを許可しました:トラフィックを送信するとき、またはトラフィックを受け取るときに、このピアの内部トンネルの宛先ネットワークまたはアドレスのリスト、ソースネットワークまたはアドレスがトラフィックを送信できるようにすることが許可されています。
- 公開鍵:秘密鍵の一般の対応。そのピアの秘密鍵から生成され、
注記:
暗号化は単純ではありません。たとえば、秘密鍵を使用してトラフィックを解読または署名し、公開キーを使用してトラフィックの信ity性を暗号化または検証するために使用されます。これは単純化であり、多くの重要な詳細を隠しています。WireGuardには、そのプロトコルと暗号化の取り扱いについて詳細な説明がありますそのウェブサイトで。
これらのパラメーターは、低レベルで設定できますWGツール、コマンドラインを介して直接または構成ファイルを使用します。ただし、このツールでは、インターフェイスのワイヤーガード以外の設定は処理されません。たとえば、IPアドレスを割り当てたり、ルーティングを設定したりしません。このため、使用する方が一般的ですwg-quick。
wg-quick
ワイヤガードインターフェイスのライフサイクルを処理します。それは、それを持ち上げたり下げたりしたり、ルーティングをセットアップしたり、インターフェイスの前後に任意のコマンドを実行したりすることができます。構成ファイルを拡張しますWG
独自の追加設定で使用できます。これは、そのファイルに与えるときに留意することが重要ですWG
、設定が含まれるためWG
何も知りません。
のwg-quick
構成ファイルには任意の名前を付けることができ、システム上のどこにでも配置できますが、ベストプラクティスは次のとおりです。
- ファイルをに配置します
/etc/wireguard
。 - 制御するインターフェイスにちなんで名前を付けます。
たとえば、呼ばれるファイル/etc/wireguard/wg0.conf
wireguardネットワークインターフェイスに必要な構成設定がありますWG0
。このプラクティスに従うことで、あなたは電話をかけることができるという利点を得るwg-quick
インターフェイス名のみで:
$ sudo wg-quick up wg0
それはWG0
インターフェイスアップし、IPアドレスを指定し、ルーティングを設定し、WireGuard固有のパラメーターを機能させるためのワイヤーガード固有のパラメーターを構成します。このインターフェイスは通常呼ばれますWG0
、しかし、有効なネットワークインターフェイス名を持つことができます。オフィス
(名前の後にインデックス番号は必要ありません)、Home1
など。複数のピアに接続する予定がある場合、意味のある名前を付けるのに役立ちます。
このような構成ファイルの例を見てみましょう。
[Interface] PrivateKey = ejdsgos7bz/uwkusren+vhcjppr3m3ulb3v3v1su = listenport = 51000Address = 10.10.11.10/24ポイント、exampleallowedips = 10.10.11.0/24、10.10.10.0/24
の中に[インターフェース]
セクション:
住所
:これは、WireGuardインターフェイスがセットアップされるIPアドレスとCIDRです。リッスンポート
:UDPポートWireGuardは、トラフィック(リスニングと送信)に使用します。privatekey
:このインターフェイスに向けたトラフィックを解読するために使用される秘密の鍵。
のピアリスト、それぞれが独自のもの[ピア]
セクション(上記の例には1つだけがあります)、次のようになります。
publicKey
:このピアにトラフィックを暗号化するために使用されるキー。終点
:暗号化されたトラフィックをどこに送信しますか。Aldocatips
:トラフィックを送信するとき、これはこのピアを識別するターゲットアドレスのリストです。トラフィックを受信するときは、トラフィックのソースになることが許可されているアドレスのリストです。
ピアごとにキーピアを生成するには、WG
コマンドが使用されます:
$ umask 077 $ wg genkey> wg0.key $ wg pubkey wg0.pub
そして、の内容WG0.KEY
そしてwg0.pub
構成ファイルで使用できます。
これは、このインターフェイスがによって育てられたときのように見えるものですwg-quick
:
$ sudo wg -quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0/dev/fd/63 [#] ip -4アドレスAdd 10.10.11.10/24 dev wg0 [#] ip link set mtu1420 up dev wg0 [#] ip -4ルート追加10.10.10.0/24 dev wg0
これは何wg-quick
:
- ワイヤガードを作成しました
WG0
インターフェース。 - 構成ファイルのデータで構成しました。
- からIP/CIDRを追加しました
住所
フィールドへWG0
インターフェース。 - 適切なMTUを計算しました(必要に応じて構成でオーバーライドできます)。
- のルートを追加しました
Aldocatips
。
この例では、その例に注意してくださいAldocatips
2つのCIDRネットワークブロックのリストですが、wg-quick
のルートのみを追加しました10.10.10.0/24
スキップ10.10.11.0/24
。それは住所
すでにaとして指定されていました/24
1つ。アドレスをASを指定していましたか10.10.11.10/32
代わりに、次にwg-quick
のルートを追加していたでしょう10.10.11.0/24
明示的に。
方法をよりよく理解するためにAldocatips
作業、簡単な例を見てみましょう。
このシステムがトラフィックをに送信したいとしましょう10.10.10.201/24
。それを使用すると言うルートがありますWG0
そのためのインターフェース:
$ ipルートGet 10.10.10.20110.10.10.10.10.10.10.10.10.10.10.10.10 UID 1000キャッシュ
以来WG0
ワイヤガードインターフェイスであり、その構成を参照して、ピアがそのターゲットアドレスを持っているかどうかを確認しますAldocatips
リスト。1人のピアがそれを持っていることがわかりました。その場合、トラフィックは次のとおりです。
a)私たちとして認証され、その仲間のために暗号化されます。
b)構成されたものを介して送られます終点
。
それでは、逆を想像しましょう。このシステムはトラフィックを受け取りましたリッスンポート
UDPポート。それが復号化され、それぞれの公開キーを使用してリストされているピアの1つから来たと確認できる場合、およびソースIPが対応するものと一致する場合Aldocatips
リスト、その後、トラフィックが受け入れられます。
ノーがある場合はどうなりますか終点
?さて、VPNをブートストラップするには、少なくとも1人のピアが持っている必要があります終点
、そうでなければ、どこにトラフィックを送信するかわからないので、「宛先アドレスが必要」というエラーが発生します(を参照トラブルシューティングセクション詳細については)。
しかし、仲間がお互いを知ったら、終点
インターフェイスの設定は、トラフィックがどこから来たのかを覚えており、そのアドレスを現在のエンドポイントとして使用します。これは、いわゆる「ロードウォリアー」ピアを自動的に追跡するという非常に優れた副作用があり、IPの変更を続けています。これは、新しいネットワークで吊り下げられて目覚め続けているラップトップで非常に一般的であり、その新しいアドレスから再びVPNを確立しようとします。
ピア
「ピア」という用語は、「サーバー」または「クライアント」に使用されることが好ましいことに気付くでしょう。一部のVPNドキュメントで使用されるその他の用語は「左」と「右」です。これは、「サーバー」と「クライアント」の違いが少しぼやけていることを既に伝え始めています。それは、たとえあったとしても、トラフィック交換の開始時にのみ重要です。誰が最初のデータパケットを送信しますか?
その意味で、「サーバー」はアイドル状態に座って接続が開始されるのを待つことを期待しており、「クライアント」がイニシエーターです。たとえば、会社VPNピアとの接続を開始する公共のカフェのラップトップ。ラップトップは、交換を開始しているため、そのピアの住所を知る必要があります。しかし、「サーバー」は、事前にラップトップのIPを知る必要はありません。
ただし、サイトからサイトへのVPNでは、2つの個別のネットワークがトンネルを介して接続されている場合、サーバーは誰で、誰がクライアントですか?両方!そのため、代わりに「ピア」と呼ぶのが最善です。
すべてを一緒に入れて
この紹介からの重要なポイント:
- WireGuard VPNに参加している各ピアには、秘密鍵と公開鍵があります。
Aldocatips
トラフィックを送信する際のルーティングキーとして、またトラフィックを受け取るときはACLとして使用されます。- リモートピアでVPNを確立するには、その公開キーが必要です。同様に、リモートピアには公開キーが必要になります。
- 少なくとも1人のピアが必要です
終点
VPNを開始できるように構成されています。
これらの(およびその他の)概念をよりよく理解するために、次のセクションでいくつかのワイヤガードVPNを作成し、いくつかの一般的なセットアップを示します。
ピアツーサイト
- ピアツーサイトについて
- ピアツーサイト「オンルーター」をセットアップする
- 内部デバイスにピアツーサイトをセットアップします
サイトからサイトへ
- サイトからサイトへのセットアップ
デフォルトゲートウェイ
- VPNをデフォルトゲートウェイとして使用します
他の一般的なタスク、ヒント、ヒント
- 一般的なタスク
- セキュリティのヒント
- トラブルシューティング
注記:
このガイドを通して、VPNの「接続」について言及することがあります。WireGuardはUDPを使用しており、永続的な接続はないため、これは技術的に間違っています。この用語は、理解を促進するためだけに使用されており、例の仲間がお互いを知っており、すでに握手を完了していることを意味します。
参考文献
- を参照してくださいWireGuardのWebサイト詳細については。
- のワイヤガードクイックスタート良い紹介とデモがあります。
- WG(8)そしてwg-quick(8)マニュアルページ。
- 詳細な説明WireGuardが使用するアルゴリズムの。
以前の暗号ライブラリ 次のWebサービス
このページは5日前に最後に変更されました。フォーラムでこの文書を改善するのに役立ちます。