본문 바로가기
카테고리 없음

[Linux] DNS 설정 번외편 (resolv.conf 파일초기화 현상, 설명)

by 떵해이 2020. 10. 19.
300x250

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 지시자가 둘 다 적용되어 있다면 나중에 있는 지시자가 적용된다.

 

반응형

댓글