DNS Resolver์ ๋ชจ๋(stub, uplink)
DNS Resolver ?
ํน์ OS ์์ DNS nameserver๋ฅผ ๋ณ๊ฒฝํ์ฌ ๊ณ ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์?
DNS๋ ์ธํฐ๋ท์์ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํ๊ฑฐ๋ IP ์ฃผ์๋ฅผ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์์คํ ์ด๋ค. DNS Resolver๋ ์ฃผ์ด์ง ๋๋ฉ์ธ ์ด๋ฆ์ ๋ํด ํด๋นํ๋ IP ์ฃผ์๋ฅผ ์ฐพ์์ฃผ๋ ์๋ฒ๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธํ๋ค. DNS Resolver๋ ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ๋๋ฉ์ธ์ ์ ๋ ฅํ๋ฉด, ํด๋น ๋๋ฉ์ธ์ IP ์ฃผ์๋ฅผ ์ฐพ์์ฃผ์ด ํต์ ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ค:[1]
DNS ์ฟผ๋ฆฌ๋ ์ฃผ๋ก UDP(ํฌํธ 53) ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ง๋ง, ๋์ฉ๋ ๋ฐ์ดํฐ๋ ์บ์๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ TCP๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค.
DNS Resolver๋ DNS ์๋ฒ์ ์ง์ ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ๋คํธ์ํฌ ๊ตฌ์ฑ ๋ฐ ์ฌ์ฉ์ ์ค์ ์ ๋ฐ๋ผ DNS ์๋ฒ ์ ๋ณด๋ฅผ ์ป๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ ๊ด๋ฆฌ์๋ DHCP ์๋ฒ๋ฅผ ํตํด ํธ์คํธ์๊ฒ ์ ์ ํ ๋คํธ์ํฌ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ก ๊ตฌ์ฑํ๋ฉฐ, ๋คํธ์ํฌ์์ ํธ์คํธ์๊ฒ IP ์ฃผ์, ์๋ธ๋ท ๋ง์คํฌ, ๊ฒ์ดํธ์จ์ด ๋ฑ๊ณผ ๊ฐ์ ๋คํธ์ํฌ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ๋๋ฐ DHCP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค. DNS Resolver๋ ์ด๋ฌํ ๋คํธ์ํฌ ์ค์ ์ ๊ธฐ๋ฐ์ผ๋ก DNS ์๋ฒ ์ ๋ณด๋ฅผ ์ป๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ค.
์๋๋ ๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ DNS Resolver ์ํํธ์จ์ด์ด๋ค.
- BIND (Berkeley Internet Name Domain):
- BIND๋ ๊ฐ์ฅ ์ค๋๋ DNS ์ํํธ์จ์ด ์ค ํ๋๋ก, ๋ง์ ์๋ฒ์์ ์ฌ์ฉ๋๋ค.
- ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ๋ง์ ์ต์ ๊ณผ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
- Unbound:
- Unbound๋ ๋น ๋ฅด๊ณ ๊ฒฝ๋ํ๋ DNS Resolver๋ก ์๋ ค์ ธ ์๋ค.
- ์บ์ฑ๊ณผ ์์ ํ DNSSEC(๋๋ฉ์ธ ์ด๋ฆ ์์คํ ๋ณด์ ํ์ฅ) ์ง์ ๋ฑ์ ํน์ง์ผ๋ก ํ๋ค.
- ๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ฝ๊ฒ ์ค์ ํ ์ ์๋ค.
- dnsmasq:
- dnsmasq๋ ๊ฒฝ๋ DNS ๋ฐ DHCP ์๋ฒ์ด์ ์บ์ ๋ฉ์ปค๋์ฆ์ ๊ฐ์ถ ์ํํธ์จ์ด์ด๋ค.
- ์ฃผ๋ก ๊ฐ์ ๋ด์์ ์๊ท๋ชจ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋จํ๊ณ ์ค์ ์ด ์ฉ์ดํ๋ค.
- systemd-resolved:
- systemd-resolved๋ systemd์ ์ผ๋ถ๋ก ์ ๊ณต๋๋ DNS Resolver ์ด๋ค.
- ๋ง์ ์ต์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์์ systemd๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, systemd-resolved๊ฐ ์์ฃผ ํ์ฉ๋๋ค.
- DNSSEC์ ํจ๊ป ์๋ํ๋ฉฐ, ๋คํธ์ํฌ ๊ด๋ฆฌ์ ํตํฉ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- knot Resolver:
- Knot Resolver๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ DNS Resolver๋ก ์๋ ค์ ธ ์๋ค.
- ์บ์ฑ๊ณผ DNSSEC๋ฅผ ์ง์ํ๋ฉฐ, ๋ชจ๋ํ๋ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค.
- netplan :[2]
- Ubuntu์์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ๋๊ตฌ ์ค ํ๋๋ก, YAML ํ์์ ์ค์ ํ์ผ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์ค์ ์ ์ ์ํ๋ค.
- ์ค์ ํ์ผ:
/etc/netplan/01-netcfg.yaml
- ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ ๋ฐฉ๋ฒ:
sudo netplan apply
- .yaml ์์(์ด๋ ๊ฒ ์ค์ ํ๋ฉด ํด๋น ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ DHCP๋ฅผ ํตํด IP ์ฃผ์๋ฅผ ๋ฐ์ผ๋ฉด์, Google Public DNS (8.8.8.8, 8.8.4.4)๋ฅผ DNS Resolver๋ก ์ฌ์ฉํ๊ฒ๋๋ค.)
- Ubuntu 20.04 ์ดํ ๋ฒ์ ์์๋ถํฐ๋
systemd-resolved
์ ์ค์ ํ์ผ(/etc/systemd/resolved.conf
)์ ์ง์ ํธ์งํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.network: version: 2 renderer: networkd ethernets: enn5: dhcp4: true nameservers: addresses: [8.8.8.8, 8.8.4.4]
์ด๋ค DNS Resolver๊ฐ ํ์ฌ ํ์ฑํ๋์ด ์๋์ง ํ์ธํ๋ ๋ฒ์ ์๋์ ๊ฐ๋ค.
systemd-resolved ์ฌ์ฉ ์: systemctl status systemd-resolved
BIND ์ฌ์ฉ ์: named -v
Unbound ์ฌ์ฉ ์: unbound -V
dnsmasq ์ฌ์ฉ ์: dnsmasq -v
netplan netplan status [interface]
DNS Resolver ๋ชจ๋, Stub? Uplink?
DNS Resolver์ "Uplink Mode"์ "Stub Mode"๋ Resolver๊ฐ DNS ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ํ๋ธ๋ค.
์ผ๋ฐ์ ์ผ๋ก /etc/resolv.conf ๋ฐ /etc/systemd/resolved.conf ์์ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
Uplink Mode:
์
๋งํฌ(Uplink) ๋ชจ๋์์๋ DNS Resolver๊ฐ ๋ก์ปฌ์์ DNS ์ฟผ๋ฆฌ๋ฅผ ์์ ํ๊ณ , ์ด๋ฅผ ์์ ๋ ๋ฒจ์ DNS ์๋ฒ(์
๋งํฌ ์๋ฒ)๋ก ์ ๋ฌํ๋ค.
์
๋งํฌ ์๋ฒ๋ ํน์ ๋๋ฉ์ธ์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ๊ณ์ธต์ DNS ์๋ฒ์ ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ ์ญํ ์ ํ๋ค.
๋ก์ปฌ์์ ๋ฐ์ ์๋ต์ Resolver์ ์ํด ์บ์๋์ด ๋ค์์ ๋์ผํ ์ฟผ๋ฆฌ๊ฐ ์์ ๋ ๋น ๋ฅธ ์๋ต์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ์ฌ์ฉ์๊ฐ "www.example.com"์ ๋ํ DNS ์ฟผ๋ฆฌ๋ฅผ ํ๋ฉด ๋ก์ปฌ DNS Resolver๊ฐ ์ด๋ฅผ ๋ฐ๋๋ค.
- Uplink ๋ชจ๋์์๋ Resolver๊ฐ "www.example.com"์ ๋ํ DNS ์ ๋ณด๋ฅผ ์์ ๋ ๋ฒจ DNS ์๋ฒ๋ก ์ ๋ฌํ๋ค.
- ์์ DNS ์๋ฒ๋ "www.example.com"์ IP ์ฃผ์๋ฅผ ์๋ ค์ฃผ๊ณ , ์ด ์๋ต์ ๋ก์ปฌ DNS Resolver์ ์บ์๋๋ค.
Stub Mode:
๊ธฐ๋ณธ์ ์ผ๋ก /etc/resolv.conf๋ ๋ก์ปฌ ํธ์คํธ ์คํ
(Stub) ๋ฆฌ์กธ๋ฒ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. systemd-resolved์์ DNSStubListener=yes
๊ฐ ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒ์ด ์ด์ ํด๋นํ๋ฉฐ, ์ด๋ ๋ก์ปฌ์์ DNS ์ฟผ๋ฆฌ๋ฅผ ์์ ํ๋ ์ญํ ์ ํ๋ค. Stub ๋ฆฌ์กธ๋ฒ๋ ์
๋งํฌ ๋ชจ๋์ ๋ฌ๋ฆฌ ์์ ๊ณ์ธต์ DNS ์๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ๋ณด๋ด์ง ์๊ณ ์ง์ ํ DNS ์๋ฒ๋ก ๋ฐ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ธ๋ค. ์ฆ, Stub ๋ชจ๋์์๋ ๋ก์ปฌ์์ DNS ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ์ด๋ฅผ ํน์ ์ธ๋ถ DNS ์๋ฒ๋ก ๋ฐ๋ก ์ ๋ฌํ๋ค. ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค๋ฅธ ๋ด์ฉ์ผ๋ก ํ์ผ์ ๋ค์ ๋ง๋ค๊ฑฐ๋ ๋ก์ปฌ ํธ์คํธ ์คํ
๋ฆฌ์กธ๋ฒ๊ฐ ์๋ ๋ค๋ฅธ ๊ณณ์ ๊ฐ๋ฆฌํค๋๋ก ํด์ผํ๋ค.
- ์ฌ์ฉ์๊ฐ "www.example.com"์ ๋ํ DNS ์ฟผ๋ฆฌ๋ฅผ ํ๋ฉด ๋ก์ปฌ DNS Resolver๊ฐ ์ด๋ฅผ ๋ฐ๋๋ค.
- Stub ๋ชจ๋์์๋ Resolver๊ฐ "www.example.com"์ ๋ํ DNS ์ ๋ณด๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ธ๋ถ DNS ์๋ฒ(์: 8.8.8.8)๋ก ์ ๋ฌํ๋ค.
- ์ธ๋ถ DNS ์๋ฒ(์คํ ์๋ฒ)๋ "www.example.com"์ IP ์ฃผ์๋ฅผ ์๋ ค์ฃผ๊ณ , ์ด ์๋ต์ ๋ก์ปฌ DNS Resolver์ ์บ์๋๋ค.
์ฆ, Uplink Mode์์๋ ์์ DNS ์๋ฒ๋ก์ ์ ๋ฌ์ด ์ฃผ์ํ ์ญํ ์ด๋ฉฐ, Stub Mode์์๋ ํน์ ์ธ๋ถ DNS ์๋ฒ๋ก์ ์ ๋ฌ์ด ์ฃผ์ํ ์ญํ ์ด๋ค.
ํ์ฌ DNS Resolver ๋ชจ๋๋ฅผ ํ์ธํ๋ ค๋ฉด
~$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub --------> ํ์ฌ ๋ชจ๋
DNS Servers: 8.8.8.8 -----> resolved.conf์ ์ ์ํ nameserver
์๋ฒ ์ฌ๋ถํ ์ดํ์๋ resolv.conf ํ์ผ์ด ์ง์ ํ DNS ์๋ฒ๋ฅผ ํฌํจํ๊ฒ ํ๋ ค๋ฉด
์๋ฒ๋ฅผ ๋ค์ ์์ํ๋ฉด ์ฌ์ฉ์ ์ง์ DNS ์๋ฒ ์ฃผ์๊ฐ ์๋ resolv.conf ํ์ผ์ ๋ํ ์๋ ์์ ๋ด์ฉ์ด ์์ค๋๋ค. ์ฌ๋ถํ ์ resolv.conf ํ์ผ์ด dhclient ํ์ผ์ ์ง์ ํ DNS ์๋ฒ๋ง ํฌํจํ๋๋ก ์ ๋ฐ์ดํธ ํด์ผ ํ๋ค.
(1) /etc/dhcp/dhclient.conf ํ์ผ์ ํธ์งํ๊ฑฐ๋ ๋ง๋ ๋ค
(2) ๋๋ฉ์ธ ์ด๋ฆ ์๋ฒ๋ฅผ ์ฌ์ ์ํ๊ธฐ ์ํด ํ์ผ์ supersede ๋ช ๋ น์ ์ถ๊ฐํ๊ณ xxx.xxx.xxx.xxx ๋ถ๋ถ์ ๋ณ๊ฒฝํ๋ค.
supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
(3) ์์ ํ ์ฌ๋ถํ ์ resolv.conf ํ์ผ์ด dhclient ํ์ผ์ ์ง์ ํ DNS ์๋ฒ๋ง ํฌํจํ๋๋ก ์ ๋ฐ์ดํธ ํ๋ค
(4) ์ธํฐํ์ด์ค๋ณ ๊ตฌ์ฑํ์ผ(/etc/sysconfig/network-scripts/ifcfg-) ์์ PEERDNS ํ๋ผ๋ฏธํฐ๋ฅผ yes๋ก ์ค์
(5) ์ฌ๋ถํ
--- ๋๋ ---
(1) /etc/sysconfig/network-scripts/ifcfg-eth0 ํ์ผ์์ DNS1, DNS2์ ์ํ๋ ๋ค์์๋ฒ ์ฃผ์๋ฅผ ํฌํจํ๋ค
DEVICE=eth0
BOOTPROTO=dchp
[..]
DNS1=8.8.8.8
DNS2=8.8.4.4
(2) ์ธํฐํ์ด์ค๋ณ ๊ตฌ์ฑํ์ผ(/etc/sysconfig/network-scripts/ifcfg-) ์์ PEERDNS ํ๋ผ๋ฏธํฐ๋ฅผ yes๋ก ์ค์
๋ง์ผ Ubuntu 20.04 ์ด์ ๋ฒ์ ์ netplan.io ์ผ ๊ฒฝ์ฐ, DNS ์๋ฒ ๊ฐ์ ์ฌ์ ์ํ๋ ค๋ฉด ์๋์ ๋จ๊ณ๊ฐ ํ์ํ๋ค
(1) Netplan์ ์ผ๋ฐ์ ์ผ๋ก /etc/netplan ๋๋ ํ ๋ฆฌ์ ๊ตฌ์ฑ ํ์ผ์ ์ ์ฅํ๋ค.
(2) /etc/netplan/99-custom-dns.yaml ํ์ผ์ ์์ฑํ ๋ค์ ํ๋ ์ด์คํ๋ DNS ์๋ฒ IP๋ฅผ ์ํ๋ ์ฃผ์๋ก ๋ณ๊ฒฝํ๋ค. (์ธํฐํ์ด์ค ์ด๋ฆ ํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ ip a
)
network:
version: 2
ethernets:
ens5: ------------> ์ธํฐํ์ด์ค ํ์ธํ ๊ฒ
nameservers:
addresses: [1.1.1.1, 1.0.0.1] ---> ์ด๋ถ๋ถ์ ์ํ๋ ์ฃผ์๋ก ๋ณ๊ฒฝํ๋ค
dhcp4-overrides:
use-dns: false
use-domains: false
(3) ๋ค์์ ๋ช ๋ น์ ์คํํ๋ค.
netplan generate
(4) ์ด๋ ๊ฒ ๋ณ๊ฒฝํ ์ดํ์๋ /etc/resolve.conf์ ์ฌ์ ํ ์คํ ๋ฆฌ์กธ๋ฒ ip๊ฐ ํ์๋๋ฉฐ ์์๋ ๊ฒฐ๊ณผ์ด๋ค. ์คํ ๋ฆฌ์กธ๋ฒ IP๋ ์ด์ ์ฒด์ ์ ๋ก์ปฌ์ด๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ๋ฆฌ์กธ๋ฒ๋ ์์ 99-custom-dns.yaml ํ์ผ์ ์ง์ ํ DNS ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค.
(5) ์ธ์คํด์ค ์ฌ๋ถํ
(6) systemd-resolve ๋ช ๋ น์ ์คํํ์ฌ ์์คํ ์ด ์๋ํ DNS ์๋ฒ IP ์ฃผ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์์ ํ๋์ง ํ์ธํ๋ค
systemd-resolve --status
References: