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

Linux で WireGuard VPN をセットアップする方法

職場や自宅で複数のコンピューターを使用している場合、それぞれのコンピューターから内部ネットワークにアクセスする何らかの方法が必要になるでしょう。良いニュースは、WireGuard VPN がこの問題を解決することです.

このチュートリアルでは、WireGuard VPN をセットアップして本格的な VPN を実行し、コンピューターを接続して安全にアクセスできるようにする方法を学びます.

手を汚す準備はできましたか?飛び込む時間です!

前提条件

このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:

  • Linux システム – このチュートリアルでは Ubuntu 20.04 LTS を使用しますが、Debian ディストリビューションであればデモ用に機能します。
  • ローカル コンピューター – このデモでは、Windows 10 64 ビット クライアントを使用して WireGuard VPN サーバーに接続します。 💡 リモート サーバーを使用している場合は、ローカル マシンからそのサーバーに接続する権限があることを確認してください。
  • [sudo]() を持つ root 以外のユーザー 特権。

WireGuard のインストール

デフォルトでは、WireGuard は Ubuntu Linux ディストリビューションにインストールされていません。そのため、まず APT パッケージ マネージャーを使用して WireGuard をインストールします。

ソースから WireGuard をダウンロードしてコンパイルすることもできますが、このデモでは最小限の設定で十分です.

次のコマンドを update に実行します システムのパッケージ データベース。

sudo apt update -y

次に、次のコマンドを実行して wireguard をインストールします パッケージ。 wireguard パッケージは、安全なプライベート ネットワークとプロトコルをサポートするための最小限のカーネル モジュールを提供します。

WireGuard プロトコルには、SSH と同様の認証方式で配布される公開鍵が含まれ、これを対称暗号化鍵と組み合わせて、プライベート ポイント ツー ポイントまたはサイト ツー サイト接続を確立します。

sudo apt install wireguard -y

インストール後、WireGuard はカーネル モジュールとして実行されます。 WireGuard は、VPN 接続を確立するためにネットワーク インターフェイスに直接アクセスする必要があるため、カーネル スペースで実行されます。

鍵ペアの生成

WireGuard がインストールされたので、wg genkey を実行してキー ペア (公開キーと秘密キー) を生成します。 指図。公開鍵は、WireGuard の「ID」です。 VPN に接続する各ユーザーは、この公開鍵にアクセスする必要があります。対照的に、秘密鍵は安全な接続を確立するために使用するものです。

秘密鍵は秘密にしておいてください。秘密鍵にアクセスできる人は誰でも、それを使用して VPN に接続できます。

1. umask を実行します 以下のコマンドを実行して、キーペアを読み取り可能にします。 umask コマンドは、ファイル モード作成マスクを指定し、新しく作成されたファイルに与えられる権限を決定します。

umasks を使用します 077 の値 新しく作成されたすべてのファイルは誰でも読み取り可能ですが、所有者のみが書き込み可能です。この手順により、WireGuard キーは誰でも編集できなくなります。

umask 077

2. 次に、以下のコマンドを実行して生成します (wg genkey ) キーペア。

このコマンドは、秘密鍵を /etc/wireguard/privatekey に書き込みます ファイルと公開鍵 (wg pubkey | sudo tee ) /etc/wireguard/publickey に ファイル。

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

コマンドを実行すると、以下に示すように、公開鍵である値が端末に表示されます。以下の出力は、公開鍵が正常に生成されたことを示しています。

ピアはこの公開鍵を使用して WireGuard VPN に接続するため、この公開鍵をコピーして別の場所に保存します。 WireGuard VPN は、ピア間のトンネルのようなものです。

3. 最後に、cat を実行します。 以下のコマンドを実行して、秘密鍵が正常に生成されたことを確認します。

cat /etc/wireguard/privatekey

以下の出力のように、WireGuard VPN サーバーの構成で秘密鍵を定義するので、秘密鍵を書き留めます。

WireGuard VPN サーバーの構成

安全なサーバー接続用のキー ペアを生成したので、次のステップは WireGuard VPN サーバーの構成です。

