LinuxでWireguard VPNを設定する方法

Wireguardは、デスクトップおよびモバイルデバイスの両方で実行できる強力なオープンソースの仮想プライベートネットワーク(VPN)デーモンです。従来のVPNソリューション(IPsecやOpenVPNなど)に対する高速で軽量な代替手段を提供します。ここでは、Wireguardをインストールし、3台のLinuxマシンを使用してシンプルなVPNセットアップを作成する方法を示します。
目次
- WireguardをVPNソリューションとして使用する理由
- Wireguardの取得
- Wireguardサーバーの設定
- Wireguardクライアントの設定と接続
- サーバーにセカンドクライアントを追加
- Wireguardネットワークのテスト
WireguardをVPNソリューションとして使用する理由
Wireguardの最大のセールスポイントの1つは、高速で軽量なVPNデーモンであることです。従来のソリューションとは異なり、Wireguardはネットワークに多くのオーバーヘッドを追加しません。これにより、レイテンシが低く、ノード全体でのスループット率が高くなります。

Wireguardのもう1つの重要な特徴は、Linuxカーネル内のモジュールであることです。これにより、コンピュータの追加のシステムリソースを消費せずに実行できるため、低スペックやSOCデバイスへの展開に最適な選択肢となります。

最後に、Wireguardは最新の暗号化標準と開発プラクティスを活用しています。また、Wireguardのコードの正確性、セキュリティ保証、および攻撃に対する抵抗能力を確認する複数の正式な検証が行われています。
ちなみに: Wireguardにまだ納得していませんか?WireguardがOpenVPNとどのように比較されるかを学んでください。
Wireguardの取得
LinuxにWireguardを設定する最初のステップは、ディストリビューションのリポジトリからそのコアツールをダウンロードすることです。これにより、ユーザースペースコマンドを使用して組み込みのWireguardカーネルモジュールを制御できます。
UbuntuおよびDebianでコアツールをインストールするには、次のコマンドを実行します:
sudo apt install wireguard wireguard-toolsFedoraでは、dnfパッケージマネージャを使用できます:
sudo dnf install wireguard-toolsArch Linuxでは、pacmanを実行してWireguardコアツールを取得できます:
sudo pacman -S wireguard-toolsWireguardツールが正しくインストールされていることを確認するには、ヘルプ画面を表示します:
wg -h
Wireguardサーバーの設定
前提条件: この記事は、公開アクセス可能なIPv4アドレスを持つLinuxシステムにWireguardサーバーをインストールすることを前提としています。NATの背後にあるサーバーでも指示は機能しますが、そのサブネット外のノードを見つけることはできません。
LinuxマシンにWireguardコアツールキットがインストールされたので、VPNのサーバーノードを設定できます。これがネットワーク内のクライアントノードのインターネットゲートウェイとして機能します。
まず、Wireguard設定ディレクトリに移動し、デフォルトの権限を「rootのみ」に設定します:
cd/etc/wireguard
sudo umask 077注意: 一部のシステムでは、通常のユーザーとして「/etc/wireguard」フォルダーに入ることを防ぐ場合があります。それを修正するには、sudo -sを使用してrootユーザーに切り替えます。
Wireguardサーバーの公開鍵と秘密鍵を生成します:
sudo sh -c 'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'お気に入りのテキストエディタを使用してサーバーの設定ファイルを作成します:
sudo nano /etc/wireguard/wg0.confサーバー設定ファイル内に次のコードブロックを貼り付けます:
[Interface]
PrivateKey= PASTE-YOUR-SERVER-PRIVATE-KEY-HERE
Address= 10.0.0.1/32
ListenPort= 60101
PostUp= iptables -t nat -I POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE
PostDown= iptables -t nat -D POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE新しいターミナルセッションを開き、サーバーのWireguard秘密鍵を印刷します:
sudo cat /etc/wireguard/server-private-keyサーバーの秘密鍵をクリップボードにコピーします。

PrivateKey変数の値をクリップボードの鍵に置き換えます。

ipコマンドを使用してインターネットにアクセスできるネットワークインターフェースを見つけます:
ip route get 8.8.8.8PostUpおよびPostDown変数の両方の-oフラグの値をインターネットアクセスのあるインターフェースに設定し、設定ファイルを保存します。

お気に入りのテキストエディタを使用してサーバーの「/etc/sysctl.conf」ファイルを開きます:
sudo nano /etc/sysctl.confnet.ipv4.ip_forward=1を含む行までスクロールし、その前の#記号を削除します。

新しいsysctl設定をリロードするには、次のコマンドを実行します:sudo sysctl -p。
FYI: WireguardはLinuxで実行できる唯一のVPNソリューションではありません。OpenVPNを使用して独自のVPNを作成する方法を学んでください。
Wireguardクライアントの設定と接続
この時点で、適切に構成されたWireguardサーバーがあり、ピアはありません。それを使用するには、最初のWireguardクライアントを設定して接続する必要があります。
クライアントシステムのWireguard設定ディレクトリに移動し、デフォルトの権限を設定します:
cd/etc/wireguard
sudo umask 077次のコマンドを使用してクライアントのWireguardキーペアを生成します:
sudo sh -c 'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'お気に入りのテキストエディタを使用してクライアントのWireguard設定ファイルを作成します:
sudo nano /etc/wireguard/wg0.confクライアント設定ファイル内に次のコードブロックを貼り付けます:
[Interface]
PrivateKey= PASTE-YOUR-CLIENT1-PRIVATE-KEY-HERE
Address= 10.0.0.2/32
ListenPort= 60101
[Peer]
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs= 0.0.0.0/0
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60101
PersistentKeepalive= 25PrivateKey変数をクライアントの秘密鍵に置き換えます。

