本記事では、VPN(Virtual Private Network)を自分で構築する方法について、技術的な誤りがないかを精査したうえで、実際に動作する構成・設定手順・注意点まで含めて詳しく解説します。
単なるコマンド手順の紹介ではなく、
を理解できるよう構成していますので、初めてVPNを自作する方でも失敗しにくい内容になっています。
VPNを自作するとは、自分で用意したサーバー(VPSなど)上にVPNサーバーを構築し、そこへ安全に接続する仕組みを作ることを指します。
市販のVPNサービスと比較すると、以下のような特徴があります。
匿名性を最大限に高める用途には向きませんが、セキュリティ・安定性・通信速度を重視する用途では非常に有効です。
VPNは次のような流れで動作します。
この「暗号化されたトンネル」を通じて通信することで、
といった効果が得られます。
最低限、以下の条件を満たすサーバーが必要です。
国内・海外いずれのVPSでも、構築方法は基本的に同じです。
現在、自作VPNで最も推奨されるプロトコルは WireGuard です。
理由は以下の通りです。
OpenVPNやL2TP/IPsecも利用可能ですが、新規に構築する場合はWireGuardを選ぶのが最も合理的です。
以下は、実際に通信が成立することを前提とした手順です。
apt update
apt install wireguard -y
wg genkey | tee server_private.key | wg pubkey > server_public.key
nano /etc/sysctl.conf
以下の設定を追記、またはコメントアウトを解除します。
net.ipv4.ip_forward=1
設定を反映します。
sysctl -p
nano /etc/wireguard/wg0.conf
サーバー設定例
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = サーバーの秘密鍵
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <WAN_IF> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <WAN_IF> -j MASQUERADE
[Peer]
PublicKey = クライアントの公開鍵
AllowedIPs = 10.0.0.2/32
注意点
<WAN_IF> は ip route コマンドで確認した 実際の外向きインターフェイス名に置き換えてください
wg genkey | tee client_private.key | wg pubkey > client_public.key
[Interface]
PrivateKey = クライアントの秘密鍵
Address = 10.0.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = サーバーの公開鍵
Endpoint = サーバーIP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
各設定の意味
AllowedIPs = 0.0.0.0/0PersistentKeepalive = 25
wg-quick up wg0
systemctl enable wg-quick@wg0
UFWを使用する場合は、必ずSSHを許可してから有効化してください。
ufw allow OpenSSH
ufw allow 51820/udp
ufw enable
この手順を守らないと、サーバーに再接続できなくなる恐れがあります。
WireGuardを利用した自作VPNは、
という特徴があります。
一方で、
といった 細かいが致命的になりやすいポイントを誤ると、簡単につまずいてしまいます。
本記事の手順に沿って構築すれば、「接続できない」「通信が流れない」といった初歩的なトラブルは回避できる構成になります。
以上、VPNの自作の方法についてでした。
最後までお読みいただき、ありがとうございました。