1. wg0.conf という名前の新しいファイルを作成します お気に入りのテキスト エディタで wg0.conf に入力します。 以下の内容のファイル。 eth0 を必ず置き換えてください 投稿 -o の後 ネットワーク インターフェースで .

構成ファイルの命名は自由ですが、名前を覚えやすくするために、wg0、wg1 (wg は WireGuard を表します)、または tun0、tun1 (tun はトンネリングを表します) などの名前を選択してください。エム>

2. wg0.conf に入力します 以下の内容のファイル。 eth0 を必ず置き換えてください ポストルーティング -o の後 ネットワーク インターフェイスを使用して、変更を保存し、エディターを終了します。

wg0.conf ファイルには、WireGuard インターフェイスのすべてのネットワークおよびセキュリティ パラメータが含まれています。これがないと、WireGuard インターフェイスとピアは安全な接続を確立できません。

# Defines your WireGuard interface name
[Interface]
# Sets the server's Public IP Address. This network is routed to your server's 
# eth0 interface. This is an IP range of private IPv4 that you will use 
# for your peers to connect to the broader internet using your VPN server. 
# Your peer can use any private IPs from 10.8.0.1 to 10.8.0.255.
Address = 10.0.0.1/24
# Set the value to "true" to save your server's config file automatically 
# after a connection is established or when you shut down your VPN server.
SaveConfig = true
# Sets the port that your VPN server listens on. This port should be open on your router
# so that your peers can access this port to connect to your VPN
ListenPort = 51820
# Replace  with your private key generated earlier.
PrivateKey = 
# Sets WireGuard to automatically accept new connections, which allows your peers 
# to access your server with their own public IP address. Your VPN server forwards 
# your peers’ connection through your private network to make it seem 
# like they are coming directly from the peers.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Reverses the PostUp values when there's a disconnection 
# to make the network settings return to original state
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

3. 以下のコマンドを実行して、wg0 をオンにします。 インターフェース。

sudo wg-quick up wg0 

4. 最後に、以下のコマンドを実行して wg0 を確認します インターフェイスの状態。

sudo wg show wg0 

wg0 が表示されます インターフェイスは実行中で、ポート 51820 で接続をリッスンしています。

サーバー ネットワークとファイアウォールの構成

WireGuard サーバーの構成から、ローカル ネットワークとファイアウォールも構成する必要があります。そうすることで、サーバーに接続できるユーザーをより詳細に制御できます。

ポート UDP 51820 を転送します ピアが VPN サーバーに接続できるようにしますが、このポートを常に開いたままにしておくことはできません。ポート 51820 でトラフィックを転送するようにルーターの NAT 機能を設定します。 VPN サーバー経由で。

1. etc/sysctl.conf を開きます お気に入りのエディターを使用してファイルします。

2. #net.ipv4.ip_forward=1 を探してコメントを外します 「#」を削除する行 」記号を使用して IPv4 IP 転送を有効にし、変更を保存します。

3. 次に、次の sysctl を実行します 変更を適用して永続化するコマンド (-p )。

sudo sysctl -p

WireGuard サーバーは、WireGuard ピアのクライアントからの着信トラフィックをより広いインターネットに転送します。転送されると、WireGuard はデータを eth0 VPN イーサネット インターフェイス経由でピアに戻します。

ただし、より広範なインターネットからローカルの WireGuard サーバー宛てのトラフィックは、デフォルトの Linux ネットワーク ファイアウォールによってドロップされます。 UFW をファイアウォールとして使用している場合は、さらにいくつかのルールを追加する必要があります。

4. 以下のコマンドを実行して udp を許可します ポート 51820 での接続 自体。

sudo ufw allow 51820/udp

5. 次に、以下のコマンドを実行して、ファイアウォールのステータスを確認します。 sudo ufw status command

sudo ufw status command

UFW ファイアウォールは次のようになります:

WireGuard クライアントの構成

