DNS
๊ตญ๋ด ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ์๋ฐ ๊ฐ๋ฐ์๊ฐ ์์์ผํ DNS๋ผ๋ ์ง์์ ๊ณต์ ํ๋ ๊ฒ์ ์ด์ด์ DNS ์ค์ ๊ต๊ณผ์๋ผ๋ ์ฑ ์ ์ฝ์ด๋ณด๊ณ ์กฐ๊ธ ๋ DNS์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์์ ์ ๋ฆฌํด๋ณผ๊น ํฉ๋๋ค. GeekNews ์ ๊ณต์ ๋ DNS ํ์ต์ด ์ ์ฌ์ ํ ์ด๋ ค์ด๊ฐ์?๋ผ๋ ๊ธ์ฒ๋ผ ์น ๊ฐ๋ฐ์๋ก์จ DNS์ ๋ํด์ ๋ฌด์์ ์ด๋๊น์ง ์๊ณ ์์ด์ผ ํ๋์ง ์๊ธฐ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค.
DNS ์กฐํ ์คํจ๋ก ์ธํ IP ์ฃผ์ ํ์ธ ๋ถ๊ฐ
SdkClientException: Received an UnknownHostException when attempting to interact with a service.
See cause for the exact endpoint that is failing to resolve.
If this is happening on an endpoint that previously worked,
there may be a network connectivity issue or your DNS cache could be storing endpoints for too long.
Amazon SQS์ ๋ํ DNS ์บ์๊ฐ ์ด๊ธฐํ๋๋ ์์ ์ ์ฌ๋ด ๋คํธ์ํฌ ์ฌ์ฉ๋์ ๊ณผ๋ถํ๋ก ์ธํ์ฌ์ฌ๋ด ๋ผ์ฐํฐ๋ฅผ ํตํ DNS ์กฐํ๋ฅผ ํ ์ ์์ด์ SQS์ ๋ํ ์๋ํฌ์ธํธ ์ฃผ์๋ฅผ ์ ์ ์๋ ์ด์๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด DNS ์ด์์ ๋ํ ๋์์ ๋ํ ์ ๋ณด๋ ์ฐพ์๋ณผ ์ ์์์ด์.
- ์บ์๋ ์ฃฝ์ IP๋ก URL ํ๋ก์ ์ฅ์ ๋์ ํ๊ณ
- ์์ธ ๋ฆฌ์ ์ Amazon EC2 DNS ํ์ธ ์ด์ ์์ฝ
- ์จ๋ผ์ธ ํ์ ๋๊ตฌ ๋ ธ์ (Notion) ์ฅ์ ์ DNS ๋ฌธ์ ๋์
Amazon Route53 ๋ ์ฝ๋ ๊ด๋ฆฌ
์ ๋ ์ฃผ๋ก Amazon Route53์ ์๋ฒ์ ๋ํ IP ์ฃผ์ ๋๋ ๋ณ์นญ์ผ๋ก A ๋ ์ฝ๋๋ฅผ ๋ฑ๋กํ๊ณ ์ด๋ฏธ ๋ฑ๋ก๋ ์๋ฒ์ ๋ํด ๋ณ์นญ์ ์ถ๊ฐ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ CNAME ๋ ์ฝ๋๋ฅผ ๋ฑ๋กํ๊ฒ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก GoDaddy์์ ๊ตฌ๋งคํ kdev.ing ๋๋ฉ์ธ์ ๋ํ ๋ค์ ์๋ฒ๋กAmazon Route53์ ๋ฑ๋กํ๊ฒ ๋๋ฉด 1๋ฌ๋ฌ์ ์ธ๊ธ์ด ๋ฐ์ํ๋ฏ๋ก ๋ณ๊ฒฝํ์ง ์์ ์ํ๋ก Github Pages ๋ฅผ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ๊ณ ์๊ธฐ๋ ํฉ๋๋ค.
์ด๋ฉ์ผ ๋ณด์์ ์ํ SPF, DKIM, DMARC
์๋ฒ ์์ง๋์ด ํน์ ์ธํ๋ผ ํ์ด ๋ณ๋๋ก ์กด์ฌํ๋ ์กฐ์ง์ด ์๋๋ผ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ด๋ฉ์ผ ๋ฐ์ก ์ ์ ๋ขฐํ ์ ์๋ ๋๋ฉ์ธ์ ์ค์ ํ๋ ์์ ์ ์งํํด์ผํ ์ ์์ด์. ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ์์ ๊ท๋ชจ์ ์ํ ์ฃผ๋์ด ๊ฐ๋ฐ์์๊ธฐ์ ์ฌ๋ด ๋ฉ์ผ ์๋ฒ์์ Amazon SES๋ฅผ ํตํด ์ด๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํด์ DMARC, DKIM, SPF๋ฅผ ์ค์ ํ์๋ ์ ์ด ์์ต๋๋ค. ๋ง์ฝ, ์ด๋ฉ์ผ ๋ณด์์ ์ํด์ DMARC๋ฅผ ์ ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ธ๋ค์ ์ฐธ๊ณ ํด๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- Setting up DMARC, SPF, DKIM with Amazon SES
- How To Setup SPF, DKIM, And DMARC In Your Amazon SES Account
์ธํฐ๋ท ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐฉ๋ฒ ๐ช
์ผ๋ฐ์ ์ผ๋ก ์ธํฐ๋ท ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ฉด DNS ์ค์ ์ ๋ณ๊ฒฝํ๊ฑฐ๋ DNS ์บ์๋ฅผ ๋น์ฐ๋ ๊ฑธ ์ถ์ฒํ๋๋ฐ์. ISP ํต์ ์ฌ์ ์์ DNS ๋์ ์ ํด๋ผ์ฐ๋ ํ๋ ์ด์ 1.1.1.1๋ก ๋ณ๊ฒฝํ๋ ๊ฑด ๋ณ ๋ค๋ฅธ ์๋ฏธ๊ฐ ์์ฃ . ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ์ฐธ๊ณ ํด์ผํ ์ ๋ณด๋ค์ด ํด์ธ ์ฌ์ดํธ์์ ์ฐพ๊ฒ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ ๋ ์ผ๋ถ HTTPS ์ ๊ทผ์ ์ฐจ๋จํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ ๋์ฝ HTTPS์ ๊ฐ์ DNS ๋ณ๊ฒฝ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
DNS ์บ์ ๋น์ฐ๊ธฐ
๋ฆฌ๋ ์ค ์๋ฒ์์๋ ์บ์๋ DNS ์ ๋ณด๊ฐ ์์๋๊ฑฐ๋ ์๋ชป๋ ๊ฒฝ์ฐ๋ก ํ์ธ๋๋ค๋ฉด DNS ์ ๋ณด๋ฅผ ์ฆ์ ๊ฐฑ์ ํ๊ธฐ ์ํด์ DNS ์บ์๋ฅผ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ฅผ ์ฐพ์๋ณด๋ resolvectl ๋๋ systemd-service ๋ฅผ ํตํด DNS ์บ์๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
# sudo systemd-service --flush-caches
sudo resolvectl flush-caches
# sudo systemd-resolve --statistics
sudo resolvectl statistics
Local DNS Resolver
๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค์์๋ systemd-resolved ๋ฅผ DNS Resolver๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ /etc/resolv.conf ์๋ 127.0.0.53 ์ด ์ค์ ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ DNS resolution ๋ฐ resolv.conf ์ ๋ํ ์ดํด๋ผ๋ ๊ธ์ ํตํด DNS ๋ฆฌ์กธ๋ฒ์์ IP ์ฃผ์๋ฅผ ์ฟผ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉํ DNS ์๋ฒ๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. AWS EC2๋VPC์ ๊ฒ์ดํธ์จ์ด(CIDR ๋์ญ์์ .2)๋ฅผ DNS Resolver๋ก ์ฌ์ฉํ๋๋ก ์ค์ ๋์ด ์๋ค์.
[ec2-user@tsdb ~]$ cat /etc/resolv.conf
nameserver 192.168.0.2
search ap-northeast-2.compute.internal
์ค๋ฌด์์๋ AWS ํด๋ผ์ฐ๋๋ฅผ ๋ง์ด ํ์ฉํ๋ ๋งํผ Amazon Route 53 Resolver์ ๋ํด์ ์ข ๋ ํ์ตํด๋ด์ผํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋์ AWS ์ธํ๋ผ๋ฅผ ํ์ฉํด์์ง๋ง VPC ๋ด์์ ์ด๋ป๊ฒ DNS ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ณ ๊ด๋ฆฌํ๋์ง ์๊ฐํด๋ณธ์ ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.