systemd가 관리하는 network : DNS, systemd-resolve

markyang92·2022년 10월 24일
2

network

목록 보기
2/21
post-thumbnail

DNS가 돌아가는 구조

  • /etc/hosts에 없으면 /etc/resolv.conf 를 조회한다.

DNS 설정 파일: /etc/resolv.conf

  • /etc/resolv.conf 파일 내용
  • /etc/resolv.confsystemd-resolved 대몬이 관리한다.

systemd-resolved 대몬

  • systemd에 의해 관리되는 대몬 (standalone daemon)
  • systemd-resolvedservice file: /lib/systemd/system/systemd-resolved.service
  • systemd-resolved을 설정 하는 파일: /etc/systemd/resolved.conf

/etc/systemd/resolved.conf

  • /etc/systemd/resolved.conf: systemd-resolved을 설정 하는 파일
  1. DNS 옵션에는 기본적으로 사용할 DNS 서버 주소를 입력한다.
  • systemd-resolved한번에 여러 DNS에 쿼리를 날린다.
    • 1)이 옵션에 설정된 DNS 서버 + 2)DHCP로 부터 얻은 DNS 서버에 동시에 요청을 보내고 가장 빠른 응답결과로 가져온다.
    • 한국과 같이 DNS 조작을 하는 경우 여기서 8.8.8.8로 설정해도 통신사 DNS가 더 빠르게 조작된 정보를 보내면 warning.or.kr로 가버리는 것
      • 이를 방지하기 위해서는 추가적으로 systemd-network의 설정을 만지거나 공유기의 DNS 설정을 변경해야한다.

/etc/systemd/resolved.conf 설정
1. 설정 진행 전, openresolv와 같이 resolv.conf파일을 수정하는 프로그램을 종료하고 삭제해야 정상적 작동
2. systemd-resolved를 설정하기에 앞서 systemd-resolved가 설치되어 있는지 확인한다.

$ systemctl status systemd-resolved

위와같이 나오지 않고 unit systemd-resolved.service could not be found 뜬다면 설치되어 있지 않은 것이다.


  1. 이제 systemd-resolved를 실행하고 시작 프로그램으로 등록한다.
$ sudo systemctl start systemd-resolved
$ sudo systemctl enable systemd-resolved

하지만 아직 /etc/resolv.conf가 여전히 systemd-resolved를 사용하지 않는다.
systemd-resolved는 127.0.0.53 주소에 내부 DNS 서버를 열어두고 이를 통해 도메인 주소 해석과 캐싱을 수행한다.

이 주소를 /etc/resolv.conf에 사용하기 위해서는 직접 /etc/resolve.confnameserver 127.0.0.53 을 추가해도 되지만, run/systemd/resolve/stub-resolv.conf에 설정파일을 만들어 두었기 때문에 이것을 심볼릭 링크로 /etc/resolv.conf를 만들면 된다.

$ sudo rm /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  • 이제 systemd-resolve 설정이 끝났다.
  • nolookup 명령어로 시스템이 기본적으로 내부 DNS 서버에 쿼리하는 것을 볼 수 있다.

DNS 서버 정보 확인

$ systemd-resolve --status

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글