Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

Wireguardを使用してセルフホストVPNをセットアップする

VPN(仮想プライベートネットワーク)は、ユーザーのコンピュータが直接プライベートネットワークに接続されていたかのようにユーザーがリモートプライベートネットワークに接続することができます。このテクノロジーは当初、社内ネットワークの場所に実際に存在しない従業員のために、企業の社内プライベートネットワークへのリモートアクセスを可能にするために開発されました。

VPNサーバーは、内部ネットワークの場所に展開されます。このサーバーはパブリックネットワーク上にあり、従業員はVPNクライアントを使用してアクセスできます。VPNサーバーに接続するには認証が必要です。VPNサーバーとVPNクライアント間の通信は、トンネリングプロトコルを使用して保護されます。この通信は暗号化されている場合とされていない場合がありますが、通常、ほとんどのVPNプロトコルでは暗号化されていることに注意してください。

VPNのもう1つの用途は、インターネットにアクセスするときに匿名性獲得すること、または一部のWebサイトにアクセスするときに課せられる地理的制限を回避することです。このような場合、ユーザーが接続したいネットワークはプライベートネットワークではなく、インターネットです。

多くのVPNプロトコルが何年にもわたって開発されてきました。これらのプロトコルは、サーバーとクライアント間の通信にさまざまなトンネリングプロトコルと暗号化アルゴリズムを利用します。

最近広く使用されているそのようなプロトコルの1つは、Wireguardです。Wireguardは、OpenVPN、IPSecなどのよく知られている従来から使用されているVPNプロトコルよりも軽量で、シンプルで、パフォーマンスが高くなっています。これは、Windows、Mac OS、および多数のLinuxディストリビューションにすでに実装されています。Linuxでは、カーネルモジュールとして実装されます。Ubuntu20.04の公式リポジトリで利用できます。

この記事では、Ubuntu20.04でWireguardVPNサーバーとクライアントをセットアップする方法を説明します。

インストール

この記事では、Ubuntu 20.04LinodeにWireguardサーバーをセットアップし、Ubuntu20.04を使用するローカルマシンにWireguardクライアントをセットアップします。

パッケージwireguardは、Wireguardサーバーとクライアントの両方をインストールします。サーバーマシンとクライアントマシンの両方で次のコマンド実行します

sudo apt install wireguard

サーバー構成

セキュリティキー

Wireguard接続を認証して保護するには、公開鍵と秘密鍵のペアのセットを生成する必要があります。これは、次のコマンドを使用して実行できます。

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

スーパーユーザーとしてすべての構成タスクを実行していることに注意してください。その理由は、/etc/wireguard通常のユーザーはディレクトリへのアクセスが禁止されており、通常のユーザーはsudo権限だけではディレクトリアクセスを取得できないためです。

次に、ファイル作成マスクをに設定します077。これは、任意のプロセスによってこのフォルダーに新しいファイルが作成されるたびに、そのアクセス許可が077で自動的にマスクされることを意味します。このフォルダにアクセス許可777でファイルが作成された場合、そのファイルは自動的にマスクされ、アクセス許可は実質的に700になります。これにより、ファイルの所有者のみがファイルに対するすべてのアクセス許可を持ち、他のすべてのユーザーはアクセス許可を持ちません。

次の行で、サーバーの公開鍵と秘密鍵のペアを生成します。それらはファイルprivate_keyとに保存されますpublic_key。キーを表示するには、次のコマンドを実行します。

cat private_key
cat public_key

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

秘密鍵をコピーします。次のステップで必要になります。

注:秘密鍵を公開しないでください。

構成ファイル

Wireguardサーバーの構成ファイルを作成しましょう。ファイルには任意の名前を選択できます。wg0.confこの例ではファイルを作成します。

vim wg0.conf

以下をファイルに追加します。

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

前にコピーした秘密鍵を上記のコードの5行目に貼り付けます。

サーバーのIPアドレスとは異なる(仮想)サブネット上でWireguardを構成する必要があります。ここでは、サーバーに10.20.43.1を使用し、クライアントに10.20.43.2を使用します。ここでは、任意のサブネットを使用できます。サーバーとインターフェースのIPアドレスを取得するには、次のコマンドを実行します。

ifconfig

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

強調表示されている部分はIPアドレスです

サーバーのIPアドレスをメモします。これは、クライアントの構成時に必要です。

