🔹 /etc/resolv.conf란?
여러 옵션 값을 사용하여 기능을 제공하며 자주 쓰이는 옵션은 아래 3가지가 있다.
Option | 내용 |
nameserver | 요청할 DNS 서버를 지정한다. 윗줄에 작성될 수록 우선순위가 높고, 첫번째 Name Server가 정상 작동 안할 경우 그 다음 Name Server로 넘어간다. IP뿐만아니라 도메인 형식으로 작성할 수 있다. |
search | hostname을 사용하는 모든 명령어에 적용되며 자동으로 search에 작성한 도메인을 붙여준다. 같은 라인의 공백으로 구분해서 작성한다. 앞쪽에 작성한 도메인이 우선 순위가 높다. 장점은 타이핑 시간을 절약할 수 있다. |
domain | 작성전 |
🔹 예시 및 테스트
[테스트 환경]
- VPC's CIDR = 172.16.0.0/16
- AWS EC2(Amazon Linux 2023) 1ea
- Private IP DNS name: ip-172-16-0-202.ap-northeast-2.compute.internal
[확인]
1. ls -al |grep resolv
lrwxrwxrwx. 1 root root 32 Mar 1 22:06 resolv.conf -> /run/systemd/resolve/resolv.conf
위와 같이 나오는 것을 보니 resolve는 systemd에 등록되어있네요.
2. cat /etc/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 172.16.0.2
search ap-northeast-2.compute.internal
주석처리된 설명을 읽어보니 편집하지 말라고 나와있다.
AWS에서는 /etc/resolv.conf를 DHCP Option set을 통해서 관리하기 때문인 것 같다.
주기적으로 싱크를 맞추기 때문에 만약 /etc/resolv.conf를 다른 값으로 수정하고 어느 순간 확인해보면 자동으로 원복된 것을 확인할 수 있다.(실제 테스트 후 확인 완료)
systemctl restart systemd-resolved.service 명령어를 실행해도 원복되었다.
재부팅해도 원복되었다. 재부팅되면서 systemctl 명령어가 실행되었을 것 같다.
3. AWS DHCP Option set과 /etc/resolv.conf 비교
EC2가 위치한 VPC는 위와 같은 DHCP Option set을 사용했다.
DHCP Option set은 EC의 /etc/resolv.conf 설정에 영향을 주는데, 아래와 같이 영향을 주게된다.
No. | DHCP Option set | EC2의 /etc/resolv.conf | |
1 | domain-name-servers: AmazonProvidedDNS | ➡️ | nameserver 172.16.0.2 |
2 | domain-name: ap-northeast-2.compute.internal | ➡️ | search ap-northeast-2.compute.internal |
여기서 2번은 이렇게 매칭되는구나라고 이해가되는데, 1번은 이해가 안될 수도 있다.
AmazonProvidedDNS가 왜 172.16.0.2가 되는거지?라는 의문이 든다면 아래 링크를 읽어보면 좋을 것 같다.
VPC의 DNS 속성 - Amazon Virtual Private Cloud
VPC의 CIDR에서 +2를 사용한다.
참고로 172.16.0.0/24, 172.16.1.0/24인 두 서브넷에 각각 EC2를 생성해서 resolv.conf를 확인해봤는데
둘 다 172.16.0.2가 nameserver로 등록되어있었다.
4. nslookup 테스트
nslookup ip-172-16-0-202
nslookup ip-172-16-0-202.ap-northeast-2.compute.internal
위 두 명령어의 결과는 아래와 같이 똑같이 반환되었다.
Server: 172.16.0.2
Address: 172.16.0.2#53
Non-authoritative answer:
Name: ip-172-16-0-202.ap-northeast-2.compute.internal
Address: 172.16.0.202
/etc/resolv.conf에서 search ap-northeast-2.compute.internal이 있었기 때문에 ip-172-16-0-202만 입력해도 똑같은 결과를 받을 수 있었던 것이다.
5. ssh ec2-user@ip-172-16-0-202 테스트
보통 ssh 접속을 할 때 ip를 넣었었는데 ip-172-16-0-202로 테스트해도 동일하게 접속이 잘되네요.
내부적으로 아래와 같은 순서로 변환되어 호출되었을 것으로 보이네요.
ssh ec2-user@ip-172-16-0-202
⬇️
ssh ec2-user@ip-172-16-0-202.ap-northeast-2.compute.internal
⬇️
ssh ec2-user@172.16.0.202
6. resolv.conf 변경 후 테스트
resolv.conf 구성을 아래와 같이 변경한다.
nameserver 172.0.0.2
nameserver 172.0.0.3
nameserver xx.nameserver.com
search naver.com tistory.com
nslookup 명령어를 실행했을 때, 아래와 같이 반환을 받는다.
Server: 172.16.0.2
Address: 172.16.0.2#53
따라서 172.0.0.3보다 172.0.0.2가 우선 순위가 높은 것을 확인할 수 있다.
nameserver는 윗줄에 작성될 수록 우선순위가 높다.
만약 172.0.0.2가 정상 작동하지 않을 경우 172.0.0.3을 네임서버로 사용하게된다.
따라서 nameserver를 작성할 때, main nameserver와 장애 대비용 nameserver를 구분하여 작성 순서를 고려해야한다.
nameserver에는 IP뿐만 아니라 도메인 형식으로 작성할 수도 있다.
nslookup www
nslookup 명령어를 위와 같이 실행할 경우 nslookup www.naver.com과 과 동일하게 실행된다.
www이 www.naver.com으로 로 실행되는 이유는 search에 naver.com이 등록되어있기 때문이다.
그런데 www.tistory.com에 에 대해서는 왜 실행이 안된걸까? 그 이유는 naver.com이 tistory.com보다 우선 순위가 높았기 때문이다.
search는 띄어쓰기로 구분하며, 앞쪽에 작성될 수록 우선순위가 높다.
그렇다면 언제 tistory.com이 이용될까?
본 tistory 블로그의 주소는 study4me-it.tistory.com이다. 네이버에는 study4me-it.naver.com이라는 도메인이 없다.
이 경우 nslookup study4me를 하게될 경우, study4me-it.naver.com를 먼저 시도해보고 없으니까 그 다음으로 study4me-it.tistory.com을 시도해본다. study4me-it.tistory.com이 존재하니 해당 도메일을 사용하게된다.
그래서 우선순위에 따라 아래와 같이 구성할 수 있다.
search main.domain.com dr.domain.com
첫번째는 메인이되는 도메인을 작성하고, 두번째는 장애 방지용 도메인을 사용할 수 있다.
🔹 참고
- search 옵션 부가 설명 : https://bash-prompt.net/guides/resolv-conf/
'LINUX' 카테고리의 다른 글
초간단 Let's Encrypt 무료 인증서 발급(도메인 레코드 인증 방식) (0) | 2024.12.12 |
---|---|
NAS Mount 하는 법(NFS Mount) (0) | 2024.12.01 |