안녕하세요, 저는 PiHole과 PiVPN이 동시에 구동되는 Raspberry Pi를 사용하고 있습니다.
PiVPN은 PiHole 설치 이후에 설치되었고, 설정 옵션에서 Pi Hole을 DNS 서버로 선택했습니다. VPN에 Setup하고 연결하면 PiHole 콘솔이 즉시 뜨지만, 다른 서비스와 인터넷 브라우징이 작동하지 않습니다. PiHole 콘솔은 VPN을 통해서 잘 작동합니다.
setupvars.conf 파일을 수정해서 LAN IP 주소를 수동으로 추가했지만 여전히 해결되지 않습니다.
한 가지 강조하고 싶은 점은, 포트 포워딩이 두 번 설정되어 있다는 점입니다. 하나는 ONT 장치에서 라우터로, 다른 하나는 라우터에서 내부 네트워크의 Raspberry Pi로 합니다.
몇 일 전까지만 해도 pivpn이 제대로 작동했는데, 갑자기 작동이 멈췄습니다. 다시 설치했지만, 설치하는 동안 google.com까지 정상적으로 ping이 되었습니다. 최종 재부팅 후에는 ssh 접속이 끊기고 (연결 거부됨), ping도 "ping: google.com: 일시적인 이름 해석 실패"가 됩니다.
pivpn -d 명령을 실행하고 IP 마스커레이드와 포워딩 규칙을 추가하세요. 오류를 식별하고 수정할 수 있도록 제안합니다. 예를 선택하여 문제를 수정하세요.
만약 기본적으로 DNS로 pihole을 사용한다면, Pihole은 특정 인터페이스(eth0 또는 wlan0)에서만 듣도록 설정되어 있습니다. 이때 pivpn은 새 인터페이스를 열게 됩니다. Pi Hole DNS 설정에서 모든 인터페이스에서 듣도록 선택하면 브라우징이 가능해집니다.
정말 감사합니다. 이 조언 덕분에 모든 것이 해결됐어요! 디버깅 스크립트를 만든 사람들에게 큰 찬사를 보냅니다.
Chat GPT가 유용하게도 IP 마스커레이드 목적을 설명해줬어요:
PiVPN 맥락에서, IPTables 마스커레이드란 VPN 트래픽에 대한 NAT(네트워크 주소 변환)를 활성화하는 것을 의미합니다. 이는 VPN 서버가 클라이언트에게 사설 IP 주소를 할당하고, 클라이언트들이 VPN 서버의 공인 IP를 통해 외부 네트워크(인터넷 포함)와 통신할 필요가 있을 때 필요합니다.
IPTables 마스커레이드가 하는 일은 다음과 같습니다:
NAT 변환: VPN 클라이언트가 외부 네트워크로 트래픽을 보낼 때, VPN 서버는 패킷의 출발지 IP를 자신의 공인 IP로 재작성해야 합니다. 이를 통해 NAT 변환이 수행됩니다.
내부 네트워크 감추기: 마스커레이드는 VPN 클라이언트의 내부 IP를 외부 네트워크에서 숨깁니다. 이는 VPN 클라이언트의 프라이빗 IP를 외부에서 바로 접근하는 것을 방지하는 추가적인 보안층입니다.
응답 트래픽 처리: 외부 네트워크가 VPN 클라이언트 요청에 응답할 때, VPN 서버는 응답 패킷을 받아 대응하는 클라이언트 내부 IP로 목적지 IP를 재작성합니다. 이를 통해 응답 패킷이 정확히 원래 요청한 클라이언트에게 전달됩니다.
인터넷 접속 허용: 마스커레이드를 통해 VPN 클라이언트는 VPN 서버의 공인 IP를 통해 인터넷에 접속할 수 있습니다. 마스커레이드 없이는, VPN 클라이언트는 자체 사설 IP로 외부 네트워크에 접속할 수 없습니다.
요약하면, IPTables 마스커레이드가 PiVPN에서 VPN 클라이언트와 외부 네트워크 간의 원활한 통신과 NAT 변환을 담당하여, 클라이언트 IP를 숨기고 적절한 라우팅을 가능하게 하는 데 필수적입니다.