上の画像に示されているように、サーバーが使用するインターフェースはeth0です。インターフェース名は、ユーザのネットワークに基づいて異なることができ、それはすることができwlan0、またはwlp2s0ユーザが無線カードを使用して、Wi-Fiネットワークに接続されている場合には。

PostUpPostDownをインターフェースに置き換えます。この例ではeth0です。 PostUpおよびPostDownディレクティブは、サーバーの起動時と停止時にそれぞれ実行するコマンドを指定するために使用されます。この例では、iptablesコマンドを使用して、サーバーのIPアドレスがクライアントによって共有されるようにIPルールを設定します。サーバーが停止すると、ルールは削除されます。

ファイルを保存して終了します。vimを使用する場合は、Escキーを押してからEnterキー:wq押して保存し、終了します。

ufwサーバーでファイアウォールを使用している場合は、VPNサーバー51190のポートへのUDP接続を許可する必要があります。

ufw allow 51190/udp

サービスの開始

構成が完了したら、WireguardVPNサービスを開始できます。

起動時にサービスを開始できるようにするには、次のコマンドを実行します。

systemctl enable [email protected]

これwg0が構成ファイルの名前であることに注意してください。

サービスを開始するには、次を実行します。

service [email protected] start

サービスが正常に開始されたことを確認します。

service [email protected] status

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

IPコマンドを使用して、構成ファイルで作成したインターフェースが開始されていることを確認します

ip a show wg0

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

これで、WireguardVPNサーバーがセットアップされて実行されます。それでは、クライアントを構成しましょう。

クライアント構成

Wireguardのクライアント構成は、サーバー構成とほぼ同じです。クライアントのキーを生成してから、構成ファイルを作成します。

セキュリティキー

クライアントの公開鍵秘密鍵のペアを生成するには、次のコマンドを実行します。

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

クライアントの公開鍵と秘密鍵は、それぞれファイルclient_private_keyとに生成されるようになりましたclient_public_key

catコマンドを使用して、それらが作成されていることを確認します。

cat client_private_key
cat client_public_key

表示された秘密鍵をクライアントの構成ファイルに追加する必要があるため、コピーします。

構成ファイル

任意の名前で構成ファイル作成しますwg0-clientこの例の名前で作成します。

vim wg0-client.conf

次の構成を追加します。

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

クライアントのサブネットアドレスを入力します。前に説明したように10.20.43.2 、この例ではクライアントに使用します。

前の手順で生成されたクライアント秘密鍵を、上記の構成コードの4行目に追加します

[ピア]の下に、接続するWireguardVPNサーバーに関する情報を追加します。

サーバーの公開鍵を入力します。以前にメモしたサーバーのIPアドレスを入力し、エンドポイントに対して指定された形式で移植します。これは、サーバー構成ファイルで指定したポートであり、サーバー上のVPNサービスが開始されたポートです。

許可されたIPは、指定されたとおりに入力する必要があります(0.0.0.0/0)。これにより、クライアントが使用する動的パブリックIPに対する要求は、常にVPNサーバーに転送されます。

ファイルを保存して終了します。vimを使用する場合は、Escキーを押してからEnterキー:wq押して保存し、終了します。

起動するたびにクライアントサービスを実行できるようにして、起動します。

systemctl enable [email protected]
service [email protected] start

サービスが開始されているかどうかを確認します。

service [email protected] status

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

サーバーへのピアの追加

これで、VPNサーバーとクライアントが稼働しました。ただし、サーバーとクライアントの間にピアツーピア接続を確立しない限り、2つの間の安全なトンネルは確立されません。

サーバーに戻ります。まず、VPNサービスを停止します

service [email protected] stop

次に、構成ファイルを開いて、ピア(クライアント)の構成追加します

vim /etc/wireguard/wg0.conf

次の行をファイルに追加します。

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

ここで、VPNサービスを再開します。

service [email protected] start

それでおしまい!これは、WireguardVPNクライアントとサーバーのセットアップに必要なすべての構成です。VPNをテストしてみましょう。

VPNのテスト

まず、VPNトンネル通信が機能することを確認するために、クライアントからサーバーへの簡単なpingを実行してみましょう。クライアントで次を実行します

ping 10.20.43.1

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

次に、Webブラウザを開き、任意のWebサイト開いて、クライアントマシンからインターネットに接続できるかどうかを確認します。を使用して、コマンドラインからインターネット接続を確認することもできますwget

wget 

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

これで、トンネル接続とインターネット接続を確認しました。両方が機能している場合は、クライアントに着信するすべてのインターネットトラフィックがサーバーを通過していることを確認する必要があります。

このためには、インターネットから見たクライアントのIPアドレスを確認するだけです。これを行う1つの方法は、whatsmyip.orgにアクセスすることです。または、コマンドラインから、Curlを使用してIP情報と呼ばれる別の同様のサービスをクエリできます。

クライアントマシンで以下を実行します

curl https://ipinfo.io/ip

Ubuntu20.04でWireGuardVPNサーバーとクライアントをセットアップする方法

はい。これは、VPNサーバーがホストされているLinodeのパブリックIPアドレスです。これは、VPNを使用して匿名性を実現する方法です。これは、インターネット全体で、コンピューターではなくVPNサーバーのIPが表示されるようになったためです。

結論

セットアップの容易さは、OpenVPNのような従来のVPNソフトウェアに対するWireguardの最も重要な利点の1つであり、セットアップにはより高いレベルのネットワークとルーティングの知識が必要です。ただし、Wireguardのセットアップでエラーが発生したり、期待どおりに機能しなかったりすると、問題が発生する可能性のあるWireguardの詳細な公式ドキュメントが不足しています。

それでも、インターネットを介した安全な通信のためにセルフホストVPNが必要な場合は、Wireguardが最適です。Wireguardと、Wireguardが使用するプロトコルとテクノロジーの詳細については、公式サイトをご覧ください。


DebianベースのLinuxディストリビューションベスト10

DebianベースのLinuxディストリビューションベスト10

標準のDebianとその人気のある派生Ubuntuは、Linuxシステムにとって優れた万能の選択肢ですが、より専門的なニーズがある場合は、Debianの代替手段が必要になる場合があります。

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

Node.jsは、事実上、オープンソースのクロスプラットフォームJavaScriptランタイム環境です。Node.jsを有効にすると、ブラウザーを開くことを心配することなく、UbuntuマシンでJavaScriptを実行できます。ChromeのV8JavaScriptエンジン上に構築されており、Linuxにさまざまな方法でインストールできます。

MvコマンドでLinuxファイルを移動する方法

MvコマンドでLinuxファイルを移動する方法

LinuxでGUIファイルブラウザを使用してファイルを移動する方法をすでに知っている可能性がありますが、ターミナルに移動コマンドがあり、ファイルを別のディレクトリにすばやく移動できるかどうか疑問に思われるかもしれません。mvコマンドは必要なものであり、その単純な構文といくつかのオプションの安全フラグで簡単に使用できます。

make:コマンドが見つからないUbuntuでエラーを修正する方法

make:コマンドが見つからないUbuntuでエラーを修正する方法

makeコマンドは、おそらくLinuxエコシステムで最も広く使用されているコマンドの1つです。このコマンドは、ソースコードから直接プログラムをビルドおよびコンパイルするために使用されます。

Wi-FiがUbuntuで機能しませんか?これを修正する方法は次のとおりです

Wi-FiがUbuntuで機能しませんか?これを修正する方法は次のとおりです

Ubuntuは、その堅牢性と比較的少ないエラーで人気があります。しかし、確かに、問題の袋がないわけではありません。そのような問題の1つは、Wi-Fiドライバーにあります。システムの電源を入れても、Wi-Fiが機能していないことがわかります。

Ubuntu LinuxPCのターミナルからFirefoxを更新する方法

Ubuntu LinuxPCのターミナルからFirefoxを更新する方法

Ubuntu LinuxPCのターミナルからFirefoxを更新する方法を学ぶ

価値のあるNotepad ++の代替手段であるUbuntu20.04にNotepadqqをインストールする方法

価値のあるNotepad ++の代替手段であるUbuntu20.04にNotepadqqをインストールする方法

UbuntuでNotepad ++に代わる価値のあるものをお探しですか?無料のNotepadqqアプリを探すだけです

Ubuntu 20.04LTSにGitをインストールする方法

Ubuntu 20.04LTSにGitをインストールする方法

Linuxマシンに最初にインストールする必要があるものの1つ

Ubuntu20.04でルートパスワードを変更する方法

Ubuntu20.04でルートパスワードを変更する方法

Ubuntu 20.04でrootパスワードを設定、リセット、変更します

