1. Hikosaburou

    Posted

    Hikosaburou
Changes in title
+ELB切り替え時の動作確認 (hostsファイルを編集する)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,95 @@
+# これはなんですか
+
+- DNSのレコード登録が済んでないALBに対してリスナールールの動作確認をした時のメモです
+- hostファイルを編集して名前解決する方法です。
+
+# 先にまとめ
+
+- hostsファイルはローカルで名前解決するためのもの
+ - macOSのhostsファイルは `/private/etc/hosts` にある
+ - Windowsの場合は `C:\Windows\System32\drivers\etc\hosts` にある
+- DNSレコード登録前にLBの動作確認がしたければ、hostsファイルにLBのIPと対象のHostを書いて名前解決の動作をエミュレートすればよい
+ - HTTP接続するだけなら `curl -H 'Host:example.com' 'http://xxx................'` とした方が楽だが、HTTPS接続がしたければhostsを使う必要がある
+
+# hosts ファイルとは
+
+ローカルで名前を解決してくれるやつです。以下ざっくり説明です。
+https://wa3.i-3-i.info/word16969.html
+
+## mac環境のhostsファイルの置き場所は
+
+`/private/etc/hosts` にあります。
+
+## Windows環境のhostsファイルの置き場所は
+
+`C:\Windows\System32\drivers\etc\hosts` にあります。
+http://onocom.net/blog/windows-hosts-file/#hostsWindows
+
+# やってみた
+
+## ALB の準備
+
+- (主にACMで) 証明書発行
+- ALB作成
+ - ALBデフォルトのDNS名(Aレコード)を控えておく
+- ターゲットグループ作成&配下のターゲットへの紐づけ
+- リスナールール 設定
+ - 証明書をリスナーに紐づけておく
+
+## デフォルトのDNS Nameにクエリする
+
+ALBのIPを確認する
+
+```shell
+$ dig example-xxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com +short
+54.250.192.xx
+52.196.88.yyy
+```
+
+## hosts ファイルを編集する
+
+```shell
+$ cat /private/etc/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
+
+### (略)
+
+### ALBのIPを登録
+52.196.88.yyy example.com
+```
+
+## curl する
+
+IPがALBに向いていることを確認する
+
+```shell
+$ curl -I https://example.com/healthcheck.html -v
+* Trying 52.196.88.yyy...
+* TCP_NODELAY set
+* Connected to emd-dev.watashi-move.com (52.196.88.yyy) port 443 (#0)
+...
+< HTTP/1.1 200 OK
+HTTP/1.1 200 OK
+< Date: Mon, 07 Oct 2019 06:23:58 GMT
+Date: Mon, 07 Oct 2019 06:23:58 GMT
+...
+```
+
+## ALBログを確認する
+
+ログが残っていればok。
+
+
+# 余談: digはシステムのDNSリゾルバを使わない
+
+hostsを編集した後digしてもhostsに書いた内容が反映されなかったので調べたらこんな記事が。
+https://qiita.com/kakipo/items/71f091ecd1fa27fde2ed
+> dig, nslookup, そして host コマンドは /etc/hosts を参照しない。