野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

MacOS DNS Over HTTPS の設定

最近、MacOS で DoH を構築するために試行錯誤し、その過程を記録しました。

異なる方法があります。たとえば、smartdns や dnscrypt-proxy + dnsmasq を使用する方法などです。

また、uTools プラグインを作成して、DNS を素早く切り替えることもできます。

DoH とは#

DoH とは何か、以下を参照してください:https://zh.wikipedia.org/zh-cn/DNS_over_HTTPS

smartdns-rs の使用#

smartdns-rsは、Rust で書かれたクロスプラットフォームのローカル DNS サーバーであり、最速のウェブサイト IP を取得し、最適なインターネット体験を提供し、DoH と DoT をサポートしています。

GitHub でオープンソース: https://github.com/mokeyish/smartdns-rs

このソフトウェアを使用すると、DoH を非常に簡単に使用できます。

リリースページからシステムのバイナリファイルをダウンロードし、展開して次のコマンドを実行します:

# サービスのインストールと起動
sudo ./smartdns service install
sudo ./smartdns service start

# サービスの停止
# sudo ./smartdns service stop
# サービスのアンインストール
# sudo ./smartdns service uninstall

この時点で、ソフトウェアは自分自身を/usr/local/bin/smartdnsにインストールします。その後は、smartdnsコマンドを実行するだけでサービスの動作を制御できます。

サービスはデフォルトで/usr/local/etc/smartdns/smartdns.confという設定ファイルを使用します。詳細なパラメータについては、公式ドキュメントを参照してください:

このファイルの末尾に以下の設定を追加します:

# ... デフォルトの設定

# server-tls dns.alidns.com
# server-https https://cloudflare-dns.com/dns-query
# server-https https://dns.alidns.com/dns-query
server-tls 8.8.8.8:853
server-https https://223.5.5.5/dns-query

smartdnsはデフォルトでローカルマシンの 53 ポートをリッスンします。

dnsmasq と dnscrypt-proxy の使用#

ツールとして dnscrypt-proxy + dnsmasq を使用します。

dnscrypt-proxy は DoH リクエストを発行するためにのみ使用されます。

dnsmasq は軽量なドメイン名解決サーバーであり、DNS リクエストを dnscrypt-proxy に転送し、一部の企業ドメインをルーターが配布する上位 DNS に転送します。

dnsmasq、dnscrypt-proxy のインストール#

brew を使用して簡単にインストールできます:

brew install dnsmasq dnscrypt-proxy

locationchanger のインストール#

次のコマンドを実行します:

curl -L https://github.com/eprev/locationchanger/raw/master/locationchanger.sh | bash

次に、次のコードを location changer スクリプト/usr/local/bin/locationchangerの末尾に貼り付けます:

DEFAULT_SCRIPT="$HOME/.locations/default"
if [ -f "$DEFAULT_SCRIPT" ]; then
    ts "Running default '$DEFAULT_SCRIPT'"
    "$DEFAULT_SCRIPT"
fi

これにより、ネットワークに接続するときにこのスクリプトが実行されます。

次に、$HOME/.locations/defaultというファイルを作成します:

mkdir -p $HOME/.locations && touch $HOME/.locations/default

以下の内容を追加します:

#!/usr/bin/env bash

DNS=`ipconfig getpacket en0|grep domain_name_server|awk -F"[{,}]" '{print $2}'`
echo "$DNS"
echo "nameserver $DNS" > "$HOME/upstream.conf"

このコマンドは、ルーターから提供された DNS を$HOME/upstream.confファイルに書き込みます。

その後、locationchangerを手動で実行して、このファイルを生成します。

設定#

dnsmasq の設定#

brew がどこに設定ファイルを示しているかを確認し、私の場合は m1 の brew は/opt/homebrew/etc/dnsmasq.confに設定ファイルを示しています。次に、この設定ファイルの内容を変更します:

# ドメインのみを解決するように設定
domain-needed
bogus-priv

# 生成したルーターが配布する上位DNSのアドレス
resolv-file=/Users/xxx/upstream.conf
# 下記で設定するdnscrypt-proxyのリッスンアドレス
server=127.0.0.1#5553
# dnsmasqのリッスンアドレス
listen-address=127.0.0.1

# 問い合わせのログを出力するため、トラブルシューティングに役立ちます
log-queries
log-facility=/var/log/dnsmasq.log

dnscrypt-proxy の設定#

M1 システムの設定ファイルの場所は:/opt/homebrew/etc/dnscrypt-proxy.toml

ここでは、私の個人的な設定を保持しています。私はただ 1 つの阿里云の DoH を残し、sources のすべての内容をコメントアウトしています。これにより、起動がはるかに高速化されます。

sources の内容を保持する場合、ソフトウェアを起動するたびに最速の DNS を探す必要があり、非常に長い時間がかかります。

# リッスンアドレス
listen_addresses = ['127.0.0.1:5553']
# 問い合わせのログを出力するため、トラブルシューティングに役立ちます
log_file = '/var/log/dnscrypt-proxy.log'

# alidnsの設定
[static]
  [static.'alidns-doh']
  stamp = 'sdns://AgAAAAAAAAAACTIyMy41LjUuNSCoF6cUD2dwqtorNi96I2e3nkHPSJH1ka3xbdOglmOVkQ5kbnMuYWxpZG5zLmNvbQovZG5zLXF1ZXJ5'

参考#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。