%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98%20DNS%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%95%9C%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4(wlan0)%20%EC%9A%94%EC%B2%AD%20%ED%95%B4%EA%B2%B0.png)
내가 달성하려는 것:
내 트래픽을 라우팅하지 않지만 공용 서버를 "브리지"로 사용하여 인터넷 내에서 내 라즈베리 파이에 연결할 수 있게 해주는 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
이 문제를 해결하는 데는 다양한 측면이 있습니다.
- 올바른 라우팅을 위한 IP 규칙 추가
- 이름 확인 테스트
- 비활성화/조정 해결됨
단계별로:
첫 번째 단계는 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
이제 시스템에 다음과 같은 변경 사항이 적용되었습니다.
- DNS 요청(대상 포트 53)은 다른 인터페이스를 통해 라우팅됩니다.
- 확인됨이 비활성화되어 있으며 DNS 확인이 DNS 서버로 직접 이동합니다.
- DNS 서버는 파이홀의 IP로 설정됩니다.
작동하는지 알려주세요.