広告除去ができるAdGuardHomeの設定方法 ​

こんにちは。初めての投稿で素人ですがよろしくお願いします。
AdGuardHomeの設定がなんとかできたのでその方法をご紹介。

***2019/3/3更新。設定方法が新しくなったので更新します。***
#注意点
***この記事に従ってDNSサーバーを作るだけでは、セキュリティ上重大な問題を抱えることになります。初心者の方がこの記事でDNSサーバーを作るのは非推奨です。***

こちらも参考にしてください。
[Adguard HomeでVPSに広告ブロックDNSを立てました - 280blocker](https://280blocker.net/blog/20181126/1315/)

下のほうにufwを使ったアクセス制限の方法を記載しましたが、まだまだ追加の設定が必要かと思います。

対策をいろいろと調べましたが、モバイル回線でこの問題を対策しながらDNSサーバーを作るのは私のレベルでは無理だと感じました。

そのため、このように追記した形で、再度公開させていただきます。
#AdGuardHomeとは
DNSサーバーを自分で立てるためのものです。
各種フィルタを設定でき、その設定で広告やアダルトサイトなどをブロックすることができます。

iosではもともとSafariの広告をコンテンツブロッカーによって消すことができますが、他のアプリの広告（Chromeなど）も消去するアプリが存在します。
AdGuard proや、DNScloakといったアプリです。
しかし、これらのアプリはAppleが方針でアプリ内広告を消すことをグレーとしているため、いつ使えなくなってもおかしくない状態です。
また、アプリの更新も拒否されていたりして、安定した動作をしないという報告も多数あります。
DNSを変更することはこういった問題点がないと言えるでしょう。
DNSoverrideというアプリを入れれば、モバイル通信でもDNSを変更でき、（今の所)安定しています。
#参考記事
- https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started

AdGuardHomeの公式ページです。ここを必死に日本語訳して設定しました。

- https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration

AdGuardHomeの設定ファイルです。目を通しておくことをおすすめします。問題がなければデフォルト設定でいいでしょう。