Wireguardサーバーのターミナルセッションを開き、その公開鍵を印刷します:
sudo cat /etc/wireguard/server-public-keyPublicKey変数の値をサーバーの公開鍵に設定します。

Endpoint変数をWireguardサーバーのIPアドレスに変更します。

設定ファイルを保存し、wg-quickコマンドを使用してWireguardクライアントを起動します:
sudo wg-quick up wg0
注意: このコマンドは、Wireguardサーバーを起動するまでクライアントのネットワーク接続を無効にします。元のネットワークに戻るには、sudo wg-quick down wg0を実行します。
Wireguardサーバーをクライアントにリンクする
Wireguardサーバーのターミナルセッションに移動し、その設定ファイルを開きます:
sudo nano /etc/wireguard/wg0.conf[Interface]セクションの後に次のコードブロックを貼り付けます:
[Peer]
PublicKey= PASTE-YOUR-CLIENT1-PUBLIC-KEY-HERE
AllowedIPs= 10.0.0.2/32
PersistentKeepalive= 25PublicKey変数をWireguardクライアントの公開鍵に設定します。
![[Peer]ブロックの場所を示し、クライアントの公開鍵を強調表示するターミナル。](https://www.maketecheasier.com/assets/uploads/2024/07/set-up-wireguard-linux-vpn-13-highlight-client1-public-key.png)
注意: 公開鍵は、クライアントマシンでsudo cat /etc/wireguard/client1-public-keyを実行することで取得できます。
設定ファイルを保存し、次のコマンドを実行してサーバーでWireguardサービスを起動します:
sudo wg-quick up wg0サーバーにセカンドクライアントを追加
すべてのVPNサービスの重要な機能の1つは、異なるネットワークの複数のマシンをリンクできることです。これは、異なる場所にコンピュータがある場合や、友人のためにプライベートゲームサーバーをホストしたい場合に便利です。
Wireguardでこれを行うには、サーバー上に新しいVPNインターフェースの設定ファイルを作成する必要があります。最も簡単な方法は、現在のサーバー設定をコピーし、そのコピーに新しい名前を付けることです:
sudo cp /etc/wireguard/wg0.conf /etc/wireguard/wg1.confお気に入りのテキストエディタを使用して新しい設定ファイルを開きます:
sudo nano /etc/wireguard/wg1.confListenPort変数を60102に設定します。これにより、wg0とwg1のVPNインターフェース間でポートの衝突を防ぎます。

[Peer]セクションに移動し、AllowedIPs変数を「10.0.0.2/32」から「10.0.0.3/32」に変更し、設定ファイルを保存します。

2番目のWireguardクライアントの設定
2台目のマシンにログインし、Wireguard設定ディレクトリを準備します:
cd/etc/wireguard
sudo umask 077次のコマンドを使用して新しいWireguardキーペアを生成します:
sudo sh -c 'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'お気に入りのテキストエディタを使用して新しい設定ファイルを作成します:
sudo nano /etc/wireguard/wg0.conf新しい設定ファイル内に次のコードブロックを貼り付けます:
[Interface]
PrivateKey= PASTE-YOUR-CLIENT2-PRIVATE-KEY-HERE
Address= 10.0.0.3/32
ListenPort= 60102
[Peer]
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs= 0.0.0.0/0
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60102
PersistentKeepalive= 25PrivateKey変数を2台目のマシンの秘密鍵に設定し、PublicKey変数をサーバーの公開鍵に変更します。
Endpoint変数をサーバーのIPアドレスに置き換え、「:60102」を追加します。
設定ファイルを保存し、2台目のマシンのWireguardクライアントを起動します:
sudo wg-quick up wg02番目のクライアントをWireguardサーバーにリンクする
再度Wireguardサーバーにログインし、2番目のクライアントのVPNインターフェース設定を開きます:
sudo nano /etc/wireguard/wg1.conf[Peer]セクションまでスクロールし、PublicKey変数を2番目のクライアントの公開鍵に置き換えます。

設定ファイルを保存し、wg-quickコマンドを使用して2番目のVPNインターフェースを起動します:
sudo wg-quick up wg1最初と2番目のWireguardクライアントがサーバーに正しく表示されていることを確認するには、wgを実行します。

Wireguardネットワークのテスト
サーバーとクライアントの両方がWireguardネットワークに接続されているので、ノード間の接続性とレイテンシをテストできます。これを行うには、システムにネットワーク診断ツールがインストールされていることを確認してください:
sudo apt install net-tools curlFedoraでは、curlをインストールするだけで済みます。ネットワーキングツールはすでに標準で付属しています:
sudo dnf install curlArch Linuxでは、pacmanを使用してネットワークツールとcurlをインストールできます:
sudo pacman -S traceroute curl2つのクライアント間のパケットのルートを追跡することから始めます。以下は、IPパケットが「10.0.0.2」から「10.0.0.3」に移動する様子を示します:
traceroute 10.0.0.3ノードのいずれかが一般的なIPアドレスにpingを送信して、公共インターネットにアクセスできるかどうかを確認します:
ping -c 5 8.8.8.8
最後に、ノードがWireguardサーバーに同じ公共IPアドレスを共有していることを確認します:
curl ipinfo.io/ip
LinuxでWireguardネットワークを設定することを学ぶことは、VPNの魅力的な世界を探求する第一歩です。深く掘り下げて、今日入手可能な最高のセキュリティ重視のVPNプロバイダーの選択を見てみましょう。
画像クレジット:Kari Shea via UnsplashおよびWikimedia Commons。すべての変更とスクリーンショットはRamces Redによるものです。