macOSで特定のサイトへのアクセスをDNSレベルで禁止させる方法
macOSで特定のサイトへのアクセスを禁止させる方法をご紹介いたします。hostsファイルを変更してDNSレベルで禁止させる方法です。ターミナルやVimを使うのでご注意ください。ただしなかなか強力なので、ターミナル操作に慣れてない方にはおすすめしません。
hostsファイルの設定
$ sudo vi /etc/hosts を実行してhostsファイルにアクセス禁止させたいドメインを追記します。##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 twitter.com
fe80::1 twitter.com
127.0.0.1 www.youtube.com
fe80::1 www.youtube.com
127.0.0.1 affiliate.amazon.co.jp
fe80::1 affiliate.amazon.co.jp
127.0.0.1 jp.mercari.com
fe80::1 jp.mercari.com
ここでたとえばTwitterなら、
127.0.0.1 twitter.com
fe80::1 twitter.com
とします。 Chromeの場合は 127.0.0.1 twitter.com だけ有効になりますが、Safariでは fe80::1 twitter.com も書き込まないとアクセスできてしまいます。IPV6の関係でしょうか?詳しくはわかりませんが。
設定を保存します。さて、パソコンを再起動してもDNSのキャッシュが残っており、サイトへアクセスできてしまう場合があります。その場合は次のDNSのキャッシュクリアを行ってください。
DNSのキャッシュクリアする
以下を実行してmacOSのDNSキャッシュをクリアできます。
bash
$ sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
これでお使いのMacからはhostsファイルに書き込まれたドメインにはアクセスできなくなるはずです。
最後に
すぐにまた設定を削除してアクセスを開放してしまうんじゃないかと思いそうですが、しばらくすると設定の仕方を忘れてしまい「面倒だからまっいっかー」ってなります(笑)それに、設定解除したくなってもワンクッション挟むので一瞬悩みます。「本当に解除する必要ある?」って感じで。私としては結構効果的な方法で常用してます。
関連記事
アイデアノート > macOSで使えるシェル