※本記事にはアフィリエイトリンクが含まれています。筆者が実際にRackNerdのVPSを契約し、WireGuardを構築・接続確認した内容をもとに紹介しています。

RackNerdのKVM VPSで自分専用WireGuard VPNを構築してみた【Mac実測】

海外VPSを1台借りて、自分専用のWireGuard VPNを作ってみました。今回はRackNerdの1GB KVM VPSへUbuntu 24.04を入れ、 SSHの鍵認証化、rootログインとパスワード認証の無効化、UFW、WireGuard、Mac側クライアント設定まで実施しています。 最後にVPNのON/OFFで外部IPv4が切り替わることと、WireGuardのハンドシェイクも実機で確認しました。

先に重要な点:これは「完全匿名になるVPN」の作り方ではありません。自宅やモバイル回線からRackNerd VPSまで暗号化トンネルを張り、インターネットから見えるIPv4の出口をVPSへ変える構成です。VPS事業者側には契約情報や接続記録が存在し得ます。

実際に契約RackNerd 1 GB KVM VPS
OSUbuntu 24.04.5 LTS
VPNWireGuard
接続確認macOS → VPS → Internet

今回使ったRackNerd VPS

2026年9月14日時点で、私が契約したのは「1 GB KVM VPS Special」です。注文時の表示は年額 $21.99 USD でした。 日本円での請求額は決済時の為替レートやカード会社の海外事務手数料などで変わるため、この記事では米ドル価格を基準にしています。 料金・在庫・提供ロケーションは将来変更される可能性があります。

CPU1 vCPU
RAM1 GB
ストレージ20 GB SSD
月間転送量3000 GB
ネットワーク1 Gbps Public Network Port
IPv4専用IPv4 1個
仮想化KVM
管理権限root
RackNerdの1GB KVM VPS注文画面
実際に選択した1GB KVM VPS。公開時は個人情報や不要な表示をトリミング・マスクしています。

RackNerdを確認する

以下はアフィリエイトリンクです。リンク経由で申込みが行われた場合、当サイトに報酬が入ることがあります。購入者側の価格が必ず安くなるという意味ではありません。

RackNerd公式サイトへ

なぜ自作VPNにしたのか

一般的なVPNサービスはアプリを入れるだけで複数国へ接続できるため便利です。一方、自作VPNはサーバーの更新やセキュリティ設定も自分で管理する必要があります。 それでも今回は、VPSとWireGuardの仕組みを理解しながら、自分専用の固定されたVPN出口を作ってみたかったため自作しました。

1. VPSを起動してControl Panelを確認

注文後、RackNerdからVPSのIPアドレス、root情報、NerdVM(SolusVM)Control Panelの情報が届きました。 Control Panelでは、Ubuntu 24.04 64 Bit、Disk 20 GB、Memory 1 GBなどを確認できます。

RackNerd NerdVM Control Panel
VPSがOnlineになった直後のControl Panel。記事公開用画像ではIPアドレスや氏名などを隠します。

2. MacからSSH接続してUbuntuを更新

最初はRackNerdから発行されたroot情報でSSH接続します。

ssh root@YOUR_VPS_IP

接続後、OSとリソースを確認しました。

whoami
hostname
cat /etc/os-release
ip addr
free -h
df -h

契約直後の実測では、RAMは約961MiB、Swap 1GiB、ルートディスクは約19GiBとして認識されていました。表記単位や予約領域の違いによるもので、1GB / 20GBプランとして不自然な値ではありません。

続いて更新します。

apt update
apt upgrade -y

更新中にkeyboard-configurationが表示されたため、今回は標準的な English (US) を選択しました。 OpenSSHの設定ファイルについて「ローカル変更済み」と聞かれた場面では、既存のSSH接続条件を壊さないよう keep the local version currently installed を選択しました。

Ubuntu keyboard-configuration画面
apt upgrade中に表示されたキーボード配列設定。English (US)を選択しました。
OpenSSH設定ファイルの選択画面
OpenSSH更新時は既存のローカル設定を維持してから、後で自分でSSHを安全化しました。

カーネル更新後は再起動し、状態を確認しました。

reboot

# 再接続後
uname -r
systemctl --failed
apt list --upgradable

今回の結果はUbuntu 24.04.5 LTS、Kernel 6.8.0-139-generic、failed unit 0、更新残りなしでした。

3. 一般管理ユーザーを作ってSSH鍵認証へ切り替える

rootパスワードで直接入り続けるのではなく、管理用ユーザー vpnadmin を作りました。

adduser vpnadmin
usermod -aG sudo vpnadmin
id vpnadmin

Mac側ではEd25519のSSH鍵を作成します。

ssh-keygen -t ed25519 -a 100 \
  -f ~/.ssh/racknerd_wireguard \
  -C "racknerd-wireguard"

秘密鍵 ~/.ssh/racknerd_wireguard は公開しません。記事やスクリーンショットにも載せないようにします。

公開鍵だけをVPSへ送ります。

scp ~/.ssh/racknerd_wireguard.pub \
  root@YOUR_VPS_IP:/tmp/racknerd_wireguard.pub

VPS側で authorized_keys に登録します。

install -d -m 700 -o vpnadmin -g vpnadmin /home/vpnadmin/.ssh
cat /tmp/racknerd_wireguard.pub > /home/vpnadmin/.ssh/authorized_keys
chown vpnadmin:vpnadmin /home/vpnadmin/.ssh/authorized_keys
chmod 600 /home/vpnadmin/.ssh/authorized_keys
rm /tmp/racknerd_wireguard.pub

Macから鍵で入れることと、sudoできることを確認します。

ssh -i ~/.ssh/racknerd_wireguard vpnadmin@YOUR_VPS_IP
whoami
sudo whoami

私の環境では whoami → vpnadmin、sudo whoami → root になりました。

4. rootのSSHログインとパスワード認証を無効化

既存設定を確認したところ、初期状態ではrootログインとパスワード認証が有効でした。

sudo sshd -T | grep -E \
'permitrootlogin|passwordauthentication|pubkeyauthentication|kbdinteractiveauthentication'

このVPSでは /etc/ssh/sshd_config.d/50-cloud-init.conf に PasswordAuthentication yes がありました。OpenSSHは設定の読み込み順が重要なので、先に読ませるファイルを作ります。

sudo nano /etc/ssh/sshd_config.d/00-racknerd-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

構文を確認してからreloadします。

sudo sshd -t
sudo systemctl reload ssh
sudo sshd -T | grep -E \
'permitrootlogin|passwordauthentication|pubkeyauthentication|kbdinteractiveauthentication'

最終的には次の状態になりました。

permitrootlogin no
pubkeyauthentication yes
passwordauthentication no
kbdinteractiveauthentication no

ポイント

今使っているSSH接続を閉じる前に、必ず別ターミナルから鍵認証で再ログインできることを確認します。設定ミスで自分を締め出す事故を避けるためです。

パスワードのみでは入れないことも実際に確認しました。

ssh -o PubkeyAuthentication=no \
  -o PreferredAuthentications=password \
  vpnadmin@YOUR_VPS_IP

結果は Permission denied (publickey). でした。

なお、設定中のSSHログには、外部IPからrootへパスワード認証を試した失敗ログもすでに出ていました。 公開VPSは自動スキャンの対象になりやすいため、「後でセキュリティ設定しよう」ではなく、最初の作業としてSSHを固める方が安心です。

5. UFWでSSHとWireGuardだけを許可

SSH 22/tcpとWireGuard 51820/udpを先に許可してからUFWを有効化しました。

sudo ufw allow 22/tcp
sudo ufw allow 51820/udp
sudo ufw show added
sudo ufw enable
sudo ufw status verbose

有効化後も、別ターミナルからSSH鍵で再接続できることを確認します。

6. WireGuardをインストールしてIPv4転送を有効化

sudo apt update
sudo apt install -y wireguard
wg --version

VPNクライアントの通信をVPSからインターネットへ転送するため、IPv4 forwardingを有効にします。

sudo nano /etc/sysctl.d/99-wireguard-forward.conf
net.ipv4.ip_forward=1
sudo sysctl --system
sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1 になればOKです。

UFWではwg0からeth0へ転送する通信を許可します。

sudo ufw route allow in on wg0 out on eth0

7. WireGuardサーバー鍵とwg0を作る

秘密鍵は画面へ表示しないように作ります。

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'

wg0.conf はVPS内部用アドレスを 10.66.66.1/24、待受ポートを 51820 としました。NATはeth0へMASQUERADEします。

sudo bash -c 'umask 077
{
  echo "[Interface]"
  echo "Address = 10.66.66.1/24"
  echo "ListenPort = 51820"
  printf "PrivateKey = "
  cat /etc/wireguard/server_private.key
  echo "PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE"
  echo "PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE"
} > /etc/wireguard/wg0.conf'
sudo chmod 600 /etc/wireguard/wg0.conf

起動・自動起動を設定します。

sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
ip addr show wg0
sudo iptables -t nat -L POSTROUTING -n -v

私の環境では active (exited)、wg0 = 10.66.66.1/24、UDP 51820待受、eth0へのMASQUERADEを確認できました。

8. Mac側のWireGuard鍵と設定を作る

クライアント秘密鍵はMacの外へ出さず、Mac上で生成します。

mkdir -p ~/.wireguard
chmod 700 ~/.wireguard
umask 077
wg genkey | tee ~/.wireguard/mac_private.key | \
  wg pubkey > ~/.wireguard/mac_public.key

