연결 시 다른 DNS 서버를 사용하도록 OpenVPN 클라이언트를 구성하는 방법

연결 시 다른 DNS 서버를 사용하도록 OpenVPN 클라이언트를 구성하는 방법

OpenVPN 클라이언트를 통해 VPN 공급자에 연결할 때 시스템이 VPN 공급자의 DNS 서버를 사용하도록 systemd를 사용하여 Debian 기반 빌드를 구성하려면 어떻게 해야 합니까?

답변1

저는 이것으로 꽤 많은 여행을 해왔기 때문에 제가 발견한 것과 해결책을 문서화하고 싶습니다.

분명히 이 기능을 구성하기 위한 과거의 표준은 다음과 같은 도우미 스크립트였습니다.업데이트 시스템 해결그러나 이는 최신 버전의 NetworkManager에서는 더 이상 작동하지 않습니다.

제가 원하는 구성을 설정하기 위해 거쳐간 단계는 다음과 같습니다. (이는 OpenVPN 클라이언트를 구성하고 연결했다고 가정합니다.)

# Make a copy of any existing resolv.conf configuration
sudo mv /etc/resolv.conf /etc/resolv.conf.original
# This sets resolvd to redirect to the systemd-resolve 127.0.0.53 redirect
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# Edit the systemd-resolve configuration file
sudo vi /etc/systemd/resolved.conf
  • DNS=로컬 LAN/라우터 DNS IP(예: 192.168.1.1)로 설정
  • Domains=로컬 LAN 도메인(예: my.company.com)으로 설정
sudo service systemd-resolved restart
resolvectl status

이제 전역 항목은 사용자가 설정한 값을 반영해야 합니다./etc/systemd/resolved.conf

Global
          Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: my.company.com

이제 openvpn.client.conf 파일이 있는 동일한 디렉터리에 도우미 스크립트를 생성 /etc/openvpn하거나/etc/openvpn/client

NordVPN에 사용하는 예는 다음과 같습니다.

sudo vi /etc/openvpn/nordvpn.systemd.resolve.sh
# Make the script executable
sudo chmod 750 /etc/openvpn/nordvpn.systemd.resolve.sh
#!/bin/sh
set -e
systemd-resolve -i tun0 \
  --set-dns=103.86.96.100 --set-dns=103.86.99.100 \
  --set-domain=~. \
  --set-dnssec=off

이제 실제 openvpn.client.conf 파일(내 것은 nordvpn.conf이지만 귀하의 것은 다를 수 있습니다)

sudo vi /etc/openvpn/nordvpn.conf

...그리고 다음 줄을 추가하세요:(위에서 생성한 스크립트의 이름을 사용하세요.)

script-security 2
up /etc/openvpn/nordvpn.systemd.resolve.sh

이제 OpenVPN 클라이언트를 다시 시작하세요.서비스 이름은 OpenVPN 클라이언트 시스템 서비스를 구성하는 방법에 따라 달라질 수 있습니다.

sudo systemctl restart [email protected]

다시 시작하는 동안 오류가 없었는지 확인합니다.

sudo systemctl status [email protected]
resolvectl status

전역 항목은 설정한 값을 반영해야 하며 /etc/systemd/resolved.conf, tun 인터페이스는 스크립트를 통해 추가한 DNS 값을 표시해야 합니다.

Global
          Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: my.company.com

Link # (tun0)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 103.86.96.100
       DNS Servers: 103.86.96.100 103.86.99.100
        DNS Domain: ~.

이제 VPN에 연결되면 VPN 공급자의 DNS 서버를 사용하지만 연결되지 않으면 LAN DNS 서버로 대체됩니다.

관련 정보