Ubuntu 20.04 Networkmanager OpenVPN: 푸시된 DNS를 허용하지만 모든 트래픽을 tun 인터페이스로 라우팅하지 않음

Ubuntu 20.04 Networkmanager OpenVPN: 푸시된 DNS를 허용하지만 모든 트래픽을 tun 인터페이스로 라우팅하지 않음

저는 새로운 서버 공급자가 제공하는 새로운 OpenVPN 서버에 연결하기 위해 직장에서 일부 Ubuntu 20.04 클라이언트를 확보하려고 합니다.

목표는 특정 트래픽만 터널로 라우팅하고(해당 경로는 OpenVPN 서버에 의해 푸시됨) 클라이언트도 OpenVPN 서버에 의해 푸시된 DNS 서버를 사용하도록 하는 것입니다.

이는 기본적으로 Windows 10 클라이언트 및 OpenVPN GUI 2.5에서 작동합니다. openvpn다음과 같이 터미널에서 (2.4.7)을 사용 sudo openvpn --config config.ovpn하고 다음 클라이언트 구성 파일을 사용하면 잘 작동합니다 config.ovpn.

dev tun
tun-ipv6
persist-tun
persist-key
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
auth SHA256
tls-client
client
resolv-retry infinite
remote <ipadressOfProvider> <port> udp4
verify-x509-name "<name>" name
auth-user-pass
remote-cert-tls server
compress 
# The following is added only in the config for Ubuntu 20.04 
dhcp-option DOMAIN <domainToResolveWithRemoteSiteDNS>
script-security 2
up /etc/openvpn/update-systemd-resolved
up-restart
down /etc/openvpn/update-systemd-resolved
down-pre

network-manager-openvpn(1.8.12) 및 위 구성 파일을 사용할 때 문제가 시작됩니다 . 연결이 설정되고 푸시된 DNS 서버가 systemd-resolved에서 올바르게 업데이트됩니다(openvpn 구성의 추가 up및 스크립트 없이도 ).down

하지만,모두트래픽은 인터페이스로 라우팅되며 tun0, 심지어 공용 트래픽도 마찬가지입니다. 결과는 내가~할 수 있다내부 도메인 이름을 사용해도 원격 사이트의 리소스에 액세스할 수 있지만접근할 수 없다OpenVPN 서브넷에는 직접 인터넷에 액세스할 수 없기 때문입니다.

옵션 변경네트워크의 리소스에만 이 연결을 사용하십시오.ipv4.neverdefault네트워크 관리자에서 openvpn 구성(을 통해 표시된 옵션에 해당 nmcli c show config)은 라우팅 문제를 해결합니다. 이제 푸시된 경로와 관련된 트래픽만 터널로 전달됩니다. 그러나 푸시된 DNS 서버가 /run/systemd/resolve/resolv.conf.

지금까지 푸시된 DNS를 수락하는 옵션을 찾지 못했습니다.그리고네트워크 관리자와 동시에 푸시된 경로와 관련된 트래픽만 라우팅합니다.

지금까지 흥미로운 관찰 내용이 있을 수 있습니다.

1. 노선

Network Manager는 ipv4.neverdefault=no푸시된 경로 외에도 더 낮은 메트릭을 사용하여 두 번째 기본 게이트웨이를 생성합니다.

$ ip route
default via 10.*.*.* dev tun0 proto static metric 50 
default via 192.168.***.** dev wlp3s0 proto dhcp metric 600 
10.*.*.*/24 dev tun0 proto kernel scope link src 10.*.*.* metric 50 
158.***.**.** via 192.168.***.** dev wlp3s0 proto static metric 600 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
172.**.***.*/24 via 10.*.*.* dev tun0 proto static metric 50 
192.168.*.*/24 via 10.*.*.* dev tun0 proto static metric 50 
192.168.*.*/24 via 10.*.*.* dev tun0 proto static metric 50 
192.168.***.*/24 dev wlp3s0 proto kernel scope link src 192.168.***.*** metric 600 
192.168.***.** dev wlp3s0 proto static scope link metric 600 

