GNU/Linux >> Linux の 問題 >  >> Ubuntu

Wireguardを使用してUbuntu20.04でVPNを作成する方法

Wireguardは、複数のオペレーティングシステムで利用できる最新の非常に簡単にセットアップできるVPNです。このアプリケーションはUbuntu20.04の公式リポジトリで利用できるため、インストールも非常に簡単です。 ssl証明書の使用に基づくOpenVPNのような他のソフトウェアとは異なり、Wireguardはキーペアの使用に基づいています。このチュートリアルでは、いくつかの簡単な手順で、最新の安定バージョンのUbuntuでVPNサーバーとクライアントピアを構成する方法を説明します。

このチュートリアルでは、次のことを学びます。

  • Ubuntu 20.04FocalFossaにWireguardをインストールする方法
  • 公開鍵と秘密鍵のペアを作成する方法
  • サーバーとクライアントピアを構成する方法
  • すべての着信トラフィックをVPNにリダイレクトする方法

Ubuntu20.04のWireguardVPN

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
Ubuntu 20.04 Focal Fossa
ワイヤーガード
root権限
–指定されたLinuxコマンドは、rootユーザーとして直接、またはsudoを使用して、root権限で実行する必要があります。 コマンド
$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります

インストール

Wireguardは、Ubuntu 20.04の「ユニバース」リポジトリで正式に利用できるため、aptを介してインストールできます。 。執筆時点で利用可能なバージョンは1.0.20200319-1ubuntu1です。 :

 $ sudo apt install wireguard 

プログラムとその依存関係をインストールするかどうかを確認するように求められ、数秒で操作が完了します。

キーの生成

VPNで使用するマシンごとに、公開鍵と秘密鍵を生成する必要があります。秘密鍵はマシン上で秘密にしておく必要があります。公開鍵は他のピアからマシンにアクセスするために使用されます。

キーを生成するには、wgを使用できます 効用。 Wireguard構成ファイル内で、マシンの秘密鍵を参照する必要がありますが、公開鍵は他のピアで使用されます。キーを直接参照するため、理論的にはキーをファイルに保存する必要がないことに注意してください。ただし、便宜上、とにかくそれを行います。

サーバーの秘密鍵を生成するには、genkeyを使用する必要があります wgのサブコマンド 。このコマンドは、作成されたキーをstdoutに出力します;キーをファイルに書き込むには、シェルリダイレクトの機能を使用できます:

 $ wg genkey> server_private_key 

このコマンドはキーを生成し、それをserver_private_keyに保存します ファイルですが、次の警告が表示されます:

警告:誰でもアクセス可能なファイルに書き込んでいます。umaskを077に設定して、再試行することを検討してください。

これは、デフォルトのユーザーが umaskであるためです。 (002 )ファイルはモード664で作成されます 、誰でも読み取り可能ですが、これはお勧めしません。この問題を解決するには、ファイルを作成する前に、現在のシェルセッションで使用されているumaskを変更します。

 $ umask 077 

または、ファイルのアクセス許可を600に変更します 作成後。ここでは、後者のソリューションについて説明します。

秘密鍵の準備ができたら、公開を生成できます それに基づくもの。タスクを実行するには、pubkeyを使用します wgのサブコマンド 。以前と同じように、シェルリダイレクトを使用します。最初にserver_private_keyのコンテンツを渡します stdinへのファイル コマンドを実行し、生成されたキーをserver_public_keyにリダイレクトします。 ファイル:

 $ wg pubkey  server_public_key 

入力を省くために、シェル|を使用する1つのコマンドで、両方のキーを生成できます。 (パイプ)演算子とtee コマンド:

 $ wg genkey | tee server_private_key | wg pubkey> server_public_key 

パイプ演算子の左側にあるコマンドの出力(| )は、右側のプログラムの標準入力に渡されます。 tee コマンドの代わりに、コマンドの出力をファイルと標準出力の両方にリダイレクトできるようにします(シェルリダイレクトの詳細については、こちらをご覧ください)。

キーの準備ができたら、サーバー構成ファイルを作成できます。

サーバー構成ファイル

Wireguardのインストールを構成するために、wg0.confという構成ファイルを作成できます。 次の内容で:

 [Interface] PrivateKey =<サーバーの秘密鍵(server_private_keyファイルのコンテンツ)> Address =10.0.0.1/24ListenPort =51820 

