これはなんですか
- DNSのレコード登録が済んでないALBに対してリスナールールの動作確認をした時のメモです
- hostファイルを編集して名前解決する方法です。
先にまとめ
- hostsファイルはローカルで名前解決するためのもの
- macOSのhostsファイルは
/private/etc/hosts
にある - Windowsの場合は
C:\Windows\System32\drivers\etc\hosts
にある
- macOSのhostsファイルは
- DNSレコード登録前にLBの動作確認がしたければ、hostsファイルにLBのIPと対象のHostを書いて名前解決の動作をエミュレートすればよい
- HTTP接続するだけなら
curl -H 'Host:example.com' 'http://xxx................'
とした方が楽だが、HTTPS接続がしたければhostsを使う必要がある
- HTTP接続するだけなら
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を確認する
$ dig example-xxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com +short
54.250.192.xx
52.196.88.yyy
hosts ファイルを編集する
$ 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に向いていることを確認する
$ 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 を参照しない。