cloudflare에서 제공하는 cloudflared 데몬에는 proxy-dns라는 기능을 포함하고 있습니다.
proxy-dns를 사용하면 기존의 UDP 53번을 이용한 DNS Query가 아닌 DNS over HTTPS(이하 DoH)를 이용할 수 있습니다.
DoH를 사용하면 DNS의 응답속도가 전통적인 UDP통신을 사용하는 DNS보다 상당부분 개선되며, 무엇보다도 우리가 궁극적인 목표로삼는 DNS와의 완전한 암호화 통신을 구현할 수 있습니다.
DNS의 암호화 통신은 흔히 warning.or.kr로 일컬어지는 방송통신심의위원회(이하 방통위)의 심의규제 조치에 따른 도메인 차단을 원천적으로 무효화 하는것을 목표로 하는 여러 기술중의 하나로, 현재 방통위의 SNI를 기반으로한 https차단을 우회하는 방법과는 조금 거리가 있으나, DoH를 사용하는 사용자가 늘어나면 지금까지 알려져 온 방통위의 도메인차단 기술을 무효화 하는데에 한발짝 더 다가설 수 있는 계기가 될걸로 생각합니다.(방통위의 DNS를 기반으로한 도메인 차단 기술은 DoH를 통하여 완벽히 후회할 수 있습니다.)
방통위의 SNI를 기반으로한 https사이트의 도메인 차단 기술에 대하여서는 다음에 자세히 적도록 하겠습니다.
오늘 다루는 DoH에 관한 보다 자세한 내용은 아래 링크를 참고해주세요.
https://support.mozilla.org/ko/kb/firefox-dns-over-https
그럼 바로 본론으로 들어가서 설치를 시작해 보겠습니다.
# 아래 링크에서 rpm 다운로드
링크 : https://developers.cloudflare.com/argo-tunnel/downloads/
# rpm 설치
root@tcp80 ~]# rpm -ivh cloudflared-stable-linux-amd64.rpm
# 시작/종료 스크립트 생성
root@tcp80 ~]# cat << EOF > /etc/systemd/system/proxydns.service [Unit] Description=Proxy dns server over https Before=network.target [Service] Type=simple ExecStart=/usr/local/bin/cloudflared proxy-dns [Install] WantedBy=multi-user.target EOF
# 리부팅시 자동 시작되도록 init에 등록
[root@tcp80 ~]# systemctl enable proxydns Created symlink from /etc/systemd/system/multi-user.target.wants/proxydns.service to /etc/systemd/system/proxydns.service.
# Cloudflared시작
[root@tcp80 ~]# systemctl start proxydns
# 서버의 DNS설정을 변경
[root@tcp80 ~]# cat << EOF > /etc/resolv.conf nameserver 127.0.0.1 EOF
이로서, 서버가 외부접속을 시도할때 노출될 수 있는 DNS통신이 완전히 암호화 되어, 그 누구도 서버의 DNS통신 내용을을 감청하지 못하게되며, 현재까지 DoH를 감청할 수 있는 기술은 존재하지 않고 있습니다.
이상입니다.