Network Manager는 ipv4.neverdefault=yes푸시된 경로 외에 두 번째 기본 게이트웨이를 생성하지 않습니다(위와 동일, 첫 번째 줄 없음).

openvpn터미널에서는 푸시된 경로 외에 보조 기본 게이트웨이를 생성하지 않습니다.

default via 192.168.***.** dev wlp3s0 proto dhcp metric 600 
10.*.*.*/24 dev tun0 proto kernel scope link src 10.*.*.* 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
172.**.***.*/24 via 10.*.*.* dev tun0 
192.168.*.*/24 via 10.*.*.* dev tun0 
192.168.*.*/24 via 10.*.*.* dev tun0 
192.168.***.*/24 dev wlp3s0 proto kernel scope link src 192.168.***.*** metric 600 

2. DNS 서버

ipv4.neverdefault=no덮어쓰는 네트워크 관리자 /run/systemd/resolve/resolv.conf:

nameserver 172.**.***.**

네트워크 관리자는 ipv4.neverdefault=yes다음을 수행하지 않습니다.

nameserver 192.168.***.**
nameserver ****:***:****:****::**

openvpn터미널에서추가하다DNS 서버를 기존 서버에 추가하고 다음에 정의된 대로 원격 DNS 서버가 제공하는 도메인 이름을 추가합니다 config.ovpn.

nameserver 192.168.***.**
nameserver ****:***:****:****::**
nameserver 172.**.***.***
search <domainToResolveWithRemoteSiteDNS>

openvpn 터미널 클라이언트처럼 처리하기 위해 네트워크 관리자에서 어떤 옵션을 변경할 수 있는지 알고 계시다면 config.ovpn기꺼이 여러분의 생각을 듣겠습니다.

고마워요, 발렌틴

답변1

몇 가지 추가 "연구"(주로 시행착오) 후에 푸시된 경로의 트래픽만 라우팅하면서 네트워크 관리자를 통해 원격 사이트에 성공적으로 연결할 수 있었습니다.그리고푸시된 DNS 서버를 사용합니다.

  1. 네트워크 관리자에서 VPN 연결을 다음과 같이 설정합니다 neverdefault(OP에서 이미 설명한 대로).

    nmcli c modify <connectionname> ipv4.never-default yes

  2. dns-search원격 사이트의 내부 도메인에 대한 연결 설정 :

    nmcli c modify <connectionname> ipv4.dns-search <domainname>

이 옵션을 사용하면 네트워크 관리자가 어떻게든 DNS 서버를 run/systemd/resolve/resolv.conf다시 추가하게 됩니다(추가하다, 덮어쓰지 않음), ipv4.never-default활성 상태임에도 불구하고.

또는 덮어쓰기로 인해 푸시된 DNS 서버가 모든 DNS 요청에 응답하는 유일한 서버가 되도록 <domainname>대체할 수 있습니다 .~.run/systemd/resolve/resolv.conf

답변2

@발렌틴 감사합니다!
귀하의 솔루션이 자리 잡았습니다!
내 경우에는 gnome-network-manager openvpn 옵션을 사용하여 20.04 서버에 연결하는 Ubuntu 20.04 클라이언트를 사용하는 경우 dns-search를 설정할 필요가 없었습니다. 기본값이 아닌 옵션만 사용했습니다.
폴더/네트워크(삼바) 연결을 허용하려면 다음과 같이 서버에 있는 smb.conf 파일의 "네트워킹" 지시문 아래에 있는 "인터페이스" 옵션을 편집해야 했습니다.

interfaces = 127.0.0.0/8 eth0
interfaces = 127.0.0.0/8 enp2s0
interfaces = X.X.X.X/XX enp2s0

XXXX/XX가 동일한 openvpn 서버에 의해 할당될 IP 주소 범위의 CIDR 표기법으로 마지막 줄에 추가되었습니다.

관련 정보