OpenVPN, resolvconf 및 DNS 도메인 확인

OpenVPN, resolvconf 및 DNS 도메인 확인

site1에 있는 동안 OpenVPN을 통해 site2에 연결해야 합니다. 연결되면 OpenVPN site2는 DNS 이름 서버와 도메인 검색 옵션을 푸시합니다. 이로 인해 site1에 대한 모든 이름 확인이 실패합니다.

예:

  1. 물리적 연결은 site1에서 이루어지며 DHCP는 DNS 옵션을 푸시하고 resolvconf가 이를 관리합니다.
    /etc/resolv.conf

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 172.16.1.101
    nameserver 172.16.1.102
    search site1.internal.domain
    
  2. site2에 대한 OpenVPN 터널을 열면 OpenVPN은 site2의 dhcp 옵션 DNS 및 DOMAIN을 푸시하고 /etc/openvpn/update-resolv-conf이를 resolvconf에 푸시합니다.
    /etc/resolv.conf

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 192.168.1.5
    nameserver 172.16.1.101
    nameserver 172.16.1.102
    search site2.internal.domain site1.internal.domain
    
  3. DNS 확인은 server.site2.internal.domain에서는 작동하지만 server.site1.internal.domain에서는 작동하지 않습니다.

site21에 대한 실패한 DNS 요청을 site1 DNS 서버로 전달하는 방법이 있습니까? 아니면 site2.internal.domain에 대한 쿼리만 site2 네임서버로 전달하도록 resolvconf를 구성하시겠습니까?

나는 site1에서 Ubuntu 14.04 시스템을 사용하고 site2의 OpenVPN 서버는 pfSense 2.2 상자입니다. 저는 두 사이트를 모두 관리하므로 둘 중 하나를 변경하는 것은 문제가 되지 않습니다. 두 도메인 모두 비공개이며 내부 용도로만 사용됩니다.

답변1

스크립트에 의해 변경된 내용을 모니터링하고 다음에서 다운로드할 수 있도록 /etc/resolv.conf로컬 캐시 서버를 설정할 수 있습니다.resolvconf모두이름 서버가 여기에 나열됩니다.

많은 시스템에서 설치DNSresolvconf를 제외한 패키지.

no-resolvno-poll지시문이 없고 인터페이스가 on top 인 /etc/dnsmasq.conf경우 기본값 은 "작동"해야 합니다. 업스트림 이름 서버가 확인할 수 없는 주소에 대해 임의의 IP를 반환하는 경우 dnsmasq.conf가 도움이 될 수 있습니다. 을 보여 주시면 됩니다 .lo/etc/resolvconf/interface-orderstrict-order/etc/resolv.confnameserver 127.0.0.1

고정된 설정을 선호하거나 관련되지 않은 여러 네트워크에 연결하고 개인 네트워크 이름이 모든 이름 서버에 노출되는 것을 방지하려면 도메인을 기반으로 특정 서버를 쿼리하도록 dnsmasq를 구성해야 합니다.

# /etc/dnsmasq.conf

# site1 servers
nameserver=/site1.internal.domain/172.16.1.101
nameserver=/site1.internal.domain/172.16.1.102

# site2 servers
nameserver=/site2.internal.domain/192.168.1.5

# default OpenNIC (optional, unless 'no-resolv' is set). 
server=51.15.98.97
server=172.104.136.243

dnsmasq 옵션에 대한 자세한 내용은 여기를 참조하세요. http://oss.segetech.com/intra/srv/dnsmasq.conf

답변2

아직 Ubuntu에서는 이것을 시도하지 않았지만 openresolv 및 dnsmasq를 사용하여 Arch Linux에서 유사한 설정을 얻을 수 있었습니다.

모든 변경 사항은 VPN 클라이언트 컴퓨터에서 이루어집니다. VPN 서버에는 DNS 이름 서버와 도메인 검색 옵션이 이미 포함되어 있으므로 변경할 필요가 없습니다.

  1. VPN에 연결된 경우 resolvconf -l모든 resolv.conf 파일 보기를 사용하세요. VPN 인터페이스의 resolvconf 이름("resolv.conf from X"의 X)을 찾습니다. 제 경우에는 그렇습니다. tun0나머지 구성에서도 이를 사용하겠습니다.
  2. dnsmasq 설치
  3. /etc/resolvconf.conf다음 옵션을 추가하려면 편집하세요 .

    private_interfaces=tun0
    name_servers="::1 127.0.0.1"
    dnsmasq_conf=/etc/dnsmasq-conf.conf
    dnsmasq_resolv=/etc/dnsmasq-resolv.conf
    
  4. /etc/dnsmasq.conf다음 옵션을 추가하려면 편집하세요 .

    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf
    
  5. resolvconf -udnsmasq 구성 파일을 생성하려면 실행하세요 .

  6. dnsmasq서비스를 시작 하고 부팅 시 시작되도록 구성합니다. Arch에서는 다음 명령을 실행하여 이 작업을 수행합니다.

    systemctl start dnsmasq.service
    systemctl enable dnsmasq.service
    

name_servers옵션은 resolvconf에게 해당 네임서버만 나열하도록 지시합니다 /etc/resolv.conf(즉, 로컬 dnsmasq 인스턴스를 가리킵니다). 이 옵션은 resolvconf에게 dnsmasq 구성 파일 dnsmasq_에 기록될 /etc/resolv.conf네임서버를 쓰 도록 지시합니다.

private_interface옵션은 이 인터페이스(VPN)에서 제공하는 이름 서버가 이 행에 지정된 도메인 중 하나에서 호스트 이름을 확인할 때만 사용되어야 함을 resolvconf에 지시합니다 search. 이를 달성하기 위해 적절한 dnsmasq 구성이 생성됩니다.

이 구성을 사용하면 site2.internal.domain 아래의 호스트에 대한 요청은 192.168.1.5로 이동해야 하고 다른 모든 요청은 172.16.1.101 또는 172.16.1.102로 이동해야 합니다.

시스템이 IPv6를 사용하지 않는 경우 옵션에서 ::1을 제거하십시오 name_servers.

답변3

resolv.conf에는 사용 가능한 모든 DNS 서버가 나열됩니다. 목록의 첫 번째 항목이 실행 중이면 모든 쿼리가 해당 항목으로 전송됩니다. 첫 번째 것이 실패하지 않는 한, 다른 것에는 아무런 영향을 미치지 않습니다. 따라서 목록의 첫 번째 DNS 서버가 작동 중이고 답을 알고 있으면 "알고 있어요!"라고 대답하고, 그렇지 않으면 "죄송하지만 모르겠습니다..."라고 말할 것입니다. 그게 다야. site1의 모든 항목을 192.168.1.5(site2의 DNS 서버)에 알려야 하며 그 반대의 경우도 마찬가지입니다. 인사

관련 정보