Ubuntu20.04でUbuntuDockを無効にする方法

Ubuntu20.04でUbuntuDockを無効にする方法

ドックを離れて出航したほうがよい場合もあります。

Ubuntu 20.04LTSでSudoユーザーを作成する方法

Ubuntu 20.04LTSでSudoユーザーを作成する方法

Ubuntu 20.04LTSでsudoを使用するすべてのユーザーにroot権限を付与する

Ubuntu20.04にGoogleChromeをインストールする方法

Ubuntu20.04にGoogleChromeをインストールする方法

Ubuntu20.04のコマンドラインからGoogleChromeをインストールするためのクイックガイド

Ubuntu20.04でSSHを有効にする方法

Ubuntu20.04でSSHを有効にする方法

どこからでもUbuntuマシンに安全にアクセスできます

開発者向けの10のベストLinuxディストリビューション

開発者向けの10のベストLinuxディストリビューション

Linuxは、カジュアルユーザーに好まれるオペレーティングシステムではないかもしれませんが、ほとんどの開発者やプログラマーにとって頼りになる選択肢です。Linuxは、プログラミングと開発者を念頭に置いて明示的に設計された、より実用的なOSです。

5つのステップでUbuntuにFTPサーバーをインストールする方法

5つのステップでUbuntuにFTPサーバーをインストールする方法

Linuxサーバーをセットアップする場合は、FTPアクセスが必要です。これは、最初にLinuxにFTPサーバーをインストールすることを意味します。これは、サーバーのオペレーティングシステムをインストールした後に最初に行うことの1つである必要があります。

2020年のUbuntu20.04の15のベストテーマ

2020年のUbuntu20.04の15のベストテーマ

多くの新しい更新されたテーマは、Ubuntu20.04の新しいGNOMEデスクトップにインストールする準備ができています。ここに2020年の最高のubuntuテーマのリストがあります

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuでは、デフォルトで、Windowsの代わりにアプリケーションを切り替えることができます。これを元に戻し、UbuntuのAlt-Tabでタブのグループ化を解除する方法は次のとおりです。

Ubuntu20.04に最適な10以上のGNOME拡張機能

Ubuntu20.04に最適な10以上のGNOME拡張機能

Gno-Menu、Extended Gesturesなどの人気のある拡張機能の多くは、Ubuntu20.04では機能しません。したがって、ここに最も効果的なGNOME拡張機能のリストがあります

7最高のUbuntuダイナミック壁紙アプリ

7最高のUbuntuダイナミック壁紙アプリ

アプリを使用してUbuntuのネイティブ壁紙をスライドショーすることはいつでもできますが、壁紙を動的にダウンロードして設定するためのアプリをいくつか紹介します。

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違いは何ですか?さて、ここでカバーしてもらいます。

Ubuntu12.04用のTeamViewer8をインストールします

Ubuntu12.04用のTeamViewer8をインストールします

このビデオでは、完全なガイド付きのubuntu12.04システム用のTeamViewer8をインストールして使用します。しかし、これはウィンドウでも同じように機能します。

2020年のUbuntu用の最高の無料ビデオエディタ

2020年のUbuntu用の最高の無料ビデオエディタ

すべての綿毛を除いて、ここにあなたが素晴らしいビデオを作成するために使うことができるUbuntuのための最高の無料のビデオエディタのリストがあります。

Linuxを使い始めるための9つの基本コマンド

Linuxを使い始めるための9つの基本コマンド

Linuxのハウツーガイドでは、ターミナルで特定の操作を実行することを期待していることがよくありますが、これは最初は恐ろしいように思えます。しかし、心配する必要はありません。このLinuxコマンドのチートシートでは、ターミナルを開いていくつかの便利なコマンドを発行するプロセスについて説明します。

ArchLinuxでパッケージをインストールおよび削除する方法

ArchLinuxでパッケージをインストールおよび削除する方法

Arch Linuxにパッケージをインストールしたいのですが、方法がわかりませんか?多くの人は、DebianベースのディストリビューションからArchに最初に移行するときにこの問題に直面します。ただし、パッケージマネージャーを使用して、Archベースのシステムでパッケージを簡単に管理できます。

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

FTP、ピアツーピアファイル転送、Wi-Fi転送などのメカニズムを使用すると、AndroidとUbuntuの間でファイルを頻繁に共有する場合に時間を節約できます。