VPSの /etc/wireguard/wg0.conf にMacの公開鍵をPeerとして追加します。

[Peer]
# MacBook
PublicKey = MAC_PUBLIC_KEY
AllowedIPs = 10.66.66.2/32

設定反映には、SSHを切らずに次を使いました。

sudo wg-quick strip wg0 | sudo wg syncconf wg0 /dev/stdin

Mac側は次のような設定です。

[Interface]
PrivateKey = MAC_PRIVATE_KEY
Address = 10.66.66.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_VPS_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

ここに載せている MAC_PRIVATE_KEY / SERVER_PUBLIC_KEY / YOUR_VPS_IP は置き換え用の文字です。秘密鍵をブログへ貼らないでください。

9. Macから接続して外部IPv4が変わるか確認

Mac側でWireGuardを起動します。

sudo wg-quick up ~/.wireguard/racknerd-us.conf

VPN内部のVPSへPingします。

ping -c 4 10.66.66.1

私の実測では4/4応答、パケットロス0%でした。ただしNew York側VPSへの経路だったため、平均Pingは約300msと高めでした。

VPNをOFFにした状態とONにした状態で外部IPv4も比較しました。

sudo wg-quick down ~/.wireguard/racknerd-us.conf
curl -4 ifconfig.me

echo
sudo wg-quick up ~/.wireguard/racknerd-us.conf
curl -4 ifconfig.me
echo
VPN OFF日本側の回線IPを確認
VPN ONRackNerd VPSのIPv4へ変更
Packet loss0.0%
WireGuardlatest handshake / transferを確認

実IPは記事では伏せますが、VPN ON時に外部から見えるIPv4が契約したRackNerd VPSのIPv4へ切り替わりました。

macOS側のWireGuard接続確認
Mac側のWireGuard接続状態。公開用では外部IPやPeer情報を必要に応じてマスクします。
VPS側のWireGuardハンドシェイク確認
VPS側でもMac Peerのlatest handshakeと転送量を確認できました。

10. IPv6は別途対策が必要だった

ここは今回の検証で残った注意点です。

Mac側設定を AllowedIPs = 0.0.0.0/0 としているため、WireGuardへ入るのはIPv4です。実際に curl -6 ifconfig.me を実行するとIPv6アドレスが返りました。

つまり「全通信をRackNerd経由にするフルVPN」と考えるなら、このままではIPv6を別経路から出せる状態です。 さらに検証時のMacでは、以前構築した日本VPSのWireGuardもアプリ側で有効になっていたため、IPv6が元回線なのか別VPNなのかを切り分ける必要があります。 この記事では、確認できた範囲を正直に分けるためIPv4の海外VPSトンネル構築までを完成範囲とします。

完全なフルトンネルとして運用する場合は、IPv6をWireGuard側へルーティングする構成、IPv6を明示的に遮断する構成、DNS経路の確認などを追加で行う必要があります。

実際にやって分かったメリット・デメリット

良かった点注意点
1GB / 1vCPUでもWireGuard用途なら軽いVPSはアンマネージドなので設定・更新は自分で行う
専用IPv4を自分のVPN出口として使える商用VPNのようにワンタップで多数国へ切替える用途には向かない
SSH・Firewall・WireGuardを自分で制御できる秘密鍵とバックアップの管理責任も自分にある
年額$21.99で今回の実験を始められたロケーションや回線経路によって遅延は変わる。今回は約300ms
実際にMacの外部IPv4がVPSへ変わることを確認できたIPv6やDNSまで含めた「漏れ対策」は別途確認が必要

RackNerdが向いていそうな人

逆に、VPNの設定やサーバー管理をしたくない人、複数国の出口を頻繁に切り替えたい人、24時間のアプリサポートを求める人は一般的なVPNサービスの方が扱いやすいと思います。

利用規約も確認しておく

RackNerdのVPSはアンマネージドが基本で、OS・Firewall・アプリ・バックアップ等は利用者側で管理する前提です。 また違法行為、スパム、ブルートフォース攻撃、DDoS等は禁止されています。利用目的に不明点がある場合は契約前に公式サポートへ確認してください。

まとめ

RackNerdの1GB KVM VPSへUbuntu 24.04を入れ、SSH鍵認証・UFW・WireGuardを設定して、MacからVPS経由でIPv4通信できるところまで確認できました。 「海外VPSを借りて自作VPNを作る」という実験としては、1GB / 1vCPUでも十分に動作しています。 一方で、IPv6とDNSを含めた完全なフルトンネル化は追加確認が必要です。今後そこまで仕上げた場合は、この検証の続きとして追記します。

今回利用したRackNerd

現在の料金・在庫・ロケーションは公式画面で確認してください。以下のリンクはアフィリエイトリンクです。

RackNerdを確認する