Ubuntu Server 24.04에서 Pi-hole을 사용하여 HTTPS를 통한 DNS를 설정하는 방법

Ubuntu Server 24.04에서 Pi-hole을 사용하려면 업스트림 요청을 를 통해 라우팅 dnscrypt-proxy하고 Pi-hole이 로컬 리스너를 가리키도록 설정 127.0.0.1#5053하십시오. 이렇게 하면 서버와 선택한 업스트림 리졸버 간의 DNS 트래픽이 DNS-over-HTTPS(DoH)로 암호화되는 동시에 Pi-hole은 LAN 클라이언트에 응답하고 차단 목록을 계속 적용할 수 있습니다. Pi-hole 자체는 기본적으로 업스트림에 DoH 전송을 제공하지 않으며, 로컬 프록시가 암호화된 연결을 제공합니다.

먼저 알아야 할 최신 버전 관련 정보가 있습니다. Cloudflare는 cloudflared proxy-dns2026년 2월 2일부터 출시되는 새 버전에서 해당 명령어를 제거했습니다. 따라서 이전 버전에서 해당 명령어를 설치하는 방법을 설명하는 튜토리얼은 최신 cloudflared버전에서 작동하지 않을 수 있습니다. 아래 단계는 dnscrypt-proxyPi-hole의 최신 DoH 가이드를 따릅니다. 이 설정은 Pi-hole과 프록시가 동일한 Ubuntu 호스트에서 실행되는 경우에 적합합니다. Docker 또는 다중 호스트 환경에서는 각 호스트에 다른 리스너 주소 지정 및 방화벽 규칙이 필요합니다.

이 설정이 하는 일과 하지 않는 일은 무엇일까요?

일반 DNS는 일반적으로 리졸버에서 상위 DNS 제공업체로 쿼리를 전송할 때 전송 암호화를 사용하지 않습니다. DoH는 DNS 요청을 HTTPS 내부에 전송하므로 Pi-hole 서버와 리졸버 사이에 있는 네트워크 관찰자가 해당 요청을 읽거나 변경하기가 더 어려워집니다. Pi-hole은 로컬 네트워크의 장치에 광고되는 DNS 서버로 유지되며, 상위 경로만 변경됩니다.

DoH(DoS Holating)는 사용자가 선택한 리졸버에서 DNS 활동을 완전히 숨기지는 않습니다. 상위 제공업체는 여전히 서버에서 전송되는 쿼리를 수신하며, Pi-hole은 자체 개인정보 보호 및 로깅 설정에 따라 클라이언트 쿼리 기록을 보관할 수 있습니다. 또한 HTTPS는 관련 없는 웹 트래픽을 암호화하지 않습니다. 특정 리졸버를 사용하려면 해당 리졸버의 개인정보 보호정책을 확인하고 지원되는 리졸버 목록에서 DoH 지원 항목을 선택하십시오.

시작하기 전에

  • Ubuntu Server 24.04에 Pi-hole이 이미 설치되어 작동 중인지 확인하십시오. 이 가이드에서는 Pi-hole을 설치하는 것이 아니라 기존에 설치된 Pi-hole을 구성하는 방법을 설명합니다.
  • 서버에 안정적인 LAN 주소가 할당되어 있는지 확인하십시오. 주소가 변경되면 라우터의 DHCP 클라이언트가 DNS 서버를 잃을 수 있습니다.
  • 관리자 권한이 있어야 하며, DNS가 일시적으로 작동을 멈출 경우 Pi-hole 호스트에 접근할 수 있는 방법을 확보해야 합니다. 이름 확인을 위해 동일한 Pi-hole에 의존하는 연결을 통해 원격으로 이 변경 작업을 수행하지 마십시오.
  • 롤백 시 복원할 수 있도록 현재 Pi-hole 업스트림 설정을 기록해 두십시오.

