Raspberry PIにPi-hole付きのOpenVPNを構築して、広告ブロックVPNサーバを作る

執筆者:

カテゴリ:

投稿日

最終編集日

今までは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をインストールします。

arappli_appstore
arappli-google

このアプリをインストールしたら、開いて、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を再接続すると、つながると思います。

以上で解説を終わります。質問があれば、コメントまでお願いします。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です