AdGuard DNS を簡単設定する


概要

AdGuard DNS https://adguard.com/ja/adguard-dns/overview.html

広告のIPを名前解決しないDNSサービス。無料。
DNSサーバーの設定を変えるだけで使えて簡単。
スマホはWiFi接続時のみ設定可能

GUIで変更するのは面倒なので、shellを書いた

使い方

DNS設定なし → AdGuard DNS設定追加 をする場合

$ sh setAdGuardDns.sh

Please select target service. # 対象を選択
1) Ethernet
2) Wi-Fi
3) Bluetooth
4) PAN
5) Thunderbolt
6) Bridge
7) exit
#? 1
Display DNS setting of Ethernet # 実行前のDNS設定

There arent any DNS Servers set on Ethernet.
-----

Please select an action. # 処理を選択 追加 or 初期化
1) setAdGuardDns
2) unSetDns
3) exit
#? 1
setAdGuardDns done!
Display DNS setting of Ethernet # 実行後のDNS設定

176.103.130.130
176.103.130.131
176.103.130.132
176.103.130.134
-----

2) unsetDns を選ぶとDNS設定がクリアされる

code

setAdGuardDns.sh

#!/bin/sh
COLUMNS=1

# note: https://adguard.com/en/adguard-dns/overview.html#instruction
readonly DNS_IP="176.103.130.130 176.103.130.131 176.103.130.132 176.103.130.134"

function dispDnsSetting () {
    TARGET=$1
    echo "Display DNS setting of ${TARGET}"
    echo ""

    networksetup -getdnsservers $TARGET
    echo "-----"
    echo ""
}

# networkServece一覧取得
SERVICES=$(networksetup -listallnetworkservices | grep -v 'An asterisk')" exit"

# 対象選択
echo "Please select target service."
select TARGET in $SERVICES
do
    if [ "$TARGET" = "exit" ]; then
        exit
    fi

    dispDnsSetting $TARGET
    break
done

# DNS set or unSet
echo "Please select an action."
select COMMAND in setAdGuardDns unSetDns exit
do
    case $COMMAND in
    "setAdGuardDns" ) networksetup -setdnsservers $TARGET $DNS_IP ;;
    "unSetDns" ) networksetup -setdnsservers $TARGET Empty ;;
    "exit" ) exit ;;
    esac

    break
done

echo "${COMMAND} done!"
dispDnsSetting $TARGET