iptables를 사용하여 VPN만 허용하는 방화벽 설정

iptables를 사용하여 VPN만 허용하는 방화벽 설정

저는 openVPN과 함께 IPredator VPN을 사용하고 있으며, 연결이 끊어지면 VPN 없이 인터넷에서 데이터를 제출하지 않도록 하고 싶습니다. iptables와 Scope를 사용하여 이 작업을 수행할 수 있다고 들었습니다. 어떻게 해야 하나요? VPN이 나에게 할당한 IP 범위를 어떻게 찾을 수 있나요?

답변1

VPN을 시작하기 전에 netstat -rnifconfig -a. VPN을 시작하면 이 두 명령의 차이점을 통해 VPN이 라우팅 측면에서 생성한 네트워크와 해당 네트워크에 대한 가시성을 확보하기 위해 할당된 IP를 알 수 있습니다. 또한 VPN(또는 트래픽)을 제공하는 서버의 IP를 가져와야 합니다.도착하다VPN 서버는 이에 액세스할 수 없습니다.) 또한 VPN 서버가 udp대신 를 사용한다고 가정합니다 tcp. 그렇다면 tcp이를 반영하기 위해 두 번째 규칙을 업데이트해야 합니다.

이것이 있으면 OUTPUTiptables에 규칙을 추가하여 호스트가 볼 수 있는 내용을 설정할 수 있습니다.

 iptables -F OUTPUT
 iptables -I OUTPUT -d VPNSERVER -p udp -j ACCEPT -m comment --comment "Allow traffic to VPN SERVER"
 iptables -I OUTPUT -s VPNIP -d VPNNETWORK/CIDR -j ACCEPT -m comment --comment "Allow all traffic to VPN newtork"
 iptables -I OUTPUT -j DROP -m comment --comment "Drop all other traffic"

iptables -F OUTPUT기존 규칙을 새로 고치고 이 점에 유의하되 원래 질문에서 요구한 대로 수행하십시오.

VPNSERVER이것이 VPN 서버의 IP가 됩니다. VPNIPVPN이 귀하에게 할당한 IP입니다. 다음과 유사한 VPNNETWORK/CIDR라우팅된 네트워크 에 존재합니다 .netstat -rn10.1.0.0/24

이러한 규칙을 디버깅할 때 일부 프로토콜에는 추가 처리가 필요할 수 있으므로 제거되는 항목을 기록하는 것이 편리할 수 있습니다.

 iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 

OUTBOUND이는 PC에서 인터넷으로의 트래픽을 차단하고 VPN 서버와 VPN 서버가 제공하는 네트워크에만 트래픽이 도달하도록 허용하기에 충분합니다 .

OP는 Arch Linux에는 netstat또는 ifconfig. 이 경우 대안은 다음과 같습니다.

ip addr show인터페이스가 제공되고 ip route show현재 가지고 있는 경로가 표시됩니다.

관련 정보