🌸
さくら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 をインストールする
空のトンネルを追加する
任意の名前をつけて、次の内容を入力する。
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