OpenVPN 서버의 푸시 DNS에 관계없이 OpenVPN 클라이언트가 자체 DNS 서버를 푸시 할 수 있습니까?


9

데비안에서 OpenVPN 서버가 실행 중이고 서버 설정 파일에서 DNS를 푸시합니다 :

"dhcp-option DNS 8.8.8.8"을 누릅니다.

사용자가 클라이언트 쪽에서 해당 DNS 서버를 변경할 수있는 옵션이 있습니까?

여기에는 catch가 있습니다. 그렇지 않으면 시스템의 네트워크 설정에서 수동으로 DNS 서버를 설정할 때까지 많은 OpenVPN 클라이언트가 웹 페이지를 열 수 없기 때문에 openvpn 서버가 DNS를 푸시해야합니다.

저의 목표는 숙련되지 않은 사용자에게 기본 DNS 서버를 자동으로 적용하는 동시에 숙련 된 컴퓨터 사용자가 자신의 DNS 서버를 설정할 수 있도록하는 것입니다.

openvpn 서버에서 'dhcp-option DNS 8.8.8.8'푸시 '옵션이 활성화되어있는 동안 PC에서 단순히 DNS 설정을 변경하면 아무 것도 수행하지 않습니다. 서버가 푸시 한 DNS는 로컬 DNS 설정에 관계없이 유지됩니다.

어떤 아이디어?

OpenVPN 서버 설정 :

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

업데이트 : 클라이언트 운영 체제는 Windows 및 Mac입니다.


DHCP 클라이언트의 기본 운영 체제를 지정하지 않았으므로 "예, DHCP 제공 DNS 서버를 재정의하는 것은 일반적으로 매우 간단합니다." 이것이 사실이 아니라고 제안한 것은 무엇입니까?
Andrew B

죄송합니다. 운영 체제는 Windows 및 Mac입니다. openvpn 서버에 연결하면 DNS 설정을 효과적으로 변경할 수 없습니다. 예를 들어 openvpn 서버는 DNS : 8.8.8.8을 제공하고 남아프리카에서 로컬로 DNS로 변경할 때 공식 DNS 서버는 8.8.8.8 (또는 Google의 아날로그)로 유지됩니다. dnsleaktest c0m에서 DNS 서버를 테스트 할 수 있습니다
Dimi

답변:


16

2017 년 (OpenVPN 2.4) 현재 가능합니다. 이 줄을 클라이언트 설정 파일에 추가하십시오 :

pull-filter ignore "dhcp-option DNS"

인용 된 텍스트로 시작하는 모든 푸시 구성 줄은 무시합니다.

옵션은 위에서 아래로 일치하므로 첫 번째 일치가 사용됩니다. 필요에 따라이 경로를 사용하여 일부 경로를 허용하고 다른 경로를 거부 할 수 있습니다.

세 액션 키워드는 accept, ignore,와 reject. 에 대한 사용 사례를 발견하지 못했습니다 reject.


4

공식 OpenVPN 문서에서 다음을 찾을 수 있습니다.

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

불행히도, 당신이 요구하는 것 외에도, 이것은 구성에서 제공 하는 경로 재 지정 게이트웨이를 비활성화하는 부작용있으며 이는 귀하의 경우 문제를 나타낼 수 있습니다.

내가 제안하는 것은 완전히 다른 접근법입니다.

" 내 목표는 숙련되지 않은 사용자에게 기본 DNS 서버를 자동으로 적용하는 동시에 숙련 된 컴퓨터 사용자가 자신의 DNS 서버를 설정할 수 있도록 하는 것 입니다. " DNS 구성 및 이러한 구성을 제공하지 않으려는 사용자

따라서 기본 OpenVpn 구성 파일에서 직접 구성을 푸시하지 않고 ( 모든 사용자 에게 이러한 구성을 제공하는 대신 ) 사용자 별 구성을 구현할 수 있습니다 . 당신은 이것을 할 수 있습니다 :

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

따라서 기본 구성은 다음을 제거 해야 합니다 .

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

추가 받는 참조 / 등은 / OpenVPN을 / USERCONF (예를 들어 당신이 원하는대로 선택하시기 바랍니다.) 디렉토리 :

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

그런 다음 해당 userconf 디렉토리에서 해당 DNS를 제공하려는 각 사용자에 대해 하나의 파일을 작성하십시오 (해당 파일에서 위에 삭제 된 두 개의 행 포함).

분명히 사용자 정의를 위의 두 행으로 제한하지 않고 모든 사용자에 대해 openvpn 구성을 자유롭게 조정할 수 있습니다.

마지막으로 ccd-exclusive 매개 변수에 관심이있을 수 있습니다 .


노력해 주셔서 감사합니다 Damiano하지만 정답은 인터넷 연결의 IPv4 속성을 사용자 지정 DNS 서버로 변경해도 DNS 서버를 푸시하는 OpenVPN 서버에 연결할 때 도움이되지 않으므로 TAP 어댑터의 DNS 서버를 변경해야합니다. 이 방법으로 서버 구성에서 아무것도 제거 할 필요는 없지만 Windows 시스템의 TAP 어댑터의 IPv4 속성을 간단히 편집해야합니다.
Dimi

@ 디미 : 실제로 솔루션은 당신이 나타나게하는 것보다 훨씬 제한적입니다. VPN 연결마다 다른 DNS 서버를 사용하고 링크 설정 순서에 따라 사용되는 TAP 어댑터가 결정되므로 특정 DNS 세트를 사용하도록 TAP 어댑터를 사전 구성 할 수 없습니다. 특정 TAP 어댑터를 사용하여 설정된 연결. 즉, 해결 방법은 항상 동일한 TAP 어댑터를 통해 단일 VPN 연결이 설정되어있는 경우에만 작동합니다 .
0xC0000022L

1

내 문제는 정확히 동일하지는 않았지만 증상이 유사하여이 질문이 검색 결과에 나타날 수 있으므로 다른 사람이 같은 이유로 여기에 바람을 불어 넣을 수 있습니다.

Mac OS 용 OpenVPN GUI 인 Tunnelblick을 사용 하고 있습니다. OpenVPN 서버가 DHCP 또는 DNS 옵션을 푸시하도록 설정되지 않았지만 클라이언트가 사용하려는 로컬 비 VPN DNS 서버 대신 VPN을 통해 DNS 서버를 계속 사용하고있었습니다.

해결책은 Tunnelblick의 구성 → 설정 탭으로 이동하여 DNS / WINS 설정을 네임 서버 설정 안함으로 변경 하는 입니다.


0

@aldaviva 주셔서 감사합니다, 내 macOS 10.11에서 작동합니다.

스크린 샷을 첨부하십시오.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.