如何在 VPN 连接之前阻止 wifi 上的流量?

gen*_*ood 5 security wireless vpn networking

为了安全起见,我想在使用公共 wifi 时使用 VPN。为了建立我的 OpenVPN 隧道,我需要一个有效的网络连接。当我连接到公共 wifi 接入点时,在连接后但在启动我的 VPN 客户端之前有一个时间窗口,连接并更新路由表,在此期间,来自我的系统的流量未加密地通过公共 wifi 传输。

在那个时间段内,除了发往我的 OpenVPN 服务器的流量外,我怎样才能让 wifi 不通过流量?

额外的功劳:有没有办法将 wifi 网络列入受信任的白名单(例如我的家庭或工作 wifi),以便允许所有流量,因为我不会使用 VPN?

ofi*_*ule 2

我会按以下顺序尝试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
Run Code Online (Sandbox Code Playgroud)

在办公室和家庭网络中,您必须运行:

# Accept all outbound traffic
sudo iptables -D OUTPUT -i wlan0 -j DROP
Run Code Online (Sandbox Code Playgroud)

可能有一个iptables扩展会使用 WIFI SSID 或其他一些路由器标识符进行过滤,但我不熟悉任何

注意:您可能需要更新 ovpn 远程端口和/或 WIFI 网络接口名称


270*_*974 0

也许我可以为你提供解决方案。

创建脚本于/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
Run Code Online (Sandbox Code Playgroud)

女巫的意思是,如果没有连接到REQUIRED_CONNECTION_NAME又名家庭 wifi dispecher 将连接到vpn

NM仅当您用于连接时这才有效VPN。如果不用于NM连接vpn,请使用命令更改脚本nmcli con up id "${VPN_CONNECTION_NAME}"vpn运行连接。