VPSにWireGuardとPi-holeを立てた話

出先でネットサーフィンをしている時、見たくないものまでロードされる時はありませんか?
ちなみに一般の方は出先でネットサーフィンをしないらしいので、悪しからず。

VPSの準備

今回はさくらのVPSを利用することにします。
そこまで過負荷が予想されないので、最低スペックにします。

下記で600円前後/月ですね。

  • CPU : 仮想1Core
  • メモリ : 512MB
  • SSD : 25GB

次にOSを(再)インストールをします。
下記のように選択します。

  • OSインストール方法 : 標準OS
  • OS : Ubuntu
  • バージョン : 20.04 amd64
  • 管理ユーザー名 : ubuntu (規定値)
  • 管理ユーザーのパスワード : 任意
  • スタートアップスクリプト : 無し
  • パケットフィルター設定 : パケットフィルターを利用しない

選択が完了したら”内容確認を押して、インストールが完了するのを待ちます。

Pi-holeのインストール

VPSが起動したら、ローカルマシンからsshでVPSへ接続します。

ssh <管理ユーザー名>@<VPSのIPアドレス>

システムを最新の状態にします。

sudo apt update
sudo apt upgrade -y

パッケージのインストールをします。

sudo apt install curl gnupg -y

Pi-holeをインストールします。
コマンドラインで下記を実行します。

sudo curl -sSL https://install.pi-hole.net | bash

途中、インストールウィザードが表示された後は、”Yes” or “Continue” or “OK”で進めてください。
選択が終わったら自動でインストールが進みます。
コマンドラインに”Installation complete!”と表示されればインストール完了です。

その同じ画面に、Pi-holeの管理画面にアクセスするためのパスワードが表示されていますので、
忘れずに書き留めてください。

[i] Web Interface password : xxxxxxxx
または
Your Admin Webpage login password is xxxxxxxx

コマンドラインで次を実行すると管理画面のパスワードを変更することもできます。

sudo pihole -a -p

“Enter New Password (Blank for no password)”:
ということなので、変更されたい方は新しいパスワードを入力。
逆にパスワードレスにされたい方は何も入力せずにEnterでOKです。

WireGuardサーバーの設定

WireGuardをインストールします。
コマンドラインで下記を実行します。

sudo apt install wireguard -y

Config情報を生成します。
Wireguard Config Generatorという便利なツールがあるので使わせていただきます。
https://www.wireguardconfig.com
ペンギンのイラストかわいい…..。

下記の通り入力していきます。

Random Seed
特に変更不要

Listen Port
特に変更不要, デフォルト値 : 51820 (任意に変更してOK)

Number of Clients
接続させたいクライアント数を指定

CIDR
ローカルIPとして使います。ここでは10.0.0.0/24として説明します。

Client Allowed IPs
許可するIPを指定します。
ひとまず初期値のままとします。(0.0.0.0/0, ::/0)

Endpoint (Optional)
<VPSのIPアドレス>:<Listen Port>

DNS (Optional)
10.0.0.1
(サーバーのローカルIPアドレスを指定します。)

Post-Up Rule (初期値)

iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Post-Down Rule (初期値)

iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

ここまで入力できたら、”Generate Config”を押すと下記のように出力されます。

上記の緑枠の内容全てをwg0.confに書き込みます。

sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = CHrkctsZ7U/s0BtNchogehogeBuHhFgCG8OYOUo=
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


[Peer]
PublicKey = AQyX7QO/QrhogehogeC0UkCs=
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = 8urJscsS1skhogehogegUgU=
AllowedIPs = 10.0.0.3/32

[Peer]
PublicKey = XFNLXhdENuNYhogehogecxdEs=
AllowedIPs = 10.0.0.4/32

パケットの転送を下記に沿って有効化します。

sudo nano /etc/sysctl.conf

“net.ipv3.ip_forward=1″という行がコメントアウトされている場合はコメントアウトを解除します。

変更が完了したら変更を適用します。

sudo sysctl -p

VPSのファイアーウォールの設定

ufwを使用して、ポートの設定を行います。
必要最低限のみポートを開放します。

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 53/udp
sudo ufw allow <Listen Port>/udp
sudo ufw enable

VPS起動時にWireGuardを自動起動する設定をします。

sudo systemctl start wg-quick@wg0

WireGuardを起動します。

sudo wg-quick up wg0

おわり。

おわりに

以上でVPS上にPi-hole込みのVPNサーバーを構築することができます。

あとはiOSなりWindowsなりでクライアント追加すればVPSへ接続することができます。

これで出先でもiPhoneでVPNをオンにすると、Pi-holeを経由して通信をしてくれるので、
DNSブロックの恩恵を受けることができますね。

長くなってきたのでクライアントの追加方法は時間があれば別で記事化したいと思います。

それではまた。

タイトルとURLをコピーしました