최근 정부에서 HTTPS로 운영되는 일부 불법 사이트를 차단하기 위해 ISP의 Cache DNS를 변조하여 warning.or.kr 사이트로 이동되도록 조치하였다. 변조라고 표현한 이유는... DNS는 규약상 정해진대로 동작해야 하는데, 쿼리가 들어오면 root 도메인부터 차례로 Recursion 수행하여 Authoritative NS에 질의하여 Record를 응답해야 하는데, Black List에 올라있는 쿼리가 들어오면 Authoritative NS를 찾으러 Recursion 수행하지 않고 자체 등록된 레코드를 응답해버리기 때문이다.


사진 출처 : https://en.wikipedia.org/wiki/Domain_Name_System


예를 들어 당신이 원래 접속하려 했던 사이트의 진짜 IP가 100.100.100.100 이라면 ISP의 Cache DNS도 100.100.100.100을 응답해줘야 정상이지만, 지금은 warning.or.kr 사이트의 주소인 121.189.57.82를 응답해주고 있다.




이 DNS 변조를 피하려면 국내 ISP의 Cache DNS가 아닌 해외 공개된 Cache DNS를 사용하면 된다. 대표적으로 Cloudflare의 1.1.1.1과 구글의 8.8.8.8이 있다.


윈도우 7 기준 DNS 설정 방법은 아래와 같다. 제어판을 통해 찾아가도 되지만 ncpa.cpl 입력하면 보다 빠르게 접근할 수 있다. 인터넷 연결하는 네트워크 아답터를 선택해서 TCP/IPv4 속성에 DNS를 1.1.1.1과 8.8.8.8로 설정해주면 된다. (만일을 대비해 기존에 다른 IP가 설정되어 있었다면 기록해두자)



그런데 위 처럼 DNS 자체를 변경하는게 싫다면 특정 사이트만 hosts 파일에 IP를 선언해서 사용하는 방법도 있다. 윈도우의 경우 메모장을 관리자 권한으로 실행 후 아래 파일을 열어서 편집하면 된다.


C:\Windows\System32\drivers\etc\hosts


해당 사이트의 진짜 IP를 적고 스페이스나 탭으로 띄운 후 주소를 적어주면 된다. 진짜 IP는 해외 DNS에 질의해보면 된다. 질의 방법은 아래와 같다.


nslookup 사이트주소 1.1.1.1



사이트의 진짜 IP를 알아냈다면 아래와 같은 형식으로 hosts 파일에 등록하면 된다.

(아래 IP와 주소는 가짜로 예를 든 것 뿐이다)


100.100.100.100 real.good.site.com




DNS를 수정하는 방법은 사설 네트워크 환경에서 특정 DNS를 써야만 하는 경우가 있기 때문에 (예를 들어 Active Directory 환경 등) hosts 파일 수정이 더 적합한 경우도 있다. 다만 hosts 파일은 해당 사이트의 IP 주소가 수시로 변경된다면 수정을 수시로 해야 하는 불편함이 있을 수 있다.