ComputerMac-OS

Mac OS에 CloudFlared로 DNS Over HTTPS 설정하기

안녕하세요! 상큼한놈 입니다. 최근 아이폰의 용량이 부족하여 ICloud 50GB를 구독하게 되었습니다. 사진연동을 하기 위하여 맥의 사진 보관함을 ICloud 사진과 연동하는데 20GB 정도의 용량을 업로드 하는데 정말 한세월이 걸렸습니다. 맥북을 잠자기 모드에 진입하지 않도록 설정한 뒤 밤새도록 켜두었더니 그제서야 업로드가 완료되더군요.

이건 Apple 쪽에서 한국 서버에 대한 관리가 게을러서 그런 걸까? 애플은 한국 서비스에 전혀 관심이 없는 걸까? 고민 중 여러 커뮤니티 사이트를 확인해 보니 저와 비슷한 일을 많은 분들이 겪고 있더군요. Https 프로토콜로도 암호화가 되지 않는 SNI을 이용한 정부의 필터링으로 공공연하게 이루어지고 있는 하이재킹(설명)은 법에 위축되는 사이트를 막기 위해 사용되고 있습니다.

하지만 통신사에서 악용해서 특정 사이트에 관련된 서비스만 느리게 한다면 어떨까요? 적어도 필자는 그렇게 생각하고 있지 않습니다만, DNS Over HTTPS 설정으로 ICloud 속도가 개선되었습니다.

이와 관련된 여러 커뮤니티의 글을 확인(글 1, 글 2)하신 뒤, DNS Over HTTPS 설정을 진행해 보시기 바랍니다.

Mac에 HomeBrew가 설치되어 있나요?

터미널 - brew

맥에서 터미널을 실행합니다. 이후 brew를 입력합니다. 다음과 같이 ‘command not found’가 뜬다면 설치가 되어있지 않은 겁니다. 이제 간단하게 설치해 보도록 하겠습니다.

homeBrew란 MacOS용 패키지 관리자로 Ubuntu의 apt나 CentOS의 yum과 유사하다고 생각하시면 편합니다. 이후 Mac에서 소프트웨어 개발 방향의 일을 하신다면 자주 그리고 편리하게 사용하실 것이라 생각합니다.

homebrew 홈페이지 - 터미널 붙여넣기 하세요

다음은 HomeBrew의 페이지의 모습입니다. 하단 [Homebrew 설치하기] 밑에 코드가 있는데 이 코드를 터미널에 붙여넣기 합니다. 아니면 혹은 그 하단에 있는 코드를 이용하셔도 됩니다.

https://brew.sh/index_ko

HomeBrew 홈페이지
HomeBrew - 터미널 설치 명령어 입력

입력 후 엔터키를 과감하게 눌러주세요. 리눅스와 다르게 su 권한의 경우에는 설치가 진행되지 않으니 이점 유의해 주세요.

brew 설치 중 - Command Line Tools 다운로드 및 설치

간혹 사용자 비밀번호를 입력하는 부분이 3번 정도 있으며, Xcode의 Command Line Tools 다운로드 시간이 꽤 걸리니 커피 한 잔의 여유를 가지시는 편이 좋습니다.

HomeBrew 설치 완료!

HomeBrew 설치가 완료되었습니다. 이제 brew update를 하여 최신 버전인지 확인해 주시면 됩니다.

본격적으로 Mac OS에 CloudFlared 설치 및 DNS Over HTTPS 설정하기

터미널 - brew install cloudFlare/cloudflare/cloudflared

brew를 이용하여 CloudFlared를 설치합니다.

터미널 - cloudflared --version

CloudFlared가 정상적으로 설치되었는지 확인합니다. version 확인을 통해 설치된 version 및 설치 결과를 확인할 수 있습니다.

터미널 sudo cloudflared proxy-dns

관리자 권한으로 proxy-dns를 실행해 줍니다. 그 뒤 재부팅시 자동 실행되도록 하기위하여cloudflared 서비스를 설치해줍니다.

cloudflared -mkdir, cat

cloudflared 폴더를 생성한 뒤 config.yml 설정 파일을 cat을 이용하여 저장합니다.

터미널 - sudo cloudflared

관리자 권한으로 cloudflared를 실행해 봅니다. 다음과 같이 나온다면 성공입니다! 라고 하지만, Mac OS 상의 설정이 조금 더 남았습니다.

(+) 현재까지 사용된 방법은 공식 홈페이지에 게제된 방법입니다. 좀 더 자세히 알고 싶으시다면 다음 페이지를 참고해 주세요.

https://developers.cloudflare.com/1.1.1.1/dns-over-https/cloudflared-proxy/

cloudflared dns-over-https 설치 안내 페이지

Mac OS 네트워크 DNS 주소 변경하기

시스템 환경설정 - 네트워크

맥에서 시스템 환경설정으로 진입하여 네트워크를 클릭합니다.

네트워크 - 고급

그럼 다음과 같이 네트워크 창이 나타납니다. 이제 현재 사용하고 있는 네트워크를 선택한 뒤 [고급…] 버튼을 클릭합니다.

