LAN에 있는 컴퓨터가 DNS 쿼리를 수행하는 것을 금지하는 방법은 무엇입니까? (PC -> VPN 게이트웨이 시나리오)

LAN에 있는 컴퓨터가 DNS 쿼리를 수행하는 것을 금지하는 방법은 무엇입니까? (PC -> VPN 게이트웨이 시나리오)

시나리오: LAN에서 이더넷을 통해 서로 연결된 두 대의 컴퓨터가 있는데, 그 중 하나는 다른 컴퓨터의 트래픽을 VPN 서비스로 터널링하는 게이트웨이로 구성되어 있습니다. 모든 것이 작동하는 것 같습니다. 트래픽은 VPN 서비스를 통해 터널링되며 게이트웨이가 VPN에 연결되어 있으면 DNS 누출이 없습니다. 그러나 VPN 연결을 끊으면 로컬 네트워크의 다른 컴퓨터를 통해 인터넷에 대한 다른 연결을 설정할 수 없더라도 어떻게든 DNS 쿼리를 수행할 수 있습니다.

이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? DNS 쿼리는 VPN 연결이 설정된 경우에만 허용됩니다. 편집: (그리고 VPN의 DNS 서버를 통해서만 가능합니다. VPN 연결을 끊으면 게이트웨이에 바인드9 서버가 구성되어 있어도 DNS 요청이 내 ISP의 DNS 서버를 통해 이루어진다고 생각합니다. 그러나 제가 틀렸을 수도 있습니다.)

게이트웨이에서 내가 한 일은 다음과 같습니다. ipv4 전달 및 일부 iptables 규칙을 설정했습니다.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

또한 바인드9 서버를 설치하고 DNS 쿼리를 VPN DNS로 전달하도록 구성했습니다(DNS 누출이 있었기 때문에).

내 생각엔 위의 규칙을 따르지 않는 모든 네트워크 트래픽을 삭제해야 할 것 같습니다.

예를 들어

sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP

하지만 그것은 나에 대한 연결을 완전히 파괴했습니다. 어떤 아이디어가 있나요?

답변1

VPN으로 전송되지 않은 모든 DNS 쿼리를 제거합니다. DNS는 UDP 포트 53 또는 TCP 포트 53을 사용할 수 있습니다.

iptables -A FORWARD -i eth0 ! -o tun0 -p udp --dport 53 -j DROP
iptables -A FORWARD -i eth0 ! -o tun0 -p tcp --dport 53 -j DROP

대상 포트 53 이외의 인터페이스에서 들어오고 나가려는 모든 eth0패킷은 삭제됩니다.tun0

분석을 위해 패킷을 삭제하기 전에 패킷을 기록할 수 있습니다.

REJECT대신 DROP고객에게 답변을 기다리지 말라고 알리는 데 사용할 수 있습니다 .

트래픽을 차단하기 위해 포트 53뿐만 아니라 모든 패킷을 삭제하거나 거부할 수 있습니다.

관련 정보