ファイルの名前は任意ですが、インターフェイスに使用する名前wg0に基づいている必要があります。 この場合。この名前は、以下に示すように、サービスの開始時に参照されます。

この例では。 [interface] 構成ファイルのセクションには、次のフィールドが含まれています。

  • PrivateKey
  • 住所
  • ListenPort

PrivateKey フィールド値は、以前に生成したサーバー秘密鍵にすぎません。

住所 フィールドCIDRを使用して、サブネットマスクとともにVPNのインターフェイスに割り当てるアドレスを指定しました 表記。この場合、10.0.0.1/24を使用しました 、したがって、VPN内のWireguard「サーバー」アドレスは10.0.0.1になります 、10.0.0.1からのアドレスの使用可能な範囲内にあります 10.0.0.254へ 。

最後に、 ListenPort フィールドでは、Wireguardが着信トラフィックをリッスンするポートを指定しました。上記のトラフィックを許可するルールもファイアウォールに追加する必要があります。これは次のセクションで行います。

これで、ファイルの権限を変更して、/etc/wireguardに移動できます。 ディレクトリ:

 $ chmod 600 server_public_key server_private_key wg0.conf $ sudo mv server_private_key server_public_key wg0.conf / etc / wireguard 

これで、wg-quickを開始できます @の後にWireguardインターフェースの名前を指定するサービス ユニット名で。この表記は何ですか?これはsystemdの機能です。これを使用すると、「テンプレート」ファイルに基づいて複数のユニットファイルを生成し、@の後にテンプレートで置換される値を渡すことができます。 ユニット名の記号。これは、[email protected]のコンテンツです。 単位:

 [Unit] Description =WireGuard via wg-quick(8)for%IAfter =network-online.target nss-lookup.targetWants =network-online.target nss-lookup.targetDocumentation =man:wg-quick(8) Documentation =man:wg(8)Documentation =https://www.wireguard.com/Documentation=https://www.wireguard.com/quickstart/Documentation=https://git.zx2c4.com/wireguard-tools/ about / src / man / wg-quick.8Documentation =https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 [Service] Type =oneshotRemainAfterExit =yesExecStart =/ usr / bin / wg -クイックアップ%iExecStop =/ usr / bin / wg-クイックダウン%iEnvironment =WG_ENDPOINT_RESOLUTION_RETRIES =infinity [Install] WantedBy =multi-user.target 

@の後に指定する値 ユニット名の開始時または停止時に、%iを置き換えます ExecStartで およびExecStop 行。この場合、wg0を使用します :

 $ sudo systemctl enable --now wg-quick @ wg0 

上記のコマンドを使用してサービスを開始し、起動時に自動的に開始されるようにします。構成が適用されたことを確認するために、wgを実行できます。 指図。生成される出力には、wg0に関する情報が表示されます。 インターフェイス:

 $ sudo wginterface:wg0公開鍵:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4 =秘密鍵:(非表示)リスニングポート:51820 

それでは、ファイアウォールとパケット転送を構成してみましょう。

ファイアウォールとネットワークのセットアップ

このチュートリアルでは、ufwの使用を想定しています。 。前に述べたように、構成ファイル51820で指定したポートを介した着信トラフィックを許可するルールを追加する必要があります。 。非常に単純なコマンドを実行することでそれを行います:

 $ sudo ufw allow 51820 / udp 

また、システムでパケット転送を許可する必要があります。タスクを実行するために、28行からコメントを削除します。 /etc/sysctl.confの ファイル、次のようになります:

#次の行のコメントを解除して、IPv4net.ipv4.ip_forward=1のパケット転送を有効にします

システムを再起動せずに変更を有効にするには、次のコマンドを実行する必要があります。

 $ sudo sysctl -p 

次のステップでは、クライアントを構成します。

クライアントキーの生成

次に、クライアントとして使用するシステムに移りましょう。その上にWireguardをインストールする必要があります。完了すると、サーバーで行ったのと同じようにキーペアを生成できます。

 $ wg genkey | tee client_private_key | wg pubkey> client_public_key 

サーバーサイドで行ったのと同じように、wg0.confを作成します 構成ファイル。今回はこのコンテンツで:

 [Interface] PrivateKey = Address =10.0.0.2/24 [Peer] PublicKey = EndPoint =
