다른 인터페이스(VPN) 네트워크의 DNS를 사용하여 한 인터페이스(wlan0) 요청 해결

다른 인터페이스(VPN) 네트워크의 DNS를 사용하여 한 인터페이스(wlan0) 요청 해결

내가 달성하려는 것:

내 트래픽을 라우팅하지 않지만 공용 서버를 "브리지"로 사용하여 인터넷 내에서 내 라즈베리 파이에 연결할 수 있게 해주는 WireGuard 역방향 VPN 설정이 있습니다.

라즈베리파이에 파이홀을 설치해봤습니다. 이제 실제 장치에서 실제 HTTP 요청을 보내는 동안 pi를 DNS(WireGuard를 통해)로 사용하고 싶습니다.

기본적으로 다음과 같이 작동하기를 원합니다.

192.168.0.x(wlan0@localhost)가 URL을 요청합니다. DNS @192.168.66.z(pihole)는 URL을 확인하고 IP를 다시 192.168.66.y(wg0@localhost)로 보냅니다. 그런 다음 이 응답은 192.168.0.x(wlan0@localhost)에서 HTTP 요청을 보내는 데 사용됩니다.

내가 시도한 것:

분명히 저는 파이의 VPN-IP를 NetworkManager에 입력하려고 했습니다. 내 Ubuntu( 5.4.0-42-generic #46~18.04.1-Ubuntu)가 항상 기본 DNS(VPN DNS가 작동하더라도 내가 원하지 않는 것)로 돌아가기 때문에 이로 인해 약간의 두통이 생겼습니다 . 다음에서 제공하는 해결 방법을 찾았습니다.user2427436 . 에서그래서 여기에 스레드가 있습니다..

문제는 무엇입니까:

(라우터/기본 DNS로 돌아가지 않고) DNS를 강제로 사용할 수는 있지만 파이홀을 DNS로 사용할 수는 없습니다. 터널(예: HTTP, SSH 등)을 통해 pi에 연결할 수 있으며 방화벽에서 포트 53(DNS용)이 열립니다. 여전히 도메인 이름을 확인할 수 없습니다. 또한 journalctl -xe파이를 확인하면 장치가 연결/해결을 시도했다는 힌트가 표시되지 않습니다.

이것이 작동하지 않는 이유와 작동 방식을 정말로 이해하고 싶습니다. DNS 작동 방식에 대해 뭔가 빠진 것 같습니다.

여기서 확인해야 할 올바른 로그 파일은 무엇입니까? 다음에 시도해야 할 제안이 있습니까?

편집하다:

DNS는 네트워크 장치별로 설정됩니다. 내 wlan0 장치 @192.168.0.0\24는 wg0 장치와 해당 주소 공간 @192.168.66.0\24에 대해 알고 있습니까? wg0을 통해 DNS를 사용하여 wlan0의 요청을 해결하려고 시도하는 것이 문제의 원인일 수 있습니까? 그렇다면 어떻게 해결해야 할까요?

답변1

이 문제를 해결하는 데는 다양한 측면이 있습니다.

  1. 올바른 라우팅을 위한 IP 규칙 추가
  2. 이름 확인 테스트
  3. 비활성화/조정 해결됨

단계별로:

첫 번째 단계는 Pi에 도달할 수 있는지 확인하는 것입니다. 라우팅이 어떤 인터페이스를 통과하는지 확인해야 합니다. 다음 테스트를 사용할 수 있습니다.

traceroute -i <interface name> -p 53 192.168.66.z

시스템에서 사용 가능한 인터페이스로 교체합니다. 예상 결과: Traceroute는 wg0 인터페이스에서는 작동하지만 아마도 다른 인터페이스에서는 작동하지 않을 것입니다.

소스 IP를 사용하여 동일한 테스트를 수행할 수 있습니다.

traceroute -s <sourceIP> -p 53 192.168.66.z

로컬 호스트의 로컬 IP로 교체 예상 결과: Traceroute는 아마도 wg0의 IP 주소에서는 작동하지만 다른 인터페이스의 IP 주소에서는 작동하지 않을 것입니다.

위의 두 가지가 어떤 인터페이스나 주소에서도 작동하지 않으면 공용 "브리지"의 라우팅 부분에 결함이 있는 것입니다.

첫 번째 단계가 예상대로 작동한다고 가정하면 다음 단계는 올바른 인터페이스를 통해 DNS 요청에 대한 트래픽을 라우팅하도록 OS에 지시하는 것입니다. 이전 단계에서 파이홀에 대한 작업 경로를 제공하는 인터페이스의 이름으로 바꿉니다.

DNS 요청에 대한 새 라우팅 테이블(예: "dns")을 생성하고 모든 DNS 요청(대상 포트 53)을 라우팅하여 다른 인터페이스를 통과하도록 OS에 지시합니다.

echo "10 dns" >>/etc/iproute2/rt_tables
ip rule add pref 10 dport 53 table dns
ip route add default via 192.168.66.z dev <DNSInterface> table dns
ip route flush cache

먼저 pihole 주소를 명시적으로 지정하여 DNS 확인이 작동하는지 확인하십시오.

nslookup www.serverfault.com 192.168.66.z

예상 결과: DNS 쿼리가 잘 진행됩니다. 그렇지 않은 경우 위의 인터페이스와 IP 주소 및 VPS의 라우팅 규칙을 다시 확인해야 합니다.

마지막으로 해결을 처리해야 합니다. 내 제안은 확인을 끄고 pihole DNS를 직접 사용하는 것입니다.

systemctl stop systemd-resolved
systemctl disable systemd-resolved.service
mv /etc/resolv.conf /etc/resolv.conf.securitycopy

추가하다

dns=default

아래 [main]/etc/NetworkManager/NetworkManager.conf

systemctl restart NetworkManager

네트워크 인터페이스 속성의 DNS 서버 IP를 pihole 주소로 변경하세요.

DNS 확인 테스트:

nslookup www.serverfault.com

이제 시스템에 다음과 같은 변경 사항이 적용되었습니다.

  1. DNS 요청(대상 포트 53)은 다른 인터페이스를 통해 라우팅됩니다.
  2. 확인됨이 비활성화되어 있으며 DNS 확인이 DNS 서버로 직접 이동합니다.
  3. DNS 서버는 파이홀의 IP로 설정됩니다.

작동하는지 알려주세요.

관련 정보