OpenVPN DNS 누출을 해결하는 방법

OpenVPN DNS 누출을 해결하는 방법

방금 VPN 제공업체에 가입했습니다.

Xubuntu 17.10, openvpn 2.4.3이 있습니다. openvpn 명령을 시작한 후 IP를 확인하고(괜찮았습니다) 간단한 작업을 수행했습니다.DNS 누출 테스트: 아니요, 내 인터넷 서비스 제공업체가 표시됩니다!

이 DNS 누출 문제를 해결하는 방법은 무엇입니까?

예비 심문이 있습니다.

  • 내 쪽에서 "수정 가능"합니까? 아니면 원격 서버가 잘못 구성되어 있습니까?

내 입장에서는 openvpn의 .ovpn 구성 파일에서 일부 값을 변경해 보았습니다.

  1. 처음에는 다음 줄이 있었고 작동할 것으로 예상되었지만 작동하지 않았습니다.

    script-security 2
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    
  2. 나는 이것에 따라 그들을 바꿨다.레딧 답변(DNS 주소를 명시적으로 지정):

    dhcp-option DNS 208.67.222.222
    dhcp-option DNS 208.67.220.220
    dhcp-option DNS 8.26.56.26
    up "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    down "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    

    /etc/resolvconf이렇게 하면 up/down 스크립트에 의해 내용이 업데이트되므로 작업이 수행되는 것 같습니다 .

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "systemd-resolve --status" to see details about the actual nameservers.
    
    nameserver 208.67.222.222
    nameserver 208.67.220.220
    nameserver 8.26.56.26
    search lan
    

    하지만 DNSleaktest에는 여전히 내 ISP가 표시됩니다.

  3. 그럼 내가배운openvpn-systemd-resolvedsystemd와 유사한 스크립트를 제공 하지만 systemd와 함께 작동하게 만드는 ubuntu 패키지가 존재합니다 update-resolve-conf(여기서 어떤 프로세스가 이 스크립트를 사용하는지 모르겠습니다: network-manager? openvpn?). 패키지를 설치했는데교체됨내 .ovpn 파일의 스크립트 이름:

    up "/etc/openvpn/update-systemd-resolved ..."
    down "..."
    down-pre
    

    아직도 운이 없습니다.[이 글을 쓰는 시점에서 나는 방금 해결책을 찾았습니다.내 대답다음과 같은]

  4. 그런 다음 이 파일을 많이 변경했습니다 /etc/resolv.conf. 평소에는 바뀌지 않아야 하므로 DNS 서버 주소를 에 넣었는데 /etc/resolvconf/resolv.conf.d/base게시 resolvconf -u가 안되는 것 같습니다.

  5. VPN 회사 지원팀에 문의했지만 해결책이 없습니다.

  6. 나는 이와 같은 다양한 솔루션을 시도했습니다.하나, 그리고 이후 허용되지 않는 답변:

    • 설치 dnsmasq하고 server=...넣으십시오 /etc/dnsmasq.conf;
    • 존재하다 /etc/dhcp/dhclient.conf(세부 사항);
    • 기반 chattr으로해커.
  7. 나는 내가 시도한 다른 일들을 잊어버렸고, stackexchange가 나를 불행에서 구해 줄 것이라고 생각했고, 기적적으로 질문의 힘을 통해 그렇게 되었습니다.

[편집 1: 해결되지 않았습니다! 사실 내 첫 번째 대답은 그것이 작동하는 이유가 아닙니다.]

나는 더 많은 검사를 한 후에 이것을 발견했습니다. 이 줄을 삭제해도 systemd-update-resolved여전히 작동하지만 특정 조건에서만 작동합니다.

언제. . . 언제openvpn 제공하다실행하는 동안 DNS 누출이 발생했습니다. 이를 중지한 다음 내 클라이언트의 서비스만 다시 시작하는 경우:

sudo service openvpn stop
sudo service openvpn@client start

그렇다면 괜찮습니다.

죄송합니다. 아직 openvpn 매뉴얼을 꼼꼼히 확인하지 못한 것 같습니다만,왜 그런 겁니까? 이거 보안 구멍 아닌가요? 특히 openvpn 서비스는 apt에서 설치 후 자동으로 활성화되기 때문입니다.변화를 영구적으로 만드는 방법은 무엇입니까?(시도했지만 sudo systemctl disable openvpn다음 부팅에서도 여전히 같은 문제가 발생했습니다.)

[편집 2: 라우팅 테이블]