- [AdGuard Homeを使った広告ブロック](https://280blocker.net/blog/20181027/1254/)

iosのコンテンツブロッカーでお馴染み280さんのブログ。私はVPSを使って設定したので、ラズパイを使っているこちらの記事とは少し異なりますが、そもそもAdGuardHomeのことを知ったのがこの記事なので紹介します。
#使用環境
- VPS

今回はVPSを使った設定を紹介するのでVPSの準備を。私はconoHaの一番安いプランを契約。

- OS

ubuntu16.04(64bit)です。これは私がN予備校でプログラミングを学んでいるためです。
#v0.93での導入方法
v0.93から新しい導入方法が追加され、簡単にDNSサーバーを動かせるようになりました。
公式サイトの設定方法
https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started

##インストール
```
$ wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.93/AdGuardHome_v0.93_linux_amd64.tar.gz
$ tar xvf AdGuardHome_v0.93_linux_amd64.tar.gz
```
```
AdGuardHome/AdGuardHome
AdGuardHome/LICENSE.TXT
AdGuardHome/README.md
```
と出てきたらOKです。
##サーバー起動
管理者権限が必要です。sudoコマンドを使いましょう。

```
$ cd AdGuardHome
$ sudo ./AdGuardHome
```
うまく起動できるといろいろと長い文字のなかにこのような文字が表示されると思います。

```
AdGuard Home is available on the following addresses:
Go to http://127.0.0.1:3000
Go to http://X.X.X.X:3000
```
```
http://X.X.X.X:3000
````
にアクセスしましょう。（X.X.X.Xには自分のサーバーのipアドレスが入ります。）
すると初期設定ウィザードがスタートします。
Admin Web InterfaceとDNS serverのListen Interfaceは自分のサーバーのipアドレスが入ったものを選択しましょう。ポートはそのままで大丈夫だと思います。
続いて管理ページにアクセスするIDとパスワードを設定したら、管理ページにアクセスできます。

ポートを初期設定のままにした人は、次回からウェブの管理ページにアクセスするときは、```http://X.X.X.X:80```となるので注意してください。

##追加設定
このままでもサーバーとしては使用できますが、サーバーをストップしたりするコマンドを使用するための設定もしておいたほうがいいでしょう。

```
$ cd AdGuardHome
$ sudo ./AdGuardHome -s install
```
これでいろいろなコマンドが使えるようになりました。
```AdGuardHome -s start```でシステムスタート、```AdGuardHome -s stop```でシステムストップといった具合です。
詳しくはこちらを参照してください。
https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#running-as-a-service

#その他の設定
##日本用広告ファイルの読み込み
このままの状態でも広告をブロックしてくれますが、やはり日本向けの広告フィルターを使わないと実用性は乏しいかと思います。

まずは、ブラウザを開き、```http://XX.XX.XX.XX:80```にアクセスします。XXの部分をVPSのipアドレスに変更してください。
￼![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3231323032392f34623065323639342d613339342d346465342d346534312d3363383161323261663564612e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/212029/0f2a2e2c-6882-209e-e897-1306ef8a77fd.png)
このようなページが開くと思います。

上の「Filters」をクリックして、チェックボックスのチェックをすべて外します。
そして、280さんの広告リストを読み込みましょう。
https://280blocker.net/files/280blocker_domain.txt

「Add filter」をクリックし、「Enter name」に280（わかりやすい名前ならなんでも）、「Enter URL」に上記のURLを入力してAdd filterをクリック。
これでOKです！
##もしブラウザでAdGuardHomeにアクセスできない場合
VPSのファイヤーフォールが邪魔をしている可能性があります。

```
# iptables -F
```
で一度iptablesの設定を全消しすれば接続できるかと思います。
しかし、これはファイヤーフォールを解除する設定なので、以下のコマンドで設定し直しましょう。

```
$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 3000
$ sudo ufw allow 53
$ sudo ufw allow 80
$ sudo ufw default deny
```
##ufwの設定でオープンリゾルバを回避
v0.93時点では、ある程度のDDos攻撃への対策がなされています。しかし、サーバーがオープンリゾルバというのは良くないので対策が必要です。
ufwでは簡単に、指定したipアドレスしか接続を許可しないという設定ができます。
例として

```
$ sudo ufw allow from X.X.X.X/24 to any port 53
```
X.X.X.X/24という範囲のipアドレスからのポート53へのアクセスを許可するという設定です。
私はこれを使い、使用しているキャリアであるドコモのipのみを許可しています。

オープンリゾルバ確認サイトで確認してみると、一応のところオープンリゾルバではないようでした。しかし、まだまだ追加の対策が必要だと思うので、現在私はAdGuardHomeのサーバーを動かしていません。

オープンリゾルバかどうかの確認はこのコマンドを実行することで確認できます。

```
$ wget -qO - http://www.openresolver.jp/cli/check.html
```
[OPEN]と１つでも表示されていればオープンリゾルバですので対策が必要です。
参照元：https://www.jpcert.or.jp/pr/2013/pr130002.html

##広告がブロックできない！
モバイル回線ではDNSが変更できないので、iosの場合DNSoverrideというアプリを使うことになりますが...
なんと！！！280さんのドメインリストだとこのアプリ上で広告をブロックしてくれません。
ログ上ではちゃんと広告ブロックしてくれているのですが...

これは、hostファイルを利用することで解決することができます。
hosts2chを利用しましょう。
https://sites.google.com/site/hosts2ch/ja
このファイルを追加しましょう。

jaファイルはサブスクリプションに追加できないので、一旦ファイルを開いて、中身を下のテキストボックスにペーストすると良いでしょう。

また、280さんのリストはマイニングスクリプトもブロックしてくれますが、hosts2chのリストには入っていないので、以下のファイルも読み込むといいと思います。
https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt

##遅い！
管理ページにアクセスして、「クエリ・ログ」のログを無効にすると結構早くなります。

#終わりに
***玄人技術者の方、セキュリティの問題や設定の間違いがあればぜひ教えてください！***

今回は、詳しい人が多いかなと思い、布教とともにアドバイスを求めるという目的でもQiitaに投稿してみました。ご意見お待ちしております。
​