🌸

さくらVPSで固定IPを取得+VPN接続

に公開

前提

さくら VPS で固定 IP を取得し、そこに VPN 接続するまでの作業メモです。
さくら VPS は 2 週間トライアルできるので試すのに便利です。

環境

  • PC: MacOS(Windows でも問題ないと思います)
  • さくら VPS: Rocky Linux 9

さくら VPS の設定

パケットフィルターの設定

まずは GUI 上でパケットフィルターの設定。使うパケットのみ許可しておく

ファイアウォールの設定

ここからは VPS のコンソールに入って設定。
最初はテーブルがないと思うので作成

$ sudo nft add table inet filter

チェインを作成(デフォルトのポリシー)

$ sudo nft add chain inet filter input { type filter hook input priority 0 \; policy accept \; }

8000 ポートを使う想定で設定

$ sudo nft add rule inet filter input tcp dport 8000 accept
$ sudo nft add rule inet filter input udp dport 8000 accept

ルールが正しく設定できているか確認

$ sudo nft list ruleset

再起動しても設定が消えないよう永続化の設定

$ sudo sh -c 'nft list ruleset > /etc/sysconfig/nftables.conf'
$ sudo systemctl enable nftables
$ sudo systemctl restart nftables

さくら VPS に VPN 接続できるよう WireGuard を構築

wg のインストール

$ sudo dnf install wireguard-tools -y

鍵の作成

$ wg genkey | tee server_private.key | wg pubkey > server_public.key

鍵の確認。これを控えておく

$ cat server_private.key
$ cat server_public.key

次に設定ファイルの書き換え

$ sudo nano /etc/wireguard/wg0.conf

↓ 書き込む内容

[Interface]
PrivateKey = server_private.key の中身
Address = 10.0.0.1/24
ListenPort = 51820

設定後パーミッション設定

$ sudo chmod 600 /etc/wireguard/wg0.conf

WireGuard 起動

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

自分の使いたいプロトコルの許可をする。ここでは UDP

$ sudo nft add rule inet filter input udp dport 51820 accept

PC 側の設定

Mac も Windows も、WireGuard をインストールする
https://www.wireguard.com/install/

空のトンネルを追加する

任意の名前をつけて、次の内容を入力する。
WireGuard アプリ上に公開鍵と秘密鍵が表示されているので控えておく

[Interface]
PrivateKey = 自分の秘密鍵
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = さっき控えたサーバー側のserver_public.key
AllowedIPs = 10.0.0.0/24
Endpoint = さくらVPSのIPアドレス:プロトコル #例:000.000.000.000:51820
PersistentKeepalive = 25

さくら VPS 側にクライアントの登録

$ sudo nano /etc/wireguard/wg0.conf

追記内容

[Peer]
PublicKey = PC側の公開鍵
AllowedIPs = 10.0.0.2/32

保存後に再起動

$ sudo systemctl restart wg-quick@wg0

接続確認

WireGuard で有効化ボタンを押して VPN 接続をする。

さくら VPS 側でもコンソールから今繋いでるクライアントを確認できる。

$ sudo wg

ここでクライアントの IP アドレスが正しく表示されていない場合はサーバーかクライアントのどちらかの設定が誤っています。

〜〜〜
今回は UDP パケットを Mac に中継したいので設定。

まずは socat がなければインストール

$ sudo dnf install socat -y

$ socat UDP4-RECVFROM:8000,fork UDP4:10.0.0.2:8000
# あるいは
$ socat -v UDP4-RECVFROM:8000,fork UDP4-SENDTO:10.0.0.2:8000

おわり

Discussion