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

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

WireGuardは、最先端の暗号化を備えた最新のVPN(仮想プライベートネットワーク)テクノロジーです。 IPsecやOpenVPNなどの他の同様のソリューションと比較して、WireGuardはより高速で、構成が簡単で、パフォーマンスが高くなっています。クロスプラットフォームであり、Linux、Windows、Android、macOSなど、ほぼどこでも実行できます。 WireguardはピアツーピアVPNです。クライアントサーバーモデルは使用しません。構成に応じて、ピアは従来のサーバーまたはクライアントとして機能できます。

WireGuardは、トンネルとして機能する各ピアデバイスにネットワークインターフェイスを作成することで機能します。ピアは、SSHモデルを模倣して、公開鍵を交換および検証することにより、相互に認証します。公開鍵は、トンネルで許可されているIPアドレスのリストにマッピングされます。 VPNトラフィックはUDPにカプセル化されています。

このチュートリアルでは、VPNサーバーとして機能するUbuntu18.04マシンにWireGuardをセットアップします。また、WireGuardをクライアントとして構成する方法についても説明します。クライアントのトラフィックはUbuntu18.04サーバーを経由してルーティングされます。

この設定は、中間者攻撃に対する保護、匿名でのWebサーフィン、地理的に制限されたコンテンツのバイパス、またはリモートで作業しているときに同僚が会社のネットワークに安全に接続できるようにするために使用できます。

前提条件#

rootまたはsudo権限を持つアカウントとしてアクセスできるUbuntu18.04サーバーが必要です。

WireGuardサーバーのセットアップ#

このセクションでは、UbuntuマシンにWireGuardをインストールし、サーバーとして機能するように設定します。また、クライアントのトラフィックをシステム経由でルーティングするようにシステムを構成します。

Ubuntu 18.04へのWireGuardのインストール#

WireGuardはデフォルトのUbuntuリポジトリに含まれています。インストールするには、次のコマンドを実行します。

sudo apt updatesudo apt install wireguard

WireGuardは、DKMSモジュールとしてコンパイルされたカーネルモジュールとして実行されます。成功すると、次の出力が表示されます。

wireguard:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-88-generic/updates/dkms/

depmod...

DKMS: install completed.

カーネルを更新すると、WireGuardモジュールが新しいカーネルに対してコンパイルされます。

WireGuardの構成#

WireGuardには、wgという名前の2つのコマンドラインツールが付属しています。 およびwg-quick これにより、WireGuardインターフェースを構成および管理できます。

次のコマンドを実行して、公開鍵と秘密鍵を生成します。

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

ファイルは/etc/wireguardに生成されます ディレクトリ。 catでファイルを表示できます またはless 。秘密鍵は絶対に誰とも共有しないでください。

キーが生成されたので、VPNトラフィックをルーティングするトンネルデバイスを構成する必要があります。

デバイスは、コマンドラインからipを使用してセットアップできます。 およびwg または、テキストエディタで構成ファイルを作成します。

wg0.confという名前の新しいファイルを作成します 次のコンテンツを追加します:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

インターフェイスには任意の名前を付けることができますが、wg0のような名前を使用することをお勧めします またはwgvpn0 。インターフェイスセクションの設定には、次の意味があります。

  • アドレス-wg0のv4またはv6IPアドレスのコンマ区切りリスト インターフェース。プライベートネットワーク用に予約されている範囲(10.0.0.0/8、172.16.0.0/12、または192.168.0.0/16)のIPを使用します。

  • ListenPort-WireGuardが着信接続を受け入れるポート。

  • PrivateKey-wg genkeyによって生成された秘密鍵 指図。 (ファイルの内容を確認するには、次のコマンドを実行します:sudo cat /etc/wireguard/privatekey

  • SaveConfig-trueに設定すると、シャットダウン時にインターフェイスの現在の状態が構成ファイルに保存されます。

  • PostUp-インターフェースを起動する前に実行されるコマンドまたはスクリプト。この例では、マスカレードを有効にするためにiptablesを使用しています。これにより、トラフィックがサーバーを離れることができ、VPNクライアントがインターネットにアクセスできるようになります。

    必ずens3を置き換えてください -A POSTROUTING パブリックネットワークインターフェイスの名前と一致します。次のコマンドを実行すると、インターフェイスを簡単に見つけることができます。

    ip -o -4 route show to default | awk '{print $5}'
  • PostDown-インターフェイスを停止する前に実行されるコマンドまたはスクリプト。インターフェイスがダウンすると、iptablesルールは削除されます。

wg0.conf およびprivatekey 通常のユーザーはファイルを読み取れないようにする必要があります。 chmodを使用する 権限を600に設定します :

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

完了したら、wg0を持参してください 構成ファイルで指定された属性を使用してインターフェースを確立します:

sudo wg-quick up wg0

このコマンドは、次のような出力を生成します。

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

wg show wg0を実行します インターフェイスの状態と構成を確認するには:

sudo wg show wg0
interface: wg0
  public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  private key: (hidden)
  listening port: 51820

ip a show wg0を実行することもできます インターフェイスの状態を確認するには:

ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

起動時にWireGuardインターフェースを使用するには、次のコマンドを実行します。

sudo systemctl enable wg-quick@wg0

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

NATが機能するには、IP転送を有効にする必要があります。 /etc/sysctl.confを開きます 次の行をファイルして追加またはコメント解除します:

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1

ファイルを保存して変更を適用します:

sudo sysctl -p
net.ipv4.ip_forward = 1

UFWを使用してファイアウォールを管理している場合は、ポート51820でUDPトラフィックを開く必要があります。 :

sudo ufw allow 51820/udp

それでおしまい。サーバーとして機能するUbuntuピアがセットアップされました。

LinuxおよびmacOSクライアントのセットアップ#

サポートされているすべてのプラットフォームのインストール手順は、https://wireguard.com/install/で入手できます。 Linuxシステムでは、ディストリビューションパッケージマネージャーを使用してパッケージをインストールでき、macOSではbrewを使用してインストールできます。 。 WireGuardをインストールしたら、以下の手順に従ってクライアントデバイスを構成します。

LinuxおよびmacOSクライアントをセットアップするプロセスは、サーバーの場合とほとんど同じです。公開鍵と秘密鍵を生成することから始めます:

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

ファイルwg0.confを作成します 次のコンテンツを追加します:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

インターフェイスセクションの設定は、サーバーを設定するときと同じ意味です。

  • アドレス-wg0のv4またはv6IPアドレスのコンマ区切りリスト インターフェース。
  • PrivateKey-クライアントマシンでファイルの内容を確認するには、次のコマンドを実行します:sudo cat /etc/wireguard/privatekey

ピアセクションには、次のフィールドが含まれています。

  • PublicKey-接続するピアの公開鍵。 (サーバーの/etc/wireguard/publickeyの内容 ファイル)。
  • エンドポイント-接続するピアのIPまたはホスト名、コロン、リモートピアがリッスンするポート番号。
  • AllowedIPs-ピアの着信トラフィックが許可され、このピアの発信トラフィックが送信されるv4またはv6IPアドレスのコンマ区切りのリスト。トラフィックをルーティングしていて、サーバーピアが任意の送信元IPでパケットを送信するようにしたいため、0.0.0.0/0を使用しています。

追加のクライアントを構成する必要がある場合は、別のプライベートIPアドレスを使用して同じ手順を繰り返すだけです。

Windowsクライアントのセットアップ#

WireGuardWebサイトからWindowsmsiパッケージをダウンロードしてインストールします。

インストールしたら、WireGuardアプリケーションを開き、下の画像に示すように、[トンネルの追加]->[空のトンネルの追加...]をクリックします。

公開鍵のペアが自動的に作成され、画面に表示されます。

トンネルの名前を入力し、次のように構成を編集します。

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

インターフェイスセクションで、クライアントトンネルアドレスを定義するための新しい行を追加します。

ピアセクションで、次のフィールドを追加します。

  • PublicKey-Ubuntuサーバーの公開鍵(/etc/wireguard/publickey ファイル)。
  • エンドポイント-UbuntuサーバーのIPアドレスと、それに続くコロン、およびWireGuardポート(51820)。
  • 許可されたIP-0.0.0.0/0

完了したら、[保存]ボタンをクリックします。

クライアントピアをサーバーに追加する#

最後のステップは、クライアントの公開鍵とIPアドレスをサーバーに追加することです。

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

必ずCLIENT_PUBLIC_KEYを変更してください クライアントマシンで生成した公開鍵(sudo cat /etc/wireguard/publickey )クライアントのIPアドレスが異なる場合は調整します。 Windowsユーザーは、WireGuardアプリケーションから公開鍵をコピーできます。

完了したら、クライアントマシンに戻り、トンネリングインターフェイスを起動します。

LinuxおよびmacOSクライアント#

Linuxクライアントでは、次のコマンドを実行してインターフェイスを起動します。

sudo wg-quick up wg0

これで、Ubuntuサーバーに接続し、クライアントマシンからのトラフィックをUbuntuサーバー経由でルーティングする必要があります。次のコマンドで接続を確認できます:

sudo wg
interface: wg0
  public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
  private key: (hidden)
  listening port: 48052
  fwmark: 0xca6c

peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 1 minute, 22 seconds ago
  transfer: 58.43 KiB received, 70.82 KiB sent

ブラウザを開いて「whatismyip」と入力すると、UbuntuサーバーのIPアドレスが表示されます。

トンネリングを停止するには、wg0を停止します インターフェイス:

sudo wg-quick down wg0

Windowsクライアント#

WindowsにWireGuardをインストールした場合は、[アクティブ化]ボタンをクリックします。ピアが接続されると、トンネルのステータスがアクティブに変わります:


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

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

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

  1. Ubuntu22.04でWireGuardを設定する方法

  2. Ubuntu – Ubuntuで静的IPを設定する方法は?

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

  1. Ubuntu 20.04/18.04にRedisをインストールする方法

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

  3. Ubuntu18.04でOpenVPNサーバーをセットアップする方法