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

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

为了安全起见,我想在使用公共 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_NAMEaka 家庭 wifi 分配器将连接到vpn

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

相关内容