:51820AllowedIPs =0.0.0.0/0 

Interfaceに含まれるフィールドの意味はすでに見てきました。 セクション、サーバー構成を生成したとき。ここでは、値をクライアントに適合させました(10.0.0.2があります) VPN内のアドレス)。

この構成では、新しいセクション[Peer]を使用しました 。その中で、ピア(この場合は「サーバー」として使用するもの)に関連する情報を指定できます。使用したフィールドは次のとおりです。

  • PublicKey
  • エンドポイント
  • 許可されたIP

PublicKey フィールドには、 publicを指定します ピアの鍵。この場合、サーバーで生成した公開鍵です。

エンドポイント ピアのパブリックIPアドレスまたはホスト名の後にコロンとピアがリッスンするポート番号(この場合は51820)です。 。

最後に、 AllowedIPsに渡される値 フィールドは、CIDR表記のIPアドレスとサブネットマスクのコンマ区切りのリストです。指定されたアドレスからのピアに向けられたトラフィックのみが許可されます。この場合、0.0.0.0/0を使用しました 値として:「キャッチオール」値として機能するため、すべてのトラフィックがVPNピア(サーバー)に送信されます。

サーバー側で行ったのと同じように、適切な権限を設定し、キーと構成ファイルを/etc/wireguardに移動します ディレクトリ:

 $ chmod 600 client_public_key client_private_key wg0.conf $ sudo mv client_public_key client_private_key wg0.conf / etc / wireguard 

構成ファイルを配置したら、サービスを開始できます。

 $ sudo systemctl enable --now wg-quick @ wg0 

最後に、[Peer] クライアントに関連するセクションは、以前にサーバーで作成した構成ファイルに追加する必要があります 。 追加 次のコンテンツ:

 [Peer] PublicKey=<クライアントの公開鍵>AllowedIPs=10.0.0.2/32 

この時点で、サービスを再開します:

 $ sudo systemctl restart wg-quick @ wg0 

関連するピアに関する情報は、wgの出力で報告されるはずです。 コマンド:

 $ sudo wginterface:wg0公開鍵:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4 =秘密鍵:(非表示)リスニングポート:51820peer:t5pKKg5 / 9fJKiU0lrNTahv6gvABcmCj 

この時点で、「クライアント」システムから、10.0.0.1でサーバーにpingを実行できるはずです。 住所:

 $ ping -c 3 10.0.0.1PING 10.0.0.1(10.0.0.1)56(84)バイトのデータ.10.0.0.1から64バイト:icmp_seq =1 ttl =64 time =2.82ms64バイト10.0.0.1から:icmp_seq =2 ttl =64 time =38.0 ms64 bytes from 10.0.0.1:icmp_seq =3 ttl =64 time =3.02 ms --- 10.0.0.1 ping statistics --- 3パケット送信、3受信、0%パケット損失、時間2003msrttmin/ avg / max / mdev =2.819 / 14.613 / 37.999 / 16.536 ms 

結論

このチュートリアルでは、Ubuntuの最新の安定バージョンである20.04FocalFossaでWireguardを使用してVPNを作成する方法を説明しました。このソフトウェアは、特にOpenVpnなどの他のソリューションと比較した場合、インストールと構成が非常に簡単です。

セットアップに使用する公開キーと秘密キーを生成する方法と、すべてのトラフィックがVPNにリダイレクトされるようにサーバーとクライアントの両方を構成する方法を確認しました。与えられた指示に従うと、作業セットアップができます。詳細については、プロジェクトページをご覧ください。


Ubuntu
  1. Ubuntu20.04でWireGuardVPNを設定する方法

  2. UbuntuでWireGuardVPNを設定する方法(ステップバイステップガイド)

  3. Ubuntu で MDADM を使用して RAID アレイを作成する方法

  1. Ubuntu20.04でdockerを使用してdockerベースのLAMPスタックを作成する方法

  2. Ubuntu18.04でWireGuardVPNを設定する方法

  3. Ubuntu20.04でWireGuardVPNを設定する方法

  1. Ubuntu14.04でONLYOFFICEEnterpriseEditionを使用してWebオフィスを作成する方法

  2. Ubuntu18.04LTSでPritunlを使用してVPNサーバーをセットアップする方法

  3. UbuntuでPythonBoto3を使用してVPCを作成する方法