当服务器未连接到 VPN 时,我试图阻止deluged
我的无头 Ubuntu Server 14.04.1 运行(我知道有很多线程讨论实现这一点的最佳方法;我并不是在寻找替代方法,而是在寻找我失败的原因)。
我已将 deluge 设置为使用传入端口 40000 和传出端口 40001:40101。我还设置了ufw
默认设置以允许传出连接并拒绝传入连接。最后,我制定了以下规则:
To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] 58846 ALLOW IN Anywhere [ 3] 40000 on tun0 ALLOW IN Anywhere [ 4] 40000 DENY IN Anywhere [ 5] 40001:40101/tcp ALLOW OUT Anywhere on tun0 (out) [ 6] 40001:40101/udp ALLOW OUT Anywhere on tun0 (out) [ 7] 40001:40101/tcp DENY OUT Anywhere (out) [ 8] 40001:40101/udp DENY OUT Anywhere (out)
(与 (v6) 相同的规则重复。)
您会注意到我允许ssh
,并允许 Deluge 瘦客户端连接在我的服务器上运行的守护进程。
但是,即使我没有连接到任何 VPN,deluge 仍然可以运行(ifconfig
确认只有eth0
环回处于活动状态)。
我不明白为什么它会这样工作。有人能解释一下我所忽略的吗?
答案1
以下是我找到的指南Airvpn 论坛。这对我理解同样的问题非常有帮助。
在以下快速教程中,我将尝试为您提供一些指导,以便(希望)完成简单的设置。这仅用于一般指导。根据需要调整地址、端口号和协议。例如,如果您的路由器位于不同的 IP 地址,则调整规则以满足您的需求。此外,如果您想连接到不同的 VPN 服务器,请使用您想要使用的服务器的 IP 地址。此处使用的 IP 号码仅作为示例。
请记住,规则排序很重要,第一个匹配的规则获胜!最先输入的规则将在列表中排名靠前。最后我将对此进行更多解释(见第 8 点)。
打开终端窗口并输入以下命令并根据需要进行调整。如果尚未登录,请使用 su 以 root 身份登录,或者在每个命令前放置 sudo。$ 代表终端中的提示符。
启用 UFW。
$ ufw 启用
这将启用防火墙,现在您可以添加规则。
设置默认行为以拒绝所有传入和传出的流量。
$ ufw 默认拒绝输出 $ ufw 默认拒绝输入
现在所有进出流量都将被阻止。
添加一条规则以允许流量进入您的路由器(仅在需要时)。
$ ufw 允许到 192.168.178.0/24
这将允许流量进入路由器/内部网络,在本例中位于 192.168.178.0/24。如果您的计算机有多个网络接口,您可以添加要使用的接口。例如
$ ufw 允许在 eth0 上访问 192.168.178.0/24
这将仅允许连接到 eth0 上的内部网络/路由器。如果 eth0 未连接,并且您使用例如 wlan0 连接,UFW 将阻止流量,您将无法连接到路由器/内部网络,因为只有来自 eth0 的流量才允许连接到 192.168.178.0/24。
添加一条规则,允许使用 UDP 流量通过端口 443 传输到 46.19.137.114。这是 AirVPN_CH-Virginis_UDP-443 服务器。
$ ufw 允许到 46.19.137.144 端口 443 proto udp
这将允许端口 443 上的 UDP 流量到 Virginis 服务器 (=46.19.137.144)。这是连接到 VPN 服务器所必需的。您可以通过重复上述规则添加多个 VPN 服务器,并将 IP 地址调整为要添加的服务器。也可以指定不同的端口号。只需将端口号更改为连接到 VPN 服务器所需的端口号即可。如果省略 proto udp 部分,则允许 tcp 和 udp 流量,如果将其更改为 proto tcp,则只允许 tcp 流量。
添加一条规则以允许通过 tun0 的进出流量。这是来自和发往 VPN 服务器的流量。
$ ufw 允许在 tun0 上
现在,浏览器等应用程序可以连接到网络上的不同站点。所有流量都将通过 VPN 服务器。
如果您使用 bit-torrent 客户端,您还需要允许来自您在 bittorrent 客户端中指定的端口的传入流量(这是允许对等点/种子连接到 bit-torrent 客户端(NAT)所需的端口)。
$ ufw 允许在 tun0 上从任意端口进入任意端口 54321
这将使来自不同 IP 地址(想要连接到您的客户端的对等点/种子)的传入流量能够通过 VPN 服务器连接(此处为 tun0)进行连接。在这种情况下使用端口号 54321,请将其调整为正确的端口号!
如果你现在进入。
$ ufw 状态详细
您将获得一个编号列表,内容如下:
Status: active Logging: off Default: deny (incoming), deny (outgoing) New profiles: skip To Action From -- ------ ---- 54321 on tun0 ALLOW IN Anywhere 192.168.178.0/24 ALLOW OUT Anywhere 46.19.137.114 443 ALLOW OUT Anywhere Anywhere ALLOW OUT Anywhere on tun0
这会向您显示应用了哪些规则以及防火墙的状态。输入以下内容时:
$ ufw 状态编号
您将获得一个编号列表。它看起来如下所示:
Status: active To Action From -- ------ ---- [ 1] 192.168.178.0/24 ALLOW OUT Anywhere (out) [ 2] 46.19.137.114 443 ALLOW OUT Anywhere (out) [ 3] Anywhere ALLOW OUT Anywhere on tun0 (out) [ 4] 54321 on tun0 ALLOW IN Anywhere
这是一个编号列表。重要的是要知道规则的顺序很重要。如果您允许规则编号 1 中的某项操作(例如,允许所有传入和传出流量),则在此之后指定的所有其他规则将不起作用!
最后,我还要指出删除和插入规则的可能性。如果您输入:
$ ufw delete 1 # 并确认
规则编号 1 将被删除,并且遵循规则 1 的所有其他规则将上移,在此示例中,列表将如下所示(在 $ ufw status 编号之后):
Status: active To Action From -- ------ ---- [ 1] 46.19.137.114 443 ALLOW OUT Anywhere (out) [ 2] Anywhere ALLOW OUT Anywhere on tun0 (out) [ 3] 54321 on tun0 ALLOW IN Anywhere
如果您想在特定位置添加规则,可以使用插入命令。例如,我们想添加第二个 VPN 服务器,以便在一个服务器宕机(您知道这种情况可能发生 :-))或我们需要选项时可以选择另一个。命令如下所示;
$ ufw 插入 2 允许到 119.81.1.122 端口 443 proto tcp
这将添加 SG-Sagittarii 服务器
现在在 2 号位置插入了一条新规则。其他规则将下移。我们可以生成一个新列表:
$ ufw 状态编号
列表将如下所示:状态:活跃
To Action From -- ------ ---- [ 1] 46.19.137.114 443 ALLOW OUT Anywhere (out) [ 2] 119.81.1.122 443/tcp ALLOW OUT Anywhere (out) [ 3] Anywhere ALLOW OUT Anywhere on tun0 (out) [ 4] 54321 on tun0 ALLOW IN Anywhere
本教程到此结束。使用它对你有好处,我希望有些事情会变得更清楚一些。对你的设置进行适当的更改并对其进行扩展。同样,GUI 版本很好,但命令行版本更好,只需要一点时间就可以习惯它。