추가 읽기

추가 읽기

NetworkManager를 사용하여 원격 VPN에 연결하고 Xubuntu 20.4에서 openconnect(Cisco Anyconnect)를 연결합니다. VPN 내부 서비스에 대한 DNS 확인을 제외하고 모든 것이 잘 작동합니다.

원격 VPN 게이트웨이는 다음 syslog 출력에 표시된 대로 개인 DNS 서버를 전달합니다(약간 단축되고 익명 처리됨).

... NetworkManager[701]: <info>  [..] vpn-connection[...]: VPN connection: (IP Config Get) reply received.
... NetworkManager[701]: <info>  [..] vpn-connection[...]: VPN connection: (IP4 Config Get) reply received
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: VPN Gateway: 195.xxx.xxx.xxx
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: Tunnel Device: "vpn0"
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: IPv4 configuration:
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Internal Address: 10.57.0.188
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Internal Prefix: 8
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Internal Point-to-Point Address: 10.57.0.188
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Static Route: 10.0.0.0/8   Next Hop: 0.0.0.0
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Internal DNS: 10.240.4.62
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   Internal DNS: 10.240.4.60
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data:   DNS Domain: 'xxx.yyy.global'
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: No IPv6 configuration
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: Login Banner:
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: -----------------------------------------
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: xxxx
... NetworkManager[701]: <info>  [..] vpn-connection[...]: Data: -----------------------------------------
... NetworkManager[701]: <info>  [..] vpn-connection[...]: VPN plugin: state changed: started (4)
... NetworkManager[701]: <info>  [..] vpn-connection[...]: VPN connection: (IP Config Get) complete

NetworkManager는 DNS 서버 주소와 DNS 도메인을 systemd-resolved로 올바르게 전달합니다.

% systemd-resolve --status
Global
[...]

Link 3 (vpn0)
      Current Scopes: DNS                
DefaultRoute setting: yes                
       LLMNR setting: yes                
MulticastDNS setting: no                 
  DNSOverTLS setting: no                 
      DNSSEC setting: no                 
    DNSSEC supported: no                 
  Current DNS Server: 10.240.4.62        
         DNS Servers: 10.240.4.62        
                      10.240.4.60        
          DNS Domain: xxx.yyy.global

Link 2 (ens33)
[...]        

그러나 VPN에서 해결되어야 하는 URL을 ping하려는 경우 작동하지 않습니다.

% ping foo.bar.com
ping: foo.bar.com: Name or service not known

Wireshark를 사용하여 상황을 확인하고 DNS 쿼리에 문제가 있는지 찾아보세요. 이유는 모르겠지만 systemd-resolved는 query 가 아니라 "DNS 도메인"(실제로는 확실하지 않음)에서 나온 foo.bar.com쿼리 입니다.foo.bar.com.xxx.yyy.global

와이어샤크 스크린샷

다른 시스템(동료)에서는 DNS 쿼리가 제대로 작동합니다(DNS 도메인이 연결되지 않음). 중요한 차이점은 (제 생각에는) 그는 resolvconf대신 에 에 대한 심볼릭 링크가 있기 systemd-resolved때문에 그런 것 같습니다 ./etc/resolv.conf/run/resolvconf/resolv.conf/run/systemd/resolve/stub-resolv.con

누군가 systemd-resolved에서 무슨 일이 일어나고 있는지, 또는 올바른 DNS 쿼리를 생성하도록 구성할 수 있는 방법을 설명해 줄 수 있습니까?

답변1

%핑 foo.bar.com 

이는 사람이 읽을 수 있는 정규화된 도메인 이름 형식이 아닙니다. 사람이 읽을 수 있는 형식에서 정규화된 도메인 이름은 마침표로 끝납니다. 도메인 이름 시스템 자체는 항상 정규화된 도메인 이름에 대해 (가상으로) 작동합니다. 따라서 애플리케이션에 연결된 DNS 클라이언트 라이브러리는 사용자가 애플리케이션에 제공한 이름을 DNS 조회에 사용하기 전에 정규화된 이름으로 변환합니다. 여기에서 다루기에는 너무 많은 방법으로 이 작업을 수행합니다. 특정 시스템에서 한 가지 방법은 구성된 "도메인" 접미사를 추가하는 것입니다.

%핑 foo.bar.com. 

이것이 정규화된 도메인 이름을 ping프로그램에 전달하는 방법입니다.

추가 읽기

관련 정보