WireGuard VPN サーバーは完全に動作しているため、次にクライアントを構成して WireGuard VPN サーバーとの接続をテストします。クライアントは Windows、MAC OS、Linux、または BSD ですが、このデモでは Windows 10 64 ビット クライアントを使用しています。

WireGuard クライアントは、独自の一意の公開キー (ID) を使用して VPN サーバーに接続するデバイスです。 WireGuard サーバーはクライアントを認証し、自身とクライアント間のすべてのトラフィックを暗号化します。

すべての WireGuard クライアント デバイスで次の手順を実行する必要があることに注意してください。

1. WireGuard の公式ダウンロード ページに移動して、お使いの OS 用の WireGuard クライアント インストーラをダウンロードして実行します。このデモでは、Windows 用のクライアントを使用します。

2. WireGuard クライアント アプリケーションを開き、[トンネルを追加] をクリックします。 (左下) —> 空のトンネルを追加 空のトンネルを作成します。 VPN ネットワーク接続を構成するためのポップアップ ウィンドウが表示されます (ステップ 3)。

以下を使用して VPN ネットワーク接続を構成します。

  • 以下に示すように、VPN ネットワーク接続の名前を入力します。ただし、このデモでは、名前は ubuntu に設定されています .
  • 生成されたデフォルトの PrivateKey のままにします の下に新しい行を追加し、Address = と入力します。 を WireGuard クライアントの静的 IP に置き換えます。
  • 新しい[ピア]を追加 ブロックの下に、新しい PublicKey = を追加します ライン。 を置き換えます 「鍵ペアの生成」セクション (ステップ 2) で保存した VPN サーバーの公開鍵を使用します。
  • 新しいエンドポイントを追加 =:51820 、ここで 51820 WireGuard サーバーがリッスンしているポートです。 を置き換えます VPN サーバーのパブリック IP を使用します。
  • 新しい AllowedIPs – 0.0.0.0/0 を追加します ライン。この行により、WireGuard クライアントはネットワーク上のすべての IPv4 および IPv6 アドレスにアクセスできます。
  • [保存] をクリックします VPN ネットワーク接続構成を保存します。

4. 最後に、VPN サーバー ターミナルに戻り、以下のコマンドを実行して、クライアントの公開鍵と IP アドレスを VPN サーバーに追加します。

以下を必ず置き換えてください:

  • – クライアントの公開鍵を使用
  • 10.0.0.2 – VPN サーバーがクライアント デバイスと通信できるように、クライアント デバイスの IP アドレスを使用します。sudo wg set wg0 peer allowed-ips 10.0.0.2

VPN トンネルが機能するかどうかのテスト

ここまでで、作業中の WireGuard サーバーとクライアントを自由に使用できるようになりました。次に、それらの間の接続をテストし、VPN トンネルが機能するかどうかを確認します。

1. WireGuard クライアント アプリケーションを開き、ubuntu をクリックします。 作成した接続 (VPN トンネル)

2. [有効化] をクリックします。 ボタンをクリックして VPN トンネルを有効にします。

3. VPN トンネルを有効にすると、ステータス が表示されます アクティブに変更 、以下に示すように。それでおしまい!これで、VPN サーバーに正常に接続できました。

結論

このチュートリアルを通して、WireGuard VPN サーバーを構成する方法を学びました。また、VPN トンネルを作成して、WireGuard VPN サーバーとクライアント間の接続が機能しているかどうかをテストするようにクライアントを構成しました。

この段階で、権限の集中管理なしで、暗号化されたプライベート ネットワーク用に複数の WireGuard サーバーとクライアントを構成できるようになりました。

この新たに発見された知識をどのように構築しますか?おそらく、WireGuard VPN のセットアップを介して Ansible を探索してみてください?


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

  2. CentOS8でWireGuardVPNを設定する方法

  3. Linuxで$Path変数を設定する方法

  1. CentOS8でWireguardVPNを設定する方法

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

  3. SSHキーを設定する方法

  1. Linuxでプリンタを設定する方法

  2. LinuxPCにVPNサーバーをセットアップする

  3. Linuxでcronジョブを設定する方法