UFW 和 VPN:如何允许重新连接

fir*_*new 4 firewall vpn ufw

这是我的防火墙规则:

deny outgoing
deny incoming
allow out from any to any on tun0 (alow just the traffic from the VPN)
Run Code Online (Sandbox Code Playgroud)

但是,当我想从 gnome 网络管理器启动 VPN 连接时,我被迫禁用 ufw。然而,我尝试过类似的事情:

allow out from any to any on wlan0 port 1194
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

有什么建议 ?

解决方案 :

以下几行使您能够阻止所有传出的非 VPN 流量。换句话说,只允许 VPN 流量。此外,如果您的 VPN 连接失败,您无需禁用防火墙即可重新连接。

1 - 在终端中运行以下命令:

sudo tail -f /var/log/ufw.log
Run Code Online (Sandbox Code Playgroud)

2 - 尝试连接到您的 VPN

3 - 查看所有带有 Ip 地址的“[UFW BLOCK]”行在我的例子中,我有两个带有 DST= 的地址 ip .240 和 DST=" . . .241.

然后我的 VPN 给出的 IP 也被阻止了。

3 - 在防火墙中允许这些IP:

To                         Action      From
--                         ------      ----
***.**.**.240              ALLOW OUT   Anywhere
***.**.**.241              ALLOW OUT   Anywhere
**.***.0.0/18  (VPN)            ALLOW OUT   Anywhere
Anywhere                   ALLOW OUT   Anywhere on tun0
22/tcp                     ALLOW OUT   Anywhere
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on tun0
22/tcp (v6)                ALLOW OUT   Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)

270*_*974 5

根据port 1194我猜你使用 OpenVPN。FAQ 中推荐的 OpenVpn 文档如下

我需要在防火墙中为 Access Server 打开哪些端口?

简短回答:TCP 443、TCP 943、UDP 1194 详细回答:默认情况下,OpenVPN 访问服务器运行 2 个 OpenVPN 守护进程。其中一个位于 UDP 端口 1194 上,另一个位于 TCP 443 上。我们建议您使用 UDP 端口,因为这对于 OpenVPN 隧道来说效果更好。然而,许多公共位置会阻止所有类型的端口,除了非常常见的端口,例如 http、https、ftp、pop3 等。因此我们还有 TCP 443 作为一个选项。TCP 端口 443 是 https:// (SSL) 流量的默认端口,因此通常允许在用户位置通过。TCP 端口 943 是 Web 服务器接口默认侦听的端口。您可以直接使用 https://yourserverhostnamehere:943/这样的 URL 来实现此目的,也可以通过标准 https:// 端口 TCP 443 来实现此目的,因为默认情况下 OpenVPN 守护程序会自动在内部将浏览器流量路由到 TCP 943。( https://yourserverhostnamehere/ )。

但我在战场上的建议是允许来自 VPN 服务器 IP 地址的所有流量

sudo ufw allow from ip_address_of_vpn_server
Run Code Online (Sandbox Code Playgroud)

不要指定 proto,因为 OpenVPN 两者都使用,tcp并且udp

编辑1

您还可以创建脚本以在 时自动重新tun0连接down

添加一个简单的脚本来调用tun-up其中/etc/network/if-down.d/的内容

#!/bin/sh
# filename: tun-up

if [ "$IFACE" = tun0 ]; then
  sudo ifup tun0
fi
Run Code Online (Sandbox Code Playgroud)

使其可执行

sudo chmod +x /etc/network/if-up.d/tun-up
Run Code Online (Sandbox Code Playgroud)

编辑2

好的,我们允许错误的地址。首先,我们需要捕获正确的 IP 地址以允许流量。

启动terminal并运行命令

tail -f /var/log/system | grep UFW
Run Code Online (Sandbox Code Playgroud)

然后尝试连接到VPN服务器。在终端你会看到封锁

May 25 08:18:22 xxx kernel: [259789.025019] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:23:cd:f4:8c:29:08:00 SRC=XXX.XXX.XXX.XXX 
Run Code Online (Sandbox Code Playgroud)

在 block find 中SRC=XXX.XXX.XXX.XXX,这是向您发送流量的地址,在大多数情况下,这将是 VPN 服务器的公共 IP 地址。

ufw该IP地址必须先添加到规则中,因为在tun0上线之前您会与该地址进行通话和交换流量。

规则是

sudo ufw insert 1 allow from XXX.XXX.XXX.XXX
Run Code Online (Sandbox Code Playgroud)