今まではVPNとDNSは別々だったが、同時に設定できないため、VPNをつなぐとDNSの広告ブロック機能を使えるようにしました。
環境
- Raspberry PI 5 4GB
- OpenVPN
- Pi-hole
もともとPiVPNのOpenVPNとAdGuardで構築の予定だったが、うまくいかなかったので、海外の人がやっているやり方をしました。
参考
OpenVPNのインストール
この動画は2020年のものなので、2020年のファイルをダウンロードしました。
wget https://raw.githubusercontent.com/angristan/openvpn-install/14bcfbd531954ee13a5814235e15605879c7721f/openvpn-install.sh
https://github.com/angristan/openvpn-install
このサイトのインストールの、2020年3月版のダウンロードです。
これを実行すると、/home/(ユーザ名)に”openvpn-install.sh”ができます。
次にこのコマンドを実行します。
sudo bash openvpn-install.sh
すると、IPアドレスを入力する場面になるので、そのまま
Enter
を押します。
NATが~のような設定が出てきます。自分のドメインもしくはIPアドレスを入力します。
次に”Do you want to enable IPv6 support?”(IPv6をやりたいかい?)と出るので、必要がなければ
n
を入力します。私はnを入力しました。
そのあと、ポート、プロトコル、DNS、圧縮とでるので、そのままデフォルトのまま続行してください。
次に、Customize encryption settings?(暗号化設定をするか?)と聞かれます。設定をしていくので
y
つぎにデータチャンネルの設定です。データチャンネルは、数値が小さいほど早くなるそうです。動画では3番を選択していましたが、私は1番を選択しました。自分のお好きなものに設定してください。
そのあと、色々聞かれますが、すべてデフォルトで設定します。
Press any key to continue ?と聞かれるまで
Enter
を押してください。
次の設定が重要です。
Enter PEM pass phrase:と出るので、パスワードを入力します。ここを入力しないと、後でVPNのファイルにパスワードを打った時にCAファイルがないとエラーが出ます。
そのため、自分で好きなパスワードを打ちます。
3回ほど出てくるので、同じパスワードでもよいので入力してください。
するとクライアントの設定が出てきます。
Client name: と出てくるので、PhoneやPCなど、端末の名前を入力します。基本、1クライアントファイルに1台なので、端末の名前を入力して、管理をしやすくすることをお勧めします。
すると、Do you want to protect the configuration file with a password? (パスワードを使うか?)と出ます。安全のために設定することをお勧めします。そのため、
2
を入力します。
そして、VPN接続時に打つパスワードを入力して設定してください。
すると、/home/(ユーザ名)に、(クライアント名).ovpn というファイルができます。これを、
cp (クライアント名).ovpn (USBなどのコピー先)
でコピーして、スマートフォンやパソコンにコピーします。
次に、端末でOpenVPN connectをインストールします。
このアプリをインストールしたら、開いて、Upload .ovpnのようなボタンを押し、先ほどコピーした.ovpnのファイルを開きます。そして、パスワードを入力する場面になったら、先ほどクライアントの設定の時に入力したパスワードを入力します。
すると接続できます。しかし、ヘアピンNATという問題があり、同じwifiの中だと接続できない場合があります。もし接続できなかった場合は、モバイルデータや別なwifiからの接続を試してみてください。
ヘアピンNATの解決法は、別なページに書きます。
これでOpenVPNの設定は完了しました。次はPi-holeの設定です。
Pi-hole
Pi-holeをインストールするために、次のコマンドを実行します
curl -sSL https://install.pi-hole.net | bash
Pi-holeのセットアップのやり方です。
Static IPのところは
Continue
をおします。
DNSプロバイダーは、
cloudflare
にします。
Blocklistsは、広告をブロックするため、必ず
Yes
を押します。
query logは
Yes
がいいと思います。
privacy modeは、特に気にせず0のまま
Continue
を押します。
また、端末によって出るかどうかは変わりますが、
Choose An Interfaceと出てきた時は、wifiならwlan0,優先ならeth0を選択します。選択の方法は、矢印キーでカーソル移動、スペースで選択、Enterで決定です。
プロトコルの設定では、IPv4を選択してください。
そして、、web serverは必ずインストールしましょう。
インストールが終わると、
View the web interface at http://pi.hole:80/admin or http://(自分のIP):80/admin
のように出てくるので、このページにアクセスします。この時、/adminを打たないと、アクセスできないので注意してください。
するとパスワードを求められます。なので、いったんターミナルに戻って、
pihole setpassword
と打って、パスワードを設定します。
そのパスワードを先ほどのサイトで売って、ログインします。

するとこのような画面になるので、左側の設定からシステムを開き、自分のプライマリIPアドレスを確認します。

これのIPv4を使っていきます。
次にいよいよ、VPNとDNSの結び付けです。
VPNとDNS
サーバを開き、OpenVPNのconfigを編集します。
sudo nano /etc/openvpn/server.conf
すると、ばーーーっと設定が出てきます。ここをいじります。
まず、DNSを設定します。
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 0.0.0.0"
このように書いてあると思うので、
push "dhcp-option DNS Pi-holeのIPv4"
に直します。1行のみにしてください。
また、
push "route Pi-holeのIPv4の3桁まで.0 255.255.255.0"
を、push “dhcp-option DNS Pi-holeのIPv4″の上に書いてください。
私の場合、
push "route 192.168.3.0 255.255.255.0"
push "dhcp-option DNS 192.168.3.126"
となります。
これで、Ctrl+X, Y, Enterとおしてセーブして、
sudo systemctl restart openvpn@server
として再起動します。
そして、スマホなどのクライアントのVPNを再接続すると、つながると思います。
以上で解説を終わります。質問があれば、コメントまでお願いします。

コメントを残す