Softehter VPNで作るAdGuradもどき

AdGurad金かかる。そもそも、ググればやり方が出てくるだし、金払ってまで作らなくてよくね?勤務先のPC管理すべてを担っていて、勤務先の社長はゲームをプレイするためにジャンクのPCをいくつか持ってる。しかも、つい最近、リモートワーク対応のためにRDPとSoftether VPNの構築をしたばかりだし。というわけでDNSサーバを立ててみることにしました。

※構築済みの奴をgithubで公開しました。
https://github.com/rirufa/bind-adblock

Bind9を落とし、設定する

bind9 downloadと検索し、バイナリーを落とします。windows版のバイナリーはなくなってしまったので、ジャンクPCにLinuxを突っ込むかWSLでごにょごにょしたほうが楽だとは思いますが、ジャンクPCがあるのはVPNの中です。VPNを突破されなければbind9が古かろうが問題ありません。そこでbind9 9.11.2 あたりだとx86バイナリーがあるので、

ftp://ftp.isc.org/isc/bind9/9.11.2

からバイナリーを落としてインストールしました。
その後、インストール先のフォルダー/etcにname.confがあるので、以下のように書き換えます

options {
    directory "c:\ProgramData\named"; 
    forwarders {
        192.168.3.1; 
    };
    forward only;
    allow-query { any; };
    recursion yes;
    version "version: none";
    listen-on-v6{
        any;
    };
    response-policy {
        zone "rpz.zone";
    };
};
zone "rpz.zone" {
	type master;
	file "rpz.local";
	masterfile-format text;
	allow-query { none; };
};
zone "." {
    type hint;
    file "named.root";
};

forwardersのIPアドレスはルーターのIPアドレスを指定してください。このIPアドレスがDNSサーバーも兼ねてます。

その後、https://www.internic.net/domain/named.root をダウンロードして、directoryに書かれたところにnamed.rootを配置してください。

広告ブロックの作成

bindの初期設定が終わったら、広告ブロックの作成をします。

上のサイトからサーバーリストをダウンロードし、280blocker_domain.txtという名前で保存します。保存し終えたら、bomを除去します。メモ帳で開いて、ansiで保存すればOKです。

次に、rpz_base.localというファイル名で、以下の内容を記述します。保存場所はnamed.rootと同じです

$TTL 600
@       IN SOA  ns1.cowcowlocal.com. root.cowcowlocal.com. (
                                        1       ; serial
                                        60      ; refresh
                                        60      ; retry
                                        60      ; expire
                                        60 )    ; minimum
        IN NS   ns1.cowcowlocal.com.
img.gsspat.jp IN CNAME .

rpz_base.localが保存してあるところにadd_blocklist.cmdを作ります。

@echo off
set OUTPUT_FILE=rpz.local
set OUTPUT_FOLDER=\ProgramData\named
set REDIRECT_IPV4=192.168.3.26
set REDIRECT_IPV6=2404:7a80:b4c0:1300:d267:e5ff:fef0:964
rem rpz_base.localを読み込む
for /f "delims=" %%i in (rpz_base.local) do (
  echo %%i >> %OUTPUT_FILE%
)
rem 280blocker_domain.txtのみ受付可能
for /f "eol=#" %%i in (280blocker_domain.txt) do (
  echo %%i  IN CNAME . >> %OUTPUT_FILE%
)
move /y %OUTPUT_FILE% %OUTPUT_FOLDER%
echo 処理完了
pause

この際、OUTPUT_FOLDERの値はname.confのoptionのdirectoryと同じ値にします。このファイルを作り終えたら、何らかの方法で実行します。

起動

これで設定が終わったので、bind9を起動し、DNSサーバを設定し、動作確認をします。最後にff14速報などを起動して広告が表示されなければおしまいです。

なお、これはあくまで実験の一環なのでセキュリティはあまり考慮してません。VPNに何らかの方法で侵入されたら、何が起こるかわからないので、ある程度運用するなら、NAT機能が付いたルーターを何台か用意しておいたほうがいいかなと思います。(もしくはVLANという機能を使うという手もあり、GS105Eという安いスイッチングハブがあるそうです)

大体の場合、VpnAzureとかで運用するので、草々突破されることはないかと思いますが…

いいなと思ったら応援しよう!