phineのブログ

CloudflareのパブリックDNSをより安全に使う

パブリック DNS と言えば Google の 8.8.8.8 が有名ですが、Cloudflare のパブリック DNS も優れた機能を持っています。そこで、Cloudflare のパブリック DNS の特長と、それを macOS High Sierra で使う方法についてご紹介します。

もっとも簡単な方法

プライマリ DNS サーバーを 1.1.1.1 に、セカンダリー DNS サーバーを 1.0.0.1 にします。

  1. [システム環境設定] → [ネットワーク] から使用しているネットワークを選択します
  2. [詳細...] ボタンをして、[DNS] を選択します
  3. 2 つの IP アドレスを入力します (1.1.1.1, 1.0.0.1) f:id:phine:20180420214110p:plain
  4. [OK] ボタンをクリックします
  5. [適用] ボタンをクリックします
メリット
  • 名前解決が高速である
  • ISP に名前解決をコントロールされない *1
問題点

Cloudflare のパブリック DNS サーバーを使うようにしただけでは、我々がどのような名前解決を行なっているのかを中間者*2によって盗み見されたり、データを改ざんされたりする可能性があります。

これを解決する手段の一つとして、下記の DoH が有効です。

DoH で名前解決する

DoH とは

DoH (DNS over HTTPS) で名前解決すると、DNS の通信が HTTPS でカプセリングされ、通信内容が暗号化されているため、盗み見されたところで、具体的な通信内容まではわかりません。また、データを改ざんされることもありません。

デメリットとしては、HTTPS でカプセリングされるため、高速を謳う Cloudflare のパブリック DNS であっても、名前解決のスピードはいくらか遅くなります。

DoH 対応クライアントのインストール方法

macOS で Cloudflare に DoH 接続するには、Cloudflared を使う方法と、DnsCrypt-Proxy を使う方法があります。ここでは、Cloudflared を使う方法について紹介します。

% brew install cloudflare/cloudflare/cloudflared
% mkdir -p /usr/local/etc/cloudflared
% cat << EOF > /usr/local/etc/cloudflared/config.yaml
proxy-dns: true
proxy-dns-upstream:
 - https://1.1.1.1/dns-query
 - https://1.0.0.1/dns-query
EOF
$ sudo cloudflared service install
DNS の設定変更

Cloudflared で名前解決させるために、DNS サーバーを 127.0.0.1 に変更します。

  1. [システム環境設定] → [ネットワーク] から使用しているネットワークを選択します
  2. [詳細...] ボタンをして、[DNS] を選択します
  3. IP アドレスを入力します (127.0.0.1) f:id:phine:20180420222341p:plain
  4. [OK] ボタンをクリックします
  5. [適用] ボタンをクリックします
動作確認

きちんと名前解決できていることを確認します。

% dig +short www.example.com
93.184.216.34

まとめ

macOS で、Cloudflare のパブリック DNS に DoH で名前解決させる方法を紹介しました。これにより、秘匿性に優れた名前解決を実現できるようになりました。

リファレンス

*1:ISP が特定サイトへの接続をブロッキングする方法の一つとなりえます。ISP がサイトブロッキングすることの是非については色々な議論がありますので、興味のある方はググってみてください。

*2:ここでは、ユーザーと Cloudflare 間のネットワークに何らかの手段で介入できる人

子供のスマホに設定しておきたいこと

書籍「Google便利すぎる!240のテクニック」から、子供の Android ケータイあるいは Google アカウントに設定しておきたい項目をご紹介します。

そもそもの経緯

我が家では、2016 年 11 月から長男(12 才)に ASUSAndroid ケータイを持たせています。このスマホには標準で「キッズモード」という機能があり、使用できるアプリを制限することができます。

2018 年 4 月、その長男も中学1年生になりました。そろそろ、キッズモードを解除しようかと考えています。とは言え、まだ一定の制限をかけるべきとは考えており、たまたま目にした「Google便利すぎる!240のテクニック」で参考になる項目がありましたので、実際に設定してみました。

Android の設定

181: なくした Android 端末を見つけ出す

設定方法は このページ に記載されています。 スマホをなくした場合に、端末を探す からスマホを見つけ出すことができるようになります。

Google アカウントの設定

020: 検索結果からアダルトコンテンツを排除する

セーフサーチを使用して、アダルトコンテンツ(ポルノ)などを含む検索結果を除外することができます。 設定方法は こちら に記載されています。