DNS - [+] - 127.0.0.1

DNS 탭으로 진입한 뒤 DNS 서버 영역의 [+]버튼을 클릭합니다. 이후 로컬 IP 주소인 127.0.0.1을 입력해 줍니다.

이제 PC에 설치된 CloudFlared가 간이 DNS 서버로 동작하여 https로 IP주소를 받아오며 SNI주소가 도메인(예 https://yeopbox.com)이 아닌 일반 IP(예 192.168.0.1)로 변환되어 데이터를 주고받게 되어 통신사가 구체적으로 어떤 사이트에서 무엇을 하고 있는지 감청하기 어려워졌습니다.

가끔, DNS 서버 문제로 인터넷 접속 불가 현상이 나타난다면 터미널을 실행하여 다음과 같이 서비스를 재시작해 주시면 정상적으로 사용 가능합니다.

적용된 것을 어떻게 확인하는가?

DNS Leak을 테스트해 주는 사이트가 여럿 있습니다. 이 사이트들을 통하여 쉽게 확인할 수 있습니다. 필자가 확인한 사이트는 다음과 같습니다.

https://www.dnsleaktest.com/

dnsleaktest 홈페이지
dns leak - DNS Over HTTPs 적용 전

다음은 적용 전 DNS leak 현황입니다. 다음과 같이 KT로 4개의 IP 항목이 나타나는 것을 확인할 수 있습니다.

dns leak - DNS Over HTTPs 적용 후

이번에는 적용 후의 DNS leak 현황입니다. CloudFlare으로 1개의 항목이 나타나는 것을 확인할 수 있습니다.

마치며…

Dns Over Https 설정은 Mac뿐이 아니라 IOS기기나 Browser 레벨에서도 가능합니다. 필자의 경우에는 여럿 IOS기기와의 ICloud 속도 향상을 기대하기 위하여 아이패드, 아이폰 및 윈도우 까지 Dns Over Https를 설정하였습니다.

따라서 추후 IOS, FireFox 등 Dns Over Https를 설정하는 방법에 대해서 좀 더 알아보려고 합니다.

안드로이드의 경우와 같이 가능한 한 빨리 Dns Over Https 기능이 OS 단에 추가되길 기다리며, 본 포스트를 마치겠습니다.

감사합니다.

Avatar photo

상큼한놈

1인 인디게임을 개발하고 있는 상큼한놈입니다. 다른 분야도 열심히 공부하고 있습니다.

Mac OS에 CloudFlared로 DNS Over HTTPS 설정하기”에 대한 15개의 생각

  • Avatar photo Mr. Ryu

    단장한거 처음보네요..엽박스씨..ㅋㅋ
    내가 누굴까? ㅋㅋㄷㅋ
    오늘도 화이팅입니다.

    댓글달기
    • 에이 힌트가 너무 쉽습니다.ㅋㅋㅋㅋ 사이트에 방문해 주셔서 감사합니다! ㅋㅋㅋㅋ

      댓글달기
  • Avatar photo 한돌

    ERRO[0000] Failed to start the listeners
    error=”failed to create a UDP listener: listen udp 127.0.0.1:53: bind: address already in use”

    라고 나오는 경우는 어떻게 해야할까요?
    제가 실수로 네트워크 설정을 먼저 손댔더니 이렇게 됐네요.
    지금은 설정의 네트워크에서 127.0.0.1의 DNS항목을 지우고 리부팅 후 다시 설정하려는데도 계속 같은 에러가 뜹니다.

    댓글달기
    • 안녕하세요. 사이트에 방문해 주셔서 감사합니다. DNS 서버란에 1.1.1.1을 추가한 뒤 다시 테스트 부탁드립니다. 이후에도 동작하지 않는다면, 터미널에서 ‘sudo lsof -i : 포트번호’로 사용중인 프로세서를 확인 후 ‘kill -9 프로세스 번호’로 종료이후 설정을 재진행 바랍니다.

      댓글달기
      • Avatar photo 한돌

        일단 현재 DNS서버는 192.168.1.1로 돼어있는데
        말씀하신대로 1.1.1.1을 추가한 뒤 sudo cloudflared proxy-dns 를 했을 경우 같은 에러가 뜨네요.
        이후 알려주신 ‘sudo lsof -i : 포트번호’를 시도해보려 하는데…
        포트번호란에 무엇을 넣어야 할까요? ^^;; (제가 이쪽은 문외한이라…)

        댓글달기
        • 안녕하세요. 사이트에 다시한번 방문해주셔서 감사합니다!
          ”failed to create a UDP listener: listen udp 127.0.0.1:53: bind: address already in use”
          위 에러의 의미는 현재 53번 포트가 이미 사용중이라 UDP를 생성할 수 없다라는 의미입니다.
          따라서,
          sudo lsof -i :53
          53번 포트(DNS 포트)를 확인 후, 기존 실행중인 프로세스를 종료해 주시면 됩니다.
          kill -9 PID번호 (PID번호는 위 명령어 이후 나오는 리스트에서 확인하실 수 있습니다.)

          댓글달기
          • Avatar photo 한돌

            말씀하신대로 해봤는데…
            일단 kill -9 PID(3796)를 하니
            -bash: kill: (3796) – Operation not permitted
            라고 뜨더라구요.
            이후 sudo cloudflared proxy-dns 명령어를 사용했을 때 같은 에러가 떠서 프로세서 종료가 안된 거 같아
            sudo kill -9 PID로 하니 아무 메세지가 안뜨길래 된 줄 알고
            다시 sudo cloudflared proxy-dns 를 실행하니 같은 에러가 반복되네요.
            이후 sudo lsof -i :53를 다시 실행하면 포트번호가 변경되서 나타나구요.

            아직까지
            ERRO[0000] Failed to start the listeners
            error=”failed to create a UDP listener: listen udp 127.0.0.1:53: bind: address already in use”
            에서 벗어나질 못하고 있습니다. ㅠ.ㅠ

          • 흠.. 생각보다 많이 꼬인 모양입니다..
            일단은 brew remove cloudflared로 제거한 뒤에 다시 포트가 사용중인지 점검바랍니다.
            kill -9 1234 와 같이 프로세스를 종료해주시면 됩니다.
            사이트에 방문해 주셔서 감사합니다.

      • Avatar photo 한돌

        감사합니다.
        현재 재 DNS 서버 설정은 192.168.1.1로 돼있는데
        말씀하신 1.1.1.1을 추가(대체)해도 sudo cloudflared proxy-dns 시 에러가 발생해서
        다시 원래 DNS 넘버로 복귀 후
        알려주신 ‘sudo lsof -i : 포트번호’를 적용해 보려 하는데…
        제가 문외한이라 포트번호로 무얼 적어야 하는지 모르겠네요. ^^;;

        댓글달기
  • Avatar photo snail79

    안녕하세요? 이거 설정하고 아이클라우드쪽에 엄청난 속도 향상을 맛(?)보고 있습니다. 먼저 좋은 정보 감사드리고요. 질문이 하나 있어서요.

    글에서처럼 DNS over HTTPS 설정하는 거랑, 단순히 DNS만 1.1.1.1/1.0.0.1로만 바꾸는 거랑 아이클라우드 속도 차이 관점에서 어떤 차이가 있는 건가요? 저는 그 전까지 단순히 후자만 설정해 놓고 썼는데, 어제보니깐 전자설정 이후에, 속도향상이 더 큰 것 같은 느낌(?) 같은 것이 있어서요.

    댓글달기
    • 안녕하세요!사이트에 방문해 주셔서 감사합니다.
      DNS 서버만 1.1.1.1로 변경할 경우 사용자가 요청한 주소 값이 평문으로 전송됨으로 중간에 통신사나 여타 기관에서 어떤 사이트에 접근하는지 충분히 확인할 수 있습니다.
      DNS OVER HTTPS의 경우 해당 주소 값을 HTTPS 통신으로 전송하여 IP값을 가지고 오기에 중간에 여타 기관에서 확인하기 힘듭니다.
      하지만 DNS OVER HTTPS의 경우에도 아예 검열이 불가능한 건 아니라 국내에서는 본 기술을 이용해도 막히는 사이트가 있습니다. 하지만 통신사 임의의 속도 저하가 되는 사이트에는 여전히 효과가 있더군요.
      좋은 하루 되세요!

      댓글달기
  • Avatar photo bancom

    안녕하세요 좋은 정보 감사합니다.
    중간에 하던 중에 뭐가 계속 꼬이면서 어찌어찌 하게 됬는데 결론적으로 따지자면 테스트사이트에서 테스트해보면 위 사진처럼 cloudflare 하나만 뜹니다. 중간에 무슨 에러도 뜨고 뭐… 난리도 아니었는데 이렇게 결론적으로만 뜬거면 성공인건가요?
    감사합니다.

    댓글달기
    • 안녕하세요. 사이트에 방문해주셔서 감사합니다! 말씀주신 것과 같이 cloudflare 한개가 뜨면 적용 완료된 것으로 확인해 주시면 됩니다.

      댓글달기
  • Avatar photo 두리둥실

    며칠 전부터 올려주신 이 작업을 하고 싶어서 여러번 도전하고 있는데,,

    sudo cloudflared proxy-dns
    이 단계 이후에 도무지 진행이 안 됩니다.
    ERRO[0000] Failed to start the listeners 라고 나오는데 방법이 없을까요?

    관리자 모드로 진입해서 인스톨 과정이 진행이 안됩니다ㅠㅠㅠㅠ

    댓글달기
    • 안녕하세요. 사이트에 방문해주셔서 감사합니다!
      설치시에는 일반 권한으로 설정해 주시는 것이 맞구요, 기동시에 관리자 모드로
      설정을 해주시는 것이 맞습니다.
      에러가 아래와 같으면 ‘sudo lsof -i :53’를 이용하여 우선적으로 53번 포트를 이용하는 프로그램이 있는지 확인해 보셔야 할 것 같습니다.
      ERRO[0000] Failed to start the listeners
      error=”failed to create a UDP listener: listener: listen udp 127.0.0.1:53: bind: adress already in use”
      감사합니다.

      댓글달기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다