프록시는 5053번 포트의 루프백 인터페이스에만 바인딩되어 53번 포트는 Pi-hole에서 사용할 수 있도록 합니다. 이렇게 하면 Pi-hole의 DNS 서비스 및 Ubuntu의 로컬 리졸버와의 충돌을 방지할 수 있습니다. systemd-resolved이 설정을 위해 Pi-hole을 비활성화하지 마십시오. 프록시의 별도 루프백 포트 사용으로 충돌이 방지됩니다.

1. 우분투 패키지 저장소에서 dnscrypt-proxy를 설치합니다.

dnscrypt-proxy 프로젝트 문서에는 Ubuntu 패키지 설치 경로가 나와 있습니다. 설치하기 전에 구성된 Ubuntu 저장소에 해당 패키지가 있는지 확인하십시오.

sudo apt update
apt-cache policy dnscrypt-proxy

출력 결과에 후보 버전이 표시되면 해당 버전을 설치하십시오.

sudo apt install dnscrypt-proxy

후보가 표시되지 않으면 진행하기 위해 관련 없는 타사 저장소를 추가하지 마십시오. dnscrypt-proxy 프로젝트의 공식 Linux 가이드에 링크된 설치 방법을 사용하고, 릴리스 및 아키텍처를 확인한 후 해당 설치에 맞게 서비스 설정을 조정하십시오. 아래의 systemd 소켓 유닛 및 구성 경로는 Pi-hole에서 설명하는 Ubuntu 패키지 설정에 적용됩니다.

2. 프록시 리스너를 로컬 호스트의 5053 포트로 이동합니다.

Pi-hole은 이미 표준 DNS 포트 53을 사용하고 있습니다. 프록시 소켓이 TCP와 UDP 모두에서 수신 대기하도록 구성하고 127.0.0.1:5053, 동일 호스트에서만 접근 가능하도록 설정합니다. systemd 드롭인을 생성합니다.

sudo systemctl edit dnscrypt-proxy.socket

편집기에 다음 줄을 입력하고 저장하세요.

