OpenVPN이 실행되고 있지 않으면 나가는 연결을 끊는 킬 스위치가 필요합니다. 그렇지 않으면 VPN이 의미가 없기 때문에 연결이 끊어지고 연결이 있으면 실제 IP가 해제됩니다.
1.2.3.4는 VPN 서버 주소이고 킬 스위치 스크립트를 실행 한 후 내 iptables라고 가정 해 보겠습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- 255.255.255.255 anywhere
ACCEPT all -- 192.168.0.0/16 192.168.0.0/16
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere 255.255.255.255
ACCEPT all -- 192.168.0.0/16 192.168.0.0/16
DROP all -- anywhere !1.2.3.4
이모 그것은 잘 작동합니다. 그러나 로컬 트래픽이 진행되는 동안 인터넷에 연결할 수 없습니다. 이 구성에 문제가 있습니까?
이 상황에서 내 컴퓨터는 Raspberry Pi 3이며 OpenVPN over TCP를 사용하고 있으며 Fritz.Box가 WAN에 연결되어 있습니다.
오류가 보입니까? 내 스크립트는 다음과 같습니다
#!/bin/bash
# check that OpenVPN is actually running.
running=$(ps -e | grep openvpn)
if [ $? -eq 1 ]; then
echo "No active VPN session found."
exit 1
fi
iptables -F
# Get WAN IP
WAN_IP=$(wget -q -O - http://ipecho.net/plain)
# Configure IPTable rules
# Change eth0 to wlan0 (or whatever network interface is being used) for wireless
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 255.255.255.255 -j ACCEPT
iptables -A INPUT -s 255.255.255.255 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A OUTPUT -o eth0 ! -d $WAN_IP -j DROP
https://github.com/qbwaggle/vpnkillswitch/blob/master/vpnkillswitch.sh , https://www.reddit.com/r/VPN/comments/43djk3/generic_kill_switch_script_for_openvpn_linux/ 소스로 구성되어 있습니다.
이 스크립트도 직접 시도했지만 작동하지 않습니다 (동일한 오류라고 생각합니까?).
어떤 아이디어? 미리 감사드립니다.