無料でWireGuard VPNサーバーを自作する方法【Linux構築ガイド】
この記事では、Linuxサーバー上にWireGuard VPNを構築する手順を、ステップごとにわかりやすく解説します。VPNがあれば、カフェや空港といった安全とは言えないネットワーク環境からでも、銀行サイトなどの重要なインターネットリソースに安全にアクセスできるようになります。
そもそもなぜVPNなのか? そしてなぜWireGuardなのか?
外出先から銀行のウェブサイトなどに接続するとき、パスワードなどの機密情報が、同じネットワーク上で通信を盗み見ている第三者に漏れるリスクがあります。
もちろん、銀行のサイト自体はHTTPSなどで暗号化されているはずなので、銀行とあなたのPCやスマートフォンの間を流れる重要なデータは、途中で覗き見られても読み取れないようになっています。
では、自宅やオフィスから接続している場合はどうでしょうか。VPNを使えば、通常の暗号化で保護されていないデータまで、悪意のある第三者に見られる心配はほぼなくなります。
しかし、空港やカフェの公衆Wi-Fiルーター経由で接続している場合はどうでしょう。そのネットワークがすでに侵入されていたら? 気づかれないままハッカーに監視されていたら?
こうした現実的な脅威に対抗するために有効なのが、ノートPCやスマートフォンからVPNサーバーへ接続する方法です。すべてのデータ通信が仮想トンネルを通って行われるため、接続元のローカルネットワーク上の誰からも、機密性の高い通信内容は見えなくなります。
WireGuardは、オープンソースVPN界の御三家(IPsec、OpenVPN、WireGuard)の中で最も新しい存在です。
WireGuardは、他の2つよりもシンプルで高速、かつ柔軟な設計を目指して開発されました。登場して間もない技術ですが、すぐに重要な支持者を得ています。Linuxの生みの親であるLinus Torvalds氏自身の勧めもあり、WireGuardは最近Linuxカーネルに正式に取り込まれました。
VPNサーバーはどこに構築すべき?
もちろん、自宅にVPNサーバーを立てて、ISPのルーターでポート転送を設定することも可能です。しかし実用面では、クラウド上で運用する方が合理的なケースが多いでしょう。
心配いりません。クラウドなら「設定したらあとは放置」に近い、手間のかからない運用が可能です。また、自宅で組んだ環境がAWSのような大手クラウドプロバイダーのインフラと同等の信頼性やセキュリティを持つことは、まず考えられません。
ただし、もしプロ仕様のセキュリティを備えたサーバーが家に余っているなら(あるいは遊んでいるRaspberry Piで挑戦してみたいなら)、基本的には同じやり方で構築できます。
WireGuardのおかげで、クラウドでも物理サーバーでも、自前のVPNを作るのはかつてないほど簡単になりました。セットアップ全体は30分ほどで完了します。
準備
まず、クラウドインスタンスを起動しておきましょう。各クラウドプロバイダーの公式チュートリアルなどを参考にするとスムーズです。
ポート51820がサーバーに対して開放されていることを確認してください。AWSではセキュリティグループ、Google CloudではVPCネットワークファイアウォールで設定します。
最新のDebian/Ubuntuでは、パッケージマネージャーからWireGuardをインストールできます。
sudo apt install wireguard
yumの場合は、EPELリポジトリからインストールします。
sudo yum install kmod-wireguard wireguard-tools
ステップ1:暗号鍵を作成する
サーバー上の任意のディレクトリで、公開鍵と秘密鍵を含むファイルを作成します。次のコマンドを実行してください。
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
クライアント側でも、別のディレクトリまたはローカルマシン上で同じコマンドを実行します。後でどの鍵セットがどちらのものか判別できるようにしておくことが大切です。
手早く済ませたい場合はオンラインの鍵ジェネレーターも使えますが、初回は手動での生成をおすすめします。次のステップで使用するため、鍵のハッシュがファイルに正しく保存されていることを確認しましょう。
ステップ2:サーバーの設定ファイルを作成する
/etc/wireguardディレクトリに.confファイルを作成します。異なるポートを使えば、複数のVPNを同時に稼働させることも可能です。
新しいファイルに以下の内容を貼り付けてください。
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
# サーバーの秘密鍵を使用
PrivateKey = GPAtRSECRETLONGPRIVATEKEYB0J/GDbNQg6V0s=
# ピア(Peer)はいくつでも追加可能
# 下記の値は各ピアの公開鍵に置き換えてください
[Peer]
PublicKey = NwsVexamples4sBURwFl6HVchellou6o63r2B0s=
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = NwsexampleNbw+s4sBnotFl6HrealxExu6o63r2B0s=
AllowedIPs = 10.0.0.3/32
VPNを起動する
sudo systemctl start wg-quick@wg0
systemdがない環境(Amazon Linuxのインスタンスなど)では、sudo wg-quick up wg0を使用してください。
ステップ3:クライアントの設定ファイルを作成する
まずクライアントマシンにWireGuardをインストールします。Linuxならサーバーと同じ方法で、Windows、macOS、Android、iPhoneならアプリストアから入手できます。
ステップ1でオンライン鍵ジェネレーターやQRコード生成スクリプトを使った場合は、スマホでQRコードを読み取るだけで接続設定が完了します。
クライアントにWireGuardをインストールしたら、以下の値で設定を行います。
# PrivateKeyの値は、クライアント側で生成したものに置き換えてください
[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = CNNjIexAmple4A6NMkrDt4iyKeYD1BxSstzer49b8EI=
# VPNサーバーの公開鍵と、クラウドインスタンスのエンドポイントIPを使用
[Peer]
PublicKey = WbdIAnOTher1208Uwu9P17ckEYxI1OFAPZ8Ftu9kRQw=
AllowedIPs = 0.0.0.0/0
Endpoint = 34.69.57.99:51820
用途に応じて追加できるオプションも多数あります。たとえばDNSの指定や、セキュリティを一段階強化するための事前共有鍵(Pre-shared key)などです。
クライアントの起動は、Linuxならサーバーと同じ方法で、その他のOSではアプリ本体から行います。
VPNをテストする
ブラウザで「my ip」などと検索して、自分のグローバルIPアドレスを確認してみましょう。VPN起動前のIPアドレスと表示が変わっていれば成功です!
(起動前のIPを忘れてしまった場合は、sudo systemctl stop wg-quick@wg0で一度停止して確認し、再度起動すれば大丈夫です。)
トラブルシューティングガイド
サーバーでIPフォワーディングが有効になっているか確認してください。/etc/sysctl.confファイルをチェックするか、次のコマンドを実行します。
echo 1 > /proc/sys/net/ipv4/ip_forward
接続が頻繁に切れる場合は、クライアント設定のピア(Peer)セクションに以下を追加してください。
PersistentKeepalive = 25
原因がわからないときは、クライアントから接続を試みている状態で、サーバー側でsudo tcpdump -i ethを実行してパケットを観察してみましょう。
おわりに
ここまで読んでいただきありがとうございました。さらに深く学びたい方は、Manningで提供されているWireGuard VPNの有料講座も検討してみてください。
-
ChromecastでVPNを使う方法|物理ルーター・仮想ルーターでの設定手順を徹底解説
要点:ご存じのとおり、ChromecastにはVPNやMediaStreamer DNS機能が標準搭載されていません。そのため、地域制限(ジオブロック)されたストリーミングコンテンツを視聴するには、サードパーティ製のVPNサービスを利用する必要があります。ただし、その前に「VPN対応の物理ルーターまたは仮想ルーターにChromecastを接続する方法」を理解しておくことが重要です。この記事では、ステップバイステップの設定手順に加えて、ChromecastにおすすめのVPNプロバイダーについても詳しく解説します。該当セクションへは目次からすぐにジャンプできます。Chromecast向けVPNの設
-
オンラインバンキングにVPNは安全?使うべき場面と使えないケースを徹底解説
近年、オンラインバンキングはすっかり身近なものになり、自宅はもちろん、海外や空港など、時間や場所を選ばずに取引できるようになりました。しかし利便性の裏にはリスクも潜んでいます。個人情報や資産がサイバー攻撃の標的になる可能性があるため、常に注意が必要です。 ネットバンキングで送金・入金やオンライン決済を頻繁に行うなら、VPNの活用を強くおすすめします。銀行取引には口座番号やクレジットカード情報など、機密性の高いデータが含まれており、悪意ある第三者に狙われる危険があります。多くの銀行が厳重なセキュリティ対策を講じていますが、それでもハッカーの侵入を完全に防げるとは限りません。 そこで役立つのがVP