[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053

빈 줄 ListenStream=과 ListenDatagram=괄호는 대체 주소를 설정하기 전에 패키지 기본값을 초기화합니다. 이 줄들을 생략하지 마십시오. 그렇지 않으면 systemd가 사용자 지정 리스너 외에도 기본 포트를 유지할 수 있습니다.

3. DoH 리졸버를 선택하세요

패키지 구성 파일을 엽니다.

sudoedit /etc/dnscrypt-proxy/dnscrypt-proxy.toml

systemd 소켓 활성화를 위해서는 프록시 구성에서 빈 리스너 목록을 사용하십시오. 현재 서명된 공개 리졸버 목록에서 리졸버 이름을 선택하십시오. 예를 들어, 다음은 표준 Cloudflare 리졸버를 선택합니다. Pi-hole 가이드에서는 cloudflare-security업스트림 리졸버에서 맬웨어 필터링을 원하는 경우의 예시도 보여줍니다.

listen_addresses = []
server_names = ['cloudflare']

패키지의 나머지 구성은 그대로 유지하십시오. 여기에 있는 이름은 server_names레지스트리 식별자이며 임의의 호스트 이름이나 URL 경로가 아닙니다. 다른 공급자를 선호하는 경우 해당 공급자의 현재 리졸버 항목이 DoH를 지원하는지 확인하고 정확한 이름을 복사하십시오. 맬웨어 또는 기타 범주를 필터링하는 리졸버는 필터링되지 않은 리졸버와 다른 결과를 생성할 수 있습니다.

4. Pi-hole이 로컬 프록시를 가리키도록 설정합니다.

Pi-hole의 업스트림 DNS 주소를 로컬 리스너로 설정합니다.

sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'

접미사는 Pi-hole에서 비표준 DNS 포트를 나타내는 표기법입니다. Pi-hole 관리자 인터페이스의 설정 > DNS#5053 에서도 확인할 수 있습니다 . 미리 설정된 공용 업스트림 선택을 해제하고 사용자 지정 서버를 업스트림으로 유지하세요. 공용 리졸버를 추가 업스트림으로 선택하면 쿼리가 암호화된 프록시를 우회할 수 있으므로, 모든 Pi-hole 업스트림 쿼리가 DoH를 사용하도록 하려면 해당 항목을 제거해야 합니다.127.0.0.1#5053

5. 서비스를 재시작하고 문제가 해결되었는지 확인하십시오.

소켓, 프록시 서비스 및 Pi-hole FTL 데몬을 재시작하여 새 구성을 로드하십시오.

sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
sudo systemctl restart pihole-FTL.service

서비스 상태를 검토하세요:

sudo systemctl status dnscrypt-proxy.socket
sudo systemctl status dnscrypt-proxy.service
sudo systemctl status pihole-FTL.service

각각은 바인딩 오류나 리졸버 시작 실패 없이 활성화되어야 합니다. 프록시를 로컬 DNS 수신기를 통해 직접 테스트하십시오.

dig @127.0.0.1 -p 5053 example.com

DNS 응답이 나오면 로컬 프록시가 응답하고 있는 것입니다. 이제 53번 포트에서 Pi-hole을 테스트해 보세요.

dig @127.0.0.1 example.com

Pi-hole 쿼리 로그 또는 대시보드를 확인하여 요청이 Pi-hole에 도달했는지 확인하고, 테스트가 실패한 경우 프록시의 로그를 검토하십시오.

sudo journalctl -u dnscrypt-proxy.service -b --no-pager

추가 확인을 위해 프록시 시작 로그 또는 저널 출력에서 ​​선택한 리졸버와 DoH 프로토콜 상태를 확인하십시오. 확인이 성공했다는 사실 dig만으로는 DNS 확인이 정상적으로 작동함을 증명할 수 없으며, 요청이 HTTPS를 사용했음을 보장하는 것은 아닙니다.

일반적인 문제 및 안전한 복구

  • "주소가 이미 사용 중입니다": 다른 프로세스가 이미 5053번 포트를 사용 중이거나 소켓 오버라이드가 로드되지 않았을 수 있습니다. 리스너를 확인하고 sudo ss -lntup, 드롭인을 검토하고 systemctl cat dnscrypt-proxy.socket, 빈 리셋 라인이 5053 항목 앞에 있는지 확인하십시오.
  • 프록시가 활성화되어 있지만 조회 시간이 초과됩니다. 아웃바운드 HTTPS 액세스, 확인자 이름 및 프록시 로그를 확인하십시오. 일부 네트워크에서는 DNS over HTTPS 연결을 차단하거나 TCP 포트 443을 제한합니다.
  • 프록시 테스트는 작동하지만 Pi-hole에서 업스트림 응답이 없습니다. Pi-hole 설정이 정확한지 확인한 127.0.0.1#5053후 재시작하십시오 pihole-FTL. 표준 업스트림 체크박스가 자동으로 다른 경로를 제공하지 않는지 확인하십시오.
  • 변경 후에는 Ubuntu 자체에서 이름을 확인할 수 없습니다. 이 설정은 호스트의 파일이 아닌 Pi-hole의 업스트림 파일을 변경합니다 /etc/resolv.conf. systemd-resolved따라서 문제 해결을 위해 해당 파일을 교체하거나 비활성화하는 것은 피해야 합니다.

롤백하려면 Pi-hole에 기록해 둔 업스트림 DNS 설정을 복원하고 다시 시작하십시오 pihole-FTL. Pi-hole이 더 이상 프록시를 가리키지 않게 되면 dnscrypt-proxy패키지 관리자를 사용하여 비활성화하거나 제거할 수 있습니다. 이 서버가 Pi-hole을 통해 자체 DNS를 확인하는 경우, 서비스를 변경하기 전에 로컬 복구 경로를 확보해 두십시오.

어떤 옵션이 네트워크에 적합합니까?

Pi-hole에서 중앙 집중식 DNS 필터링을 사용하고 Pi-hole에서 선택한 하나의 리졸버로의 트래픽을 암호화하려는 경우 이 단일 호스트 프록시 구성을 사용하십시오. 프록시는 로컬 주소와 포트가 하나뿐이므로 검사가 비교적 쉽습니다. Pi-hole을 Docker, 다른 서버 또는 여러 네트워크에서 실행하는 경우 루프백 주소 대신 컨테이너 네트워크 주소가 필요할 수 있으며, 프록시 리스너가 공개 리졸버로 노출되지 않도록 제한해야 합니다. 정책 기반 필터링, 장치별 ID 또는 가정 외부 로밍 장치에 대한 암호화된 DNS가 필요한 경우 해당 클라이언트 또는 관리형 게이트웨이를 별도로 구성하십시오. Pi-hole의 업스트림 DoH 연결은 각 클라이언트의 Pi-hole까지의 경로를 자동으로 암호화하지 않습니다.

마지막으로, 라우터나 클라이언트가 두 번째 DNS 서버를 광고하는 경우 Pi-hole을 우회할 수 있다는 점을 기억하십시오. 네트워크 전체 필터링을 위해서는 DHCP를 통해 클라이언트에게 Pi-hole 주소만 제공하고 IPv4뿐만 아니라 IPv6 DNS 광고도 고려해야 합니다. 라우터 설정을 변경한 후에는 여러 장치에서 확인하십시오. 서버에서 프록시를 올바르게 설정하더라도 클라이언트가 다른 리졸버를 직접 사용하는 것을 막을 수는 없기 때문입니다.

공식 참고 자료

댓글 남기기

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

TestDisk와 PhotoRec을 사용하여 손실된 파티션과 파일을 복구하는 방법을 알아보세요. 원본 드라이브를 보호하고 안전하게 스캔한 다음 복구된 데이터를 다른 디스크에 저장하세요.

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

웹캠이나 이미지 파일을 사용하여 CoBang으로 Linux에서 QR 코드를 스캔하세요. Flatpak 카메라 접근 관련 설치 옵션, 설정 단계 및 문제 해결 방법을 참조하세요.

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하세요. 노출, 색상, 깜빡임 감소 및 기타 지원되는 제어 기능을 조정하고 호환되는 비디오 모드를 확인하세요.

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하려면 JetBrains Toolbox 또는 독립 실행형 tar.gz 아카이브를 사용하세요. Snap 및 Arch AUR 옵션도 제공됩니다. Java는 이미 포함되어 있습니다.

리눅스에 Cisco Packet Tracer를 설치하는 방법

리눅스에 Cisco Packet Tracer를 설치하는 방법

Cisco Packet Tracer 9.0.1 for Ubuntu 64비트 버전을 다운로드하고, APT를 사용하여 DEB 패키지를 설치한 다음, 터미널에서 라이선스에 동의하고 로그인하여 실습을 시작하십시오.

XFCE 4에서 듀얼 패널을 설정하는 방법

XFCE 4에서 듀얼 패널을 설정하는 방법

각 디스플레이마다 별도의 XFCE 4 패널을 생성하고, 두 번째 패널을 올바른 출력에 할당하고, 위치와 크기를 조정한 다음, 필요한 실행기와 상태 항목을 추가합니다.

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

GNOME Disks 또는 dd 명령어를 사용하여 Linux에서 CD-ROM ISO 파일을 생성합니다. 광학 드라이브를 식별하고, 복사 과정을 모니터링하고, 이미지 유효성을 검사하고, 손상된 디스크나 오디오 디스크에 다른 도구가 필요한 경우를 알 수 있습니다.

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

GIMP를 사용하여 Linux에서 사진 배경 제거하기: 피사체를 따라 그리고, 선택한 배경을 삭제하고, 투명도를 유지한 다음, 재사용 가능한 PNG 파일로 내보낼 수 있습니다.

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear를 공식 사이트에서 무료로 다운로드하세요. Windows, macOS, Linux 패키지를 비교하고, 데이터 파일을 설치한 후 첫 비행을 시작하세요.

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

브라우저에서 Google Tasks를 열거나, Chrome 바로가기 또는 앱 스타일 실행을 추가하고, 캘린더 및 Gmail을 통해 날짜별 할 일을 관리하세요.