OpenVPN 클라이언트그리고시스템 솔루션.
OpenVPN 클라이언트를 실행하면 연결되어 대상 리소스를 올바르게 로드할 수 있습니다.처음 부팅하는 동안에만, 다시 시작한 후. 이후의 모든 시작에서는 여전히 "초기화 순서 완료"로 연결되지만 리소스는 로드되지 않습니다.
몇 번의 시행착오 끝에 이것이 DNS 관련 문제라는 것을 알게 되었습니다.
sudo resolvectl status
===>
# 1st launch
Link 6 (tun0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.1.1.7
DNS Servers: 10.1.1.7
DNS Domain: aaa.xyz
# all other ones
Link 6 (tun0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
DNS Domain: aaa.xyz
나는 치료법을 찾았습니다:
sudo systemd-resolve -i tun0 \
--set-dns=10.1.1.7 \
--set-domain=aaa.xyz \
--set-dnssec=off
실행해야 함OpenVPN이 다시 시작될 때마다.
자동으로 실행되게 하려면 어떻게 해야 하나요?
아니면 오히려 - 왜 이런 일이 발생합니까? OpenVPN 설정 방법올바른 DNS자동으로?
컴퓨터를 다시 시작한 후 처음에만 올바르게 설정되는 이유는 무엇입니까?
답변1
그러나 OpenVPN이 DNS를 구성할 수 있도록 후크를 추가할 수 있습니다 systemd-resolved
.
~에서https://github.com/jonathanio/update-systemd-resolved, update-systemd-resolved
스크립트를 잡고 실행 가능으로 표시하십시오.
$ sudo wget -O /usr/local/bin/update-systemd-resolved \
https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved \
&& sudo chmod +x /usr/local/bin/update-systemd-resolved
그런 다음 OpenVPN 클라이언트 구성에 다음을 추가하십시오.
# /etc/openvpn/client/<your config file>.conf
...
script-security 2
setenv PATH /usr/bin
up /usr/local/bin/update-systemd-resolved
down /usr/local/bin/update-systemd-resolved
down-pre
OpenVPN이 루트가 아닌 사용자로 실행 중인 경우(기본적으로 true) OpenVPN이 DBus와 상호 작용할 수 있도록 허용하는 PolicyKit 규칙을 추가해야 합니다.
# /etc/polkit-1/rules.d/00-openvpn-resolved.rules
polkit.addRule(function(action, subject) {
if (action.id == 'org.freedesktop.resolve1.set-dns-servers' ||
action.id == 'org.freedesktop.resolve1.set-domains' ||
action.id == 'org.freedesktop.resolve1.set-dnssec') {
if (subject.user == 'openvpn') {
return polkit.Result.YES;
}
}
});
OpenVPN 인스턴스가 첫 번째 실행에서 DNS를 구성하고 후속 실행에서 DNS를 구성하지 못하는 데에는 여러 가지 이유가 있을 수 있습니다. 진실을 밝히기 위해서는 더 많은 조사가 필요합니다.