중지 openvpn하고 시작하면 openvpn@clientDNS 누출이 없으며 출력은 route -n다음과 같습니다.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.65.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.17    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.65.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.65.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

후에 sudo service openvpn restart:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.16    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

더 이상 작동하지 않습니다. 두 경우 모두 DNS 누출이 발생합니다. 해당 패키지(resolvconf를 대체함) 설치를 시도했는데 openresolv작동하는 것 같았습니다. 새로운 라우팅 테이블은 다음과 같습니다.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.161   128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.15    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.160   0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.161   128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

답변1

따라서 대답은 ArchLinux 위키의 항상 유효한 지침을 주의 깊게 따르는 것입니다.

https://wiki.archlinux.org/index.php/OpenVPN#Update_systemd-resolved_script

그리고추가의해당 라인.

따라서 두 단계:

sudo apt install openvpn-systemd-resolved

그리고추가의.ovpn 파일에 다음 줄을 추가합니다.

script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

명확하지 않은 경우 이제 파일에 다음이 포함되어야 합니다."위쪽" 행 합계'아래쪽' 행:

# old lines
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
# new lines
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

[편집 1: 사실 아니요, 그게 작동하는 이유는 아닙니다.]

바라보다편집 1내 질문에.

[편집 2: 이번에는 제대로 된 것 같아요]

이상한 systemd-resolved.service동작이 포함된 이 문제가 인용되었습니다.여기.

클라이언트 구성 파일에 입력되는 것으로 나타나는 옵션은 다음과 같습니다.

dhcp-option DOMAIN-ROUTE .

분명히 선택한 연결을 통해 모든 DNS를 라우팅합니다.

답변2

Ubuntu 17.10 및 현재 18.04 LTS에서 DNS 누출 문제가 있습니다. 얼마전 16.10 업데이트때부터 시작된거 같은데, 지금까지 우연히 확인해 볼 생각은 없었습니다. 아래 URL을 발견하고 버그 보고서를 처음부터 끝까지 읽기 전까지는 위의 내용(그리고 내가 찾아 시도한 다른 모든 내용)도 도움이 되지 않았습니다. DNS 우선 순위 줄 추가에 대한 설명이 저에게 효과적이었습니다.

https://bugs.launchpad.net/network-manager/+bug/1624317 댓글 #103을 참조하세요.

설치된 NetworkManager VPN 연결을 찾으세요(" "는 $터미널 창의 명령줄에 있음을 나타내는 시스템 프롬프트일 뿐입니다).

$ ls -la /etc/NetworkManager/system-connections/*

그런 다음 수정하려는 항목을 선택하고 이 명령을 실행합니다(또는 이 명령이 ipv4 섹션 아래에 dns-priority 항목을 추가하므로 구성 파일을 수동으로 편집할 수도 있습니다).

$ sudo nmcli 연결 수정<VPN 연결 이름>ipv4.dns-우선순위-42

다시 시작하세요.

$ sudo service network-manager restart

적어도 나에게는 이것을 내 VPN(ProtonVPN)에서 OpenVPN .ovpn 구성 파일에 넣는 것이 작동하지 않는다는 점에 유의하십시오. 어떤 이유로 GUI 대화 상자를 사용하여 설치할 때 NetworkManager 구성으로 이동하지 않습니다. 설치 후 구성을 업데이트한 다음 NetworkManager를 다시 시작한 경우에만 작동했습니다. 사용하려는 설치된 각 VPN 구성에 대해 이 작업을 수행해야 합니다.

답변3

이는 systemd-resolve를 이해하기 위해 network-manager-openvpn 패키지를 업데이트하기 전에 Ubuntu가 systemd-resolve로 전환했기 때문에 버그인 것 같습니다. Ubuntu 18.10에서는 Network Manager 1.12.2-0ubuntu5에서 이 문제를 해결한 것 같습니다. 자세한 내용을 보려면 여기를 클릭하세요:https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/10.

게시하기 전에 @Bob Willan의 답변이 저에게 효과적이었습니다.

답변4

OpenVPN 구성 파일에 다음 줄을 추가하여 문제를 성공적으로 해결했습니다.

스크립트 보안 2

/etc/openvpn/update-resolv-conf

내려와 /etc/openvpn/update-resolv-conf

에서 @Linux에서 OpenVPN DNS 누출을 수정하는 방법

Windows 사용자의 경우(OpenVPN +2.3.9):

외부 DNS 차단

관련 정보