OpenVPN에 연결되어 있지 않은 경우 모든 인터넷 연결을 차단하고 싶습니다. 물론, 이제 VPN 서버에 대한 연결을 허용해야 합니다.
VPN 서버 IP와의 트래픽을 허용하고 모두 제거 규칙을 사용하여 이를 수행할 수 있습니까 iptables
?
iptables
@tachomi가 제안한 솔루션을 시도했지만 규칙을 설정할 때 인터넷에 연결되어 있지 않습니다. iptables-save
상태:
# Generated by iptables-save v1.6.0 on Wed Feb 3 00:53:32 2016
*filter
:INPUT DROP [247:40343]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [153:25961]
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p udp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p udp -j ACCEPT
COMMIT
# Completed on Wed Feb 3 00:53:32 2016
답변1
로컬 연결 및 RELATED, ESTABLISHED
연결 프로토콜을 허용하여 시작하십시오.
$ sudo iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
그러면 인터넷 연결이 가능해집니다.
기본 체인 정책 설정
$ sudo iptables -P INPUT DROP
$ sudp iptables -P OUTPUT DROP
이렇게 하면 모든 유형의 인바운드/아웃바운드 트래픽이 거부됩니다.
VPN 연결을 허용하세요
$ sudo iptables -A INPUT -s [VPN ip connection] -j ACCEPT
$ sudo iptables -A OUPUT -d [VPN ip connection] -j ACCEPT
그러면 VPN 연결이 허용됩니다.
SSH를 통해 연결하는 경우 IP 주소가 로컬 호스트 역할도 하도록 허용해야 합니다.
고쳐 쓰다:
다른 연결 규칙의 경우 허용하면 됩니다.
HTTP를 예로 들어 보겠습니다.
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
개인적인 추천
내가 하는 일은 iptables 규칙의 백업을 사용한 $ sudo iptables-save > iptables_backup
다음 모든 변경 사항에 대해 vim을 사용하여 규칙을 편집하고 iptables 복원을 사용하는 것입니다 $ sudo iptables-restore < iptables_backup
. 이는 반복되는 규칙을 피하기 위한 개인적인 관행일 뿐입니다.