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 プロジェクトのドキュメントを読むことを強くお勧めします。
この投稿が役に立った、または問題に直面していると思われた場合は、お気軽にコメントしてください。