DNS 설정 번외편
DNS 복습
▷ IP 주소는 인터넷 상의 모든 컴퓨터가 가지고 있는 '숫자로 된 고유한 주소'이다.
▷ DNS는 복잡한 IP 주소 대신에 도메인 이름(www.***.com)을 입력하면 웹사이트에 갈 수 있게 해준다.
▷ DNS는 호스트 컴퓨터의 IP 를 찾아준다.
▷ DNS를 사용할 때는 네트워크가 외부로 나가서 찾아야 하기 때문에 default gateway가 꼭 설정되어 있어야 한다.
resolv.conf 초기화 현상
버전마다 틀리지만 필자는 CentOS 7 버전에서 다룬다.
/etc/resolv.conf 파일이 적용을 시키려고 하면 초기화 되는 현상
분명 DNS서버를 입력했는데도 불구하고 네트워크를 재시작하면 파일안에 아무것도 없습니다.
이런 경우에는 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 에 들어가서 직접
DNS1=168.126.63.1 이렇게 입력하셔도 되지만,, 이번에는 설정이 변경되지 않게 해보는 방법을 해보겠습니다.
# vi /etc/resolv.conf 에 들어갑니다
이렇게 초기화 되는 이유는 아래 화면을 보시면 주석처리 되어있는 부분을 보시면 됩니다.
NM(Network Manager)에 의해 이 파일이 바뀌기 때문입니다.
초기화 설정을 막는 법은 2가지 방법 입니다.
① NM을 비활성화를 하시면 됩니다.
② 강제로 /etc/resolv.conf 파일을 초기화 하지 못하게 막는 방법입니다.
○ 첫번째 방법 ○
# vi /etc/sysconfig/network-scripts/ifcfg-ens33 네트워크 설정 파일로 들어가줍니다.
들어가시면 옵션이 더 있거나 일부가 빠져 있을 수도 있습니다. 기본적인 구동에는 몇 가지만 필요해서 무관합니다.
필요하신 것들은 추가하시면 됩니다.
# NM_CONTROLLED=no 네트워크 매니저를 사용 유/무
저는 없었기 때문에 추가해주고 # :wq로 저장하고 나왔습니다.
※ NetworkManager 는 데몬이 포함되어 있습니다. 이 데몬은 동적으로 네트워크의 변경 사항을 탐지하고 설정해 주는 역할을 수행하기 때문에 대부분은 사용합니다. 그래서 두번째 방법을 저는 선호합니다.
설정 완료 후 습관적으로 적용시키시면 됩니다.
# service network restart 또는
# systemctl restart network 이걸로 재시작해서 적용해줍니다.
# vi /etc/resolv.conf 파일에 들어가보면 설정들이 초기화되지 않고 그대로 적용되어 있는 걸 볼 수 있습니다.
NetworkManager 서비스 중지 및 사용안함으로 바꾸는 다른 방법
# systemctl stop NetworkManager.service 중지하시고
# systemctl disable NetworkManager.service 부팅 후에도 사용안함으로 명령어를 입력하시면 됩니다.
반대로 다시 실행시키시고 싶으시면
# systemctl start NetworkManager.service 시작하시고
# systemctl enable NetworkManager.service 부팅 후에도사용으로 명령어를 입력하시면 됩니다.
○ 두번째 방법 ○
# vi /etc/resolv.conf 파일에서 수정 사항들을 먼저 완료합니다.
# nameserver [DNS1 IP 주소]
# nameserver [DNS2 IP 주소]
# search [도메인 명]
설정 완료 후에 네트워크를 재시작해서 적용시키전에
# chattr +i /etc/resolv.conf 명령어를 실행합니다. 이 명령어는 리부팅 시에 resolv.conf 파일이 초기화 되는데
write(쓰기-편집)을 못하게 보호하는 명령어 입니다. (해제는 # chattr -i /etc/resolv.conf 입니다.)
이렇게까지 하신 뒤에 네트워크를 재시작해서 적용시키면 됩니다.
# systemctl restart network 또는 # service network restart 명령어를 입력해줍니다.
재시작 후에도 여전히 /etc/resolv.conf 파일이 초기화 되지않고 잘 적용이 된 걸 확인 하실 수 있습니다.
resolv.conf 파일 설명
제가 설명하는 큰 틀은 바뀌지 않지만 설정은 버전마다 틀릴 수 있습니다. 저는 CentOS 7 을 사용했습니다.
/etc/resolv.conf 는 nameserver를 지정하는 파일입니다.
구성을 보도록 합시다.
# cat /etc/resolv.conf 명령어를 실행하면 아래와 같이 나옵니다.
위 그림을 설명
▷ # Generated by NetworkManager // 네트워크매니저에 의해 생성된다.
▷ nameserver [IP 주소] // nameserver 뒤에는 내가 사용할 도메인서버 IP 주소
// 리눅스는 nameserver 를 최대 3개까지 인식가능
▷ search는 도메인 명을 지정해 둔 것이다. 거의 모두 호스트명과 도메인명을 함께 사용한다.
하지만 특별하게 호스트명만 사용되었을 때 사용하게 될 기본 도메인 명을 의미한다.
예시) search zxc.com 이라고 가정해보자. 그럼 "ssh 호스트명"처럼 "ssh www"라고 입력을 하면 자동으로
"ssh www.zxc.com"으로 인식하는 것이다.
▷ domain는 domain 지시자를 이용하여 도메인을 설정하였다면 호스트네임을 보고 기본 도메인을 설정하는 것이 아니라 domain 지시자에 의한 값을 우선으로 한다. (이 설명이 다소 이해하기 힘들 수 있음. 다음 DNS서버 구축할 때 자세한 설명을 기재하겠습니다.)
▷ 만약 resolv.conf 파일에 domain, search 지시자가 둘 다 적용되어 있다면 나중에 있는 지시자가 적용된다.
댓글