为了安全起见,我想在使用公共 wifi 时使用 VPN。为了建立 OpenVPN 隧道,我需要一个有效的网络连接。当我连接到公共 wifi 接入点时,在连接后但在我的 VPN 客户端启动、连接和更新路由表之前有一段时间,在此期间,来自我系统的流量以未加密的方式通过公共 wifi 传输。
在那段时间里,如何才能使 WiFi 不传输任何流量,除了发往我的 OpenVPN 服务器的流量?
额外积分:有没有办法将 wifi 网络列入白名单作为受信任的(例如我的家庭或工作 wifi),以便允许所有流量,因为我不会使用 VPN?
答案1
我将按以下顺序尝试以下iptables
操作:
# Allow dhcp
sudo iptables -A OUTPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
# Allow outbound VPN traffic
sudo iptables -A OUTPUT -p udp --dport 1194 -d 0.0.0.0/0 -j ACCEPT"
# DROP all outbound WIFI
sudo iptables -A OUTPUT -i wlan0 -j DROP
在办公室和家庭网络中,您必须运行:
# Accept all outbound traffic
sudo iptables -D OUTPUT -i wlan0 -j DROP
可能有一个iptables
扩展程序会使用 WIFI SSID 或其他路由器标识符进行过滤,但我不熟悉任何
笔记:您可能需要更新 ovpn 远程端口和/或 WIFI 网络接口名称
答案2
也许我有办法给你。
在中创建脚本/etc/NetworkManager/dispatcher.d/vpn-up
#! /bin/bash
REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"
activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
nmcli con up id "${VPN_CONNECTION_NAME}"
fi
意思是,如果没有连接到,REQUIRED_CONNECTION_NAME
aka 家庭 wifi 分配器将连接到vpn
。
这仅在您使用连接时才有效。如果不NM
用于连接,请使用要运行的连接命令更改脚本。VPN
NM
vpn
nmcli con up id "${VPN_CONNECTION_NAME}"
vpn