VPN 연결에서 새 이름 서버를 자동으로 가져 오는 방법


11

우분투 xenial 16.04를 실행 중입니다.

우리는 openvpn을 사용하여 가상 프라이빗 클라우드에 연결하고 있습니다. 해당 클라우드에는 자체 DNS 서버가 있습니다 (예 : 로컬 경로 (가정 또는 사무실)).

VPN에 연결하면 해당 네트워크의 모든 IP를 사용할 수 있지만 호스트 이름으로 연결할 수 없습니다. 이유는 간단합니다. resolv.conf 파일에는 여전히 내 로컬 사무실 이름 서버가 표시됩니다. 올바른 이름 서버를 갖도록 resolv.conf를 수동으로 덮어 쓰면 좋습니다.

그렇다면 VPN에 연결할 때 resolv.conf를 자동으로 재구성하려면 어떻게해야합니까?

시스템 이벤트에 연결하여 스크립트를 실행할 수 있습니까?


1
일반적으로 VPN이 자체 DNS 서버를 푸시하도록 허용하는 옵션이 있습니다. 어떤 클라이언트를 사용합니까 — 터널 블릭?
Ryder

공식 openvpn 클라이언트를 사용하고 있습니다. 어딘가에서 VPN 프로세스가 DNS를 업데이트 할 수 없다는 것을 읽었습니다.
Christian Bongiorno

--register-dns옵션 을 사용해 보셨습니까 ? 또는 dhcp-options로 설정할 수있는 클라이언트 측 옵션이 있습니다 (여기서 명령어의 반전 부분 openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

답변:


8

OpenVPN 패키지에는에 대한 스크립트가 /etc/openvpn/update-resolv-conf있습니다. 다음과 같이 구성해야합니다.

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

dhcp-option DNSOpenVPN 피어 / 서버가 전달한 옵션 에서 DNS 서버 주소를 가져오고 resolvconf적절히 구성합니다 . 또한 처리 dhcp-option DOMAIN합니다.

그러나 이름 서버 목록을 덮어 쓰는 대신 해당 이름 서버를 기존 이름 서버 목록 앞에 추가하기 때문에 완벽하지 않습니다. 를 사용 openresolv하는 경우 사전 -x구성 대신 DNS 구성을 덮어 쓰는 데 사용할 수 있습니다.


을 사용하는 경우 . 대신 후크를 systemd-resolved사용할 수 있습니다 ./etc/openvpn/update-systemd-resolvedsystemd-revolvedresolvconf

script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

데비안에서이 스크립트는에 있습니다 openvpn-systemd-resolved.


2
이 두 줄 이상으로, 당신은 또한 함께 추가 script-security 2하거나 실행해야 openvpn합니다--script-security 2
32r34wgf3e

0

여기에 내가 생각해 낸 해결책이 있습니다. 터널이 작동 중일 때 스크립트를 실행할 수있는 스위치가 있습니다. 스위치를 사용하여 resolv.conf 파일을 필자가 알고있는 파일로 덮어 씁니다. 그것은 완전히 해킹입니다.

sudo openvpn --up reset-dns.sh --client client.ovpn

스크립트 (reset-dns) :

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

또한 "OMG! 그 터널을 루트로 실행하고 있습니다!" 다른 방법으로는 실행되지 않습니다. 내 DNS 해킹 전에도.

나는 더 나은 길을 열었습니다. 우분투의 네트워크 관리자는 작동하지 않습니다. 나는 이것에 반복적으로 우분투 티켓을 삭감했다

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