141: 子供に不適切な動画を見せないよう設定する

YouTube で制限付きモードを有効にして、成人向けのコンテンツが表示されないようにすることができます。 設定方法は こちら に記載されています。

155: 位置情報を削除して写真を共有する

Google フォトで共有した写真から、位置情報を自動的に削除することができます。 設定方法は こちら に記載されています。

書評

最後に、簡単な書評を書いておきます。

★★★★☆

本のタイトルにあるように、本書では 240 にも及ぶ Google 関連のテクニック(TIPS)が紹介されています。これだけの数にもなると、内容の濃さではなく、どれだけ多くの気づきを得られるかがポイントになってきます。私の場合、ここでは紹介していないテクニックも含めると、12 のテクニックが参考になる情報でした。その他は既に知っている、あるいは、今後もその知識は使わないだろうというものでした。

本を購入してまで読む価値があるかと言えば微妙なところですが、Amazon の Prime Reading (無料) で読める人であれば、目を通しておいて損はないと思います。

リファレンス

awscliの入力を楽にする方法

AWS (Amazon Web Services) ユーザーの多くが、awscli を使っていることでしょう。しかし、awscli はサブコマンドやオプションが多く、なかなか覚えられません。その結果、ヘルプを何度も見返すことになり、非効率に感じることがあります。そこで、awscli を便利にする2つの方法を紹介します。

  • コマンド補完
  • SAWS: A Supercharged AWS CLI

私は macOS High Sierra を使用していますが、今回ご紹介する方法は LinuxWindows でもほぼ同様に使えます。

コマンド補完

シェルコマンドを入力する場合に、TAB キーを押して部分的に入力されたコマンドを補完できるようにする方法です。ここでは Bash での設定方法を説明します*1

まず、aws_completer のパスを確認します。awscli がインストールされていれば aws_completer もインストールされているはずです。

$ which aws_completer
/usr/local/bin/aws_completer

次に、~/.bashrc に以下の1行を追加します。aws_completer のパスは、実際のパスに合わせてください。

complete -C '/usr/local/bin/aws_completer' aws

.bashrc を読み直して、上記の設定が機能しているか確認してみましょう。

$ source ~/.bashrc
$ aws s3 ← ここで TAB を2回押してみます
cp ls mb mv presign rb rm sync website

aws s3 のサブコマンド候補がリストアップされるようになりました。 同様に、オプションも自動補完されます。

$ aws s3 ls --←ここで TAB を2回押してみます
--ca-bundle --color --human-readable --no-verify-ssl --profile --region --version
--cli-connect-timeout --debug --no-paginate --output --query --request-payer
--cli-read-timeout --endpoint-url --no-sign-request --page-size --recursive --summarize

これで help コマンドを使う回数がいくらか減らせるのではないでしょうか。

SAWS: A Supercharged AWS CLI

SAWS は awscli をラップして、便利機能を提供してくれるツールです。コマンドの自動補完だけではなく、AWS リソースの補完まで行ってくれる他、コマンドや出力結果の色付け、ショートカット機能など、豊富な機能を持っています。

インストール

通常は、以下のコマンドでインストールできます。

$ sudo pip install saws

しかし、2018年4月16日現在、Mac OS X 環境下では既知の問題があり、追加オプションをつけてインストールを行う必要があります。

$ sudo pip install saws --upgrade --ignore-installed six

使い方

シェルプロンプトから "saws" を実行します。

$ saws
No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
  Refreshing instance tag values...
  Refreshing bucket names...
  Refreshing bucket uris...
Done refreshing
Version: 0.4.3
Theme: vim
saws>

"saws>" プロンプトが表示されますので、そこから awscli を実行します。
補完されたり、色付けされたりする様子は、GitHub のページの紹介がわかりやすいかったので、以下で引用しています。

f:id:phine:20180416224425g:plain
出典:https://github.com/donnemartin/saws

サブコマンドやオプションだけではなく、AWS リソースの補完ができるのはとても便利です。

まとめ

awscli の入力を楽にする2つの方法を紹介しました。aws_completer は標準的な方法と言えるでしょうが、SAWS を使うとより便利になります。
SAWS には、ここでは紹介していない便利な機能が他にもありますので、詳しくは GitHub のページ(英語)を参照するなどして、実際に触ってみてください。

*1:ZSHtcsh を使用している場合にはこちらのページを参照してください。