Skip to content

Instantly share code, notes, and snippets.

@t-shiro
Created January 1, 2024 12:55
Show Gist options
  • Save t-shiro/5d25c1da1f6a00bd4bbc276f81a8ce4b to your computer and use it in GitHub Desktop.
Save t-shiro/5d25c1da1f6a00bd4bbc276f81a8ce4b to your computer and use it in GitHub Desktop.
how-to-config-ad-blocking-dns-in-ds216j
# Synologyの古いNASでDNSサーバでad-block用
## TL;DR
Synologyの古いNAS上で、Synologyが提供するDNS Serverパッケージのファイルを編集して広告ドメインをnull zoneに落とすAd-block DNS Serverを作ります。
過去の情報と比較して、最新のDSM7.2系ではファイルパスが異なるため、その対応を行います。
## System information
- NAS: Synology DS216j
- DSM: DSM 7.2.1-69057 Update 3
- DNS Server: 2.2.2-23120
## 事前設定
- SSHログインの有効化
- 端末とSNMP - 端末 以下で「SSHサービスを有効化する。」にチェックして適用
- ユーザーホームサービスの有効化
- コントロールパネル - ユーザーとグループ - 詳細 - ユーザーホームサービス 以下で「ユーザーホームサービスを有効化する」にチェックして適用
- DNS Serverパッケージのインストール
- パッケージセンターにてDNSで検索
- 開発元がSynology Inc. のDNS Serverをインストール
## DNSサーバの設定
### ひな形となる設定の投入
過去の手順を踏襲し、 null.zone.file という名前のドメインを作成します。
- DNS Serverパッケージを開く
- 左から「ゾーン」カラムを開き、作成 - プライマリ ゾーン の順にクリックして新規作成
- ドメイン タイプ: 正引きゾーン
- ドメイン名: null.zone.file
- プライマリDNSサーバ: Synology NASのアドレス
- シリアル番号のフォーマット: 日付(YYYYMMDD)
- その他はデフォルトのままで保存
### Zone masterファイルの編集
- NASにsshでログイン
- sudo su - にてrootユーザーに切り替え
- zone fileの編集
- /var/packages/DNSServer/target/named/etc/zone/master/ 以下の null.zone.file を以下の様に編集
```
$TTL 86400 ; one day';
@ IN SOA ns.null.zone.file. mail.null.zone.file. (
2024010100
86400
7200
864000
86400
)
IN NS ns.null.zone.file.;
IN A 0.0.0.0;
* IN A 0.0.0.0;
```
### Zone dataファイルの編集
- ブロックしたいドメインの一覧を ad-block.dbとして保存
- PCで作成してホームディレクトリ ( /var/services/${username} ) にscp
- /var/packages/DNSServer/target/named/etc/zone/data 以下にコピー
- パーミッションを644に設定
- ad-block.db をincludeするよう設定
```
# DBファイルの例
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data# ls -lah
total 16K
drwxr-xr-x 2 DNSServer DNSServer 4.0K Jan 1 21:12 .
drwxr-xr-x 5 DNSServer DNSServer 4.0K Jan 1 20:45 ..
-rw-r--r-- 1 DNSServer DNSServer 143 Jan 1 21:12 ad-blocker.db
-rw-r--r-- 1 DNSServer DNSServer 263 Jan 1 21:09 null.zone.file
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data#
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data# cat ad-blocker.db
zone "www.amazon.co.jp.infotoop.shop" { type master; notify no; file "/var/packages/DNSServer/target/named/etc/zone/master/null.zone.file"; };
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data#
# include設定
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data# cat null.zone.file
zone "null.zone.file" {
type master;
file "/var/packages/DNSServer/target/named/etc/zone/master/null.zone.file";
allow-transfer {none;};
allow-update {none;};
allow-query {any;};
};
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data# echo 'include "/var/packages/DNSServer/target/named/etc/zone/data/ad-blocker.db";' >> null.zone.file
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data# cat null.zone.file
zone "null.zone.file" {
type master;
file "/var/packages/DNSServer/target/named/etc/zone/master/null.zone.file";
allow-transfer {none;};
allow-update {none;};
allow-query {any;};
};
include "/var/packages/DNSServer/target/named/etc/zone/data/ad-blocker.db";
root@okinawa-nas:/var/packages/DNSServer/target/named/etc/zone/data#
```
### 設定反映と動作確認
パッケージマネージャから手動でDNS Serverを停止 → 起動
```
[ romanov@michael ] $ dig @192.168.200.210 www.amazon.co.jp.infotoop.shop
; <<>> DiG 9.10.6 <<>> @192.168.200.210 www.amazon.co.jp.infotoop.shop
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27682
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.amazon.co.jp.infotoop.shop. IN A
;; ANSWER SECTION:
www.amazon.co.jp.infotoop.shop. 86400 IN A 0.0.0.0
;; Query time: 5 msec
;; SERVER: 192.168.200.210#53(192.168.200.210)
;; WHEN: Mon Jan 01 21:53:08 JST 2024
;; MSG SIZE rcvd: 75
[ romanov@michael ] $
```
### 備考
DS216Jでは5万レコード程度でDNSサーバの起動に失敗する様になった
## 参考情報
https://www.europoint.uk/using-synology-dns-server-to-block-adverts/
https://github.com/steventblack/ad-blocker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment