ウェブサイト検索

Ubuntu で WireGuard VPN をセットアップする方法 (ステップバイステップ ガイド)


このチュートリアルでは、わかりやすい手順で Ubuntu 上に WireGuard VPN サーバーをセットアップする方法を示します。

WireGuard は、最先端の暗号化を備えたオープンソースの無料の高速 VPN サーバーです。一般的な 2 つのトンネリング プロトコル (OpenVPN と IPsec) よりも優れたパフォーマンスで UDP 経由でトラフィックを渡します。

WireGuard は、Linux カーネル用に明示的に作成されたピアツーピア VPN です。 Linux カーネル内で実行され、高速で最新の安全な VPN トンネルを作成できます。

WireGuard は、トンネルとして機能するネットワーク インターフェイスを各ピア デバイス上に作成することによって機能します。ピアは、SSH モデルを模倣して、公開キーを交換および検証することによって相互に認証します。

ステップ 1: サーバー上で IP 転送を有効にする

VPN クライアントとインターネットの間でパケットをルーティングするには、VPN サーバーの IP 転送を有効にする必要があります。好みのエディタを使用して /etc/sysctl.conf ファイルを開きます。

sudo vim /etc/sysctl.conf

次の行をコメントアウトします (その前の # 文字を削除します)。

ファイルを保存し、変更を適用します。

sudo sysctl -p

ステップ 2: Ubuntu に WireGuard をインストールする

このチュートリアルの次のステップでは、WireGuard を Ubuntu マシンにインストールし、サーバーとして設定します。 デフォルトでは、WireGuard パッケージは Ubuntu のデフォルト リポジトリで利用できます。

sudo apt install wireguard

WireGuard パッケージがインストールされたら、次のステップに進むことができます。

ステップ 3: Ubuntu で WireGuard VPN サーバーを構成する

WireGuard は、WireGuard ネットワーク内の各デバイス間で公開キーを交換することによって機能します。 WireGuard をインストールしたので、次のステップはサーバーの秘密キーと公開キーのペアを生成することです。

ステップ 3.1: 公開鍵/秘密鍵ペアの生成

次のコマンドを実行して、公開キーと秘密キーのペアを作成します。ファイルは /etc/wireguard/ ディレクトリに保存されます。

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

wg コマンドは、WireGuard の構成を取得および設定するための WireGuard の組み込み構成ユーティリティです。コマンドを実行すると、WireGuard サーバーの公開キー (server_public.key) である、base64 でエンコードされた 1 行の出力を受け取ります。

秘密キー (server_private.key) は誰とも共有してはならず、常に安全に保管してください。

ステップ 3.2: トンネルデバイスの構成

次に、WireGuard のネットワーク インターフェイスを作成する必要があります。 vim などのコマンドライン テキスト エディタを使用して、WireGuard 構成ファイルを作成します。ネットワーク インターフェイス名は wg0 になります。

sudo vim /etc/wireguard/wg0.conf

以下に示す内容を追加します。

[Interface]
## Private IP address for the wg0 interface ##
Address = 10.0.0.1/24

## VPN server listening port ##
ListenPort = 51820

## VPN server private key ##
PrivateKey = mPIoWfKQWZP8lie2ISEZ6ul7vyESH9MqpFvxk1cxIWQ=

## Firewall rules ##
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE

もちろん、PrivateKey を、/etc/wireguard/server_private.key ファイルに保存されている、生成したものの内容に置き換える必要があります。

次のコマンドを使用して、秘密キーの内容を表示できます。

sudo cat /etc/wireguard/server_private.key

-A POSTROUTING -o ... の後の enp1s0 をパブリック ネットワーク インターフェースの名前と一致するように置き換えてください。次の方法で簡単に見つけることができます。

ip -o -4 route show to default | awk '{print $5}'

wg0.conf ファイルを保存して閉じます。さらに、ファイル許可モードを変更して、root ユーザーのみがファイルを読み取れるようにします。

sudo chmod -R 600 /etc/wireguard/

ステップ 4: WireGuard VPN サービスを有効にして開始する

サーバー上で次のコマンドを実行して、システム起動時の自動起動を有効にし、WireGuard を起動します。

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

次のコマンドでステータスを確認します。出力に active が表示されるはずです。

sudo systemctl status wg-quick@wg0.service

インターフェイスの状態と構成を確認するには、次のように入力します。

sudo wg show wg0

ステップ 5: WireGuard クライアントのインストールと構成

まず、クライアント マシンに WireGuard パッケージをインストールする必要があります。これは、WireGuard サーバーのセットアップに似ています。

sudo apt install wireguard

次に、サーバーで使用した手順とまったく同じ手順を使用して、ピア上で公開キーと秘密キーのペアを生成する必要があります。

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

好みのエディタを使用して、WireGuard クライアント マシンで新しい /etc/wireguard/wg0.conf ファイルを開きます。

sudo vim /etc/wireguard/wg0.conf

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

[Interface]
## VPN client private IP address ##
Address = 10.0.0.2/24

## VPN client private key ##
PrivateKey = 0COkq1GMM86CmlF5blPFDYhU84iTX8iJ7lWoC1gLfnk=

[Peer]
## VPN server public key ##
PublicKey = ZnD/WMx0kasJfGjFf0/uCtJoFbz0oNdq7EcieHXVaSc=

## VPN server public IP address and port ##
Endpoint = 192.168.122.101:51820

## Route all the traffic through the VPN tunnel ##
AllowedIPs = 0.0.0.0/0

## Key connection alive ##
PersistentKeepalive = 15

PrivateKey を、クライアント マシンの /etc/wireguard/client_private.key ファイルに保存されている、生成したものの内容に置き換えます。

sudo cat /etc/wireguard/client_private.key

サーバーの公開キーを置き換えます。このキーは、サーバー上の /etc/wireguard/server_public.key ファイルにあります。

エンドポイント の値 (192.168.122.101:51820) をサーバーのパブリック IP アドレスとポートに置き換えます。

最後に、ファイルを保存して閉じます。

クライアント (ピア) コンピューターとサーバー間の接続を許可するには、サーバー側 VPN オプションを構成する必要があります。 したがって、サーバーに戻り、/etc/wireguard/wg0.conf ファイルを編集して、次のようにクライアント情報を追加します。

sudo vim /etc/wireguard/wg0.conf
[Peer]
## Client public key ##
PublicKey = 6FLtyfBQie9+EB3QYF55CR1FASca7vVYPReynlEccAo=

## Client IP address ##
AllowedIPs = 10.0.0.2/24

PublicKey を、クライアント マシン上の /etc/wireguard/client_public.key ファイルに保存されているファイルのコンテンツに置き換えます。

サーバー構成ファイルの最終バージョンは次のようになります。

ファイルを保存し、VPN サーバーを再起動して変更を適用します。

sudo systemctl restart wg-quick@wg0.service

ステップ 6: WireGuard クライアントをサーバーに接続する

次のコマンドをクライアント マシン上で実行して、VPN クライアントを VPN サーバーに接続します。

sudo systemctl start wg-quick@wg0

これで、WireGuard VPN サーバーに接続され、クライアント マシンからのトラフィックがそこを経由してルーティングされるはずです。

それだけです!クライアントとサーバーの両方は、Ubuntu 上のピアツーピア WireGuard VPN を使用して安全に接続する必要があります。

接続をテストするには、VPN クライアントに戻り、VPN クライアント(10.0.0.2)から VPN サーバー(10.0.0.1)に ping を実行して、トンネルが機能するかどうかを確認します。

ping -c 3 10.0.0.1

さらに、次の方法で接続を確認できます。

sudo wg

トンネリングを停止するには、クライアント マシン上のサービスを停止します。

sudo systemctl stop wg-quick@wg0

結論

おめでとうございます!このチュートリアルが Ubuntu での WireGuard VPN サーバーとクライアントのインストールと構成に役立つことを願っています。この設定により、トラフィック データを非公開に保ち、匿名で Web サーフィンを行うことができます。

ここにある WireGuard プロジェクトのドキュメントを読むことを強くお勧めします。

この投稿が役に立った、または問題に直面していると思われた場合は、お気軽にコメントしてください。

関連記事: