OpenVPN에서 사용자 정의 호스트 이름에 dnsmasq를 사용하는 방법은 무엇입니까?

OpenVPN에서 사용자 정의 호스트 이름에 dnsmasq를 사용하는 방법은 무엇입니까?

OpenVPN 서버를 통해 사용자 정의 호스트 이름을 생성할 수 있도록 dnsmasq를 설정하려고 합니다. 따라서 컴퓨터가 연결될 때 호스트 이름은 OpenVPN 호스트 또는 네트워크에 있는 리소스를 가리킵니다.

예를 들어 서버의 /etc/hosts 파일은 다음과 같습니다.

db.private.resource 10.8.0.1
app.private.resource 10.8.0.1

클라이언트가 DNS 조회를 위해 터널을 사용하도록 하는 것은 매우 간단합니다. server.conf 파일에는 다음이 있습니다.

push "dhcp-option DNS 10.8.0.1"

그리고 클라이언트 구성에는 다음이 있습니다.

dhcp-option DNS 10.8.0.1

그리고 다음을 실행하여 연결 시 클라이언트가 OpenVPN을 DNS로 사용하고 있는지 확인할 수 있습니다.

# dnsmasq --no-daemon -q

명령줄에서 클라이언트로부터 ping을 실행하여 클라이언트가 실제로 터널을 통해 OpenVPN 서버에 DNS 조회 요청을 보내고 있는지, 그리고 OpenVPN 서버가 실제로 요청을 처리하고 있는지 확인합니다.

문제는 db.private.resource내가 정의한 호스트에 대해 ping을 시도할 때 다음과 같은 결과가 나온다는 것입니다.

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

dnsmasq의 출력에서. 그래서 어떤 이유로든 /etc/hosts에 정의한 값을 반환하지 않는 것 같습니다. 그리고 제가 놀란 점은 주소 매개변수를 추가하여 dnsmasq를 실행해도 여전히 위와 같은 결과가 나온다는 것입니다.

# dnsmasq --no-daemon -q --address=/db.private.resource/10.8.0.1/

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

이 결과에서 뭔가 이상해 보이는 것이 있나요?

답변1

먼저 dnsmasq를 설치하세요: sudo apt-get update; sudo apt-get install dnsmasq.

섬기는 사람

서버에서 다음 줄을 다음 줄에 추가하세요 /etc/dnsmasq.conf.

...
expand-hosts #Uses /etc/hosts on this machine for resolution
bind-interfaces #will bind on all available interfaces, including the openvpn one
listen-address=10.8.0.1 # i noticed recently that i also need to add this line, because by default it will only listen on 10.9.0.1 which isnt pushed to my clients
...

그런 다음 /etc/hosts호스트 이름으로 파일을 편집하십시오. 마지막으로 sudo /etc/init.d/dnsmasq restart.

/etc/hosts어떤 이유로 든 편집하고 싶지 않은 경우 에 새 파일을 만들고 /etc/dnsmasq.conf.d/addresses.conf주소를 입력할 수 있습니다.

address=/umomma.com/69.69.69.69
address=/oo.umomma.com/69.69.69.60
address=/ooooo.umomma.com/69.69.69.62
address=/ooooooooo.umomma.com/69.69.69.65

이 두 번째 방법을 사용하면 이후에도 실행하고 싶을 것입니다 sudo /etc/init.d/dnsmasq restart.

고객

OpenVPN 서버는 일반적으로 IP 주소 10.8.0.1또는 10.9.0.1. 따라서 클라이언트에서는 해당 네임서버를 먼저 쿼리해야 합니다.

적어도 지금은 /etc/resolv.conf클라이언트에서 편집하여 nameserver 10.8.0.1파일의 첫 번째 줄 앞에 추가했습니다. 따라서 클라이언트에서 내 전체 해결.conf는 다음과 같습니다.

nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1

재부팅 시 이러한 변경 사항을 마지막으로 적용하려면 에서도 동일하게 변경하십시오 /etc/resolvconf/resolv.conf.d/head.

또한

sudo /etc/init.d/dnsmasq restart서버에 호스트를 추가할 때 실행하는 것을 잊지 마세요.

관련 정보