iptables 阻止 openvpn VPS 上的 torrenting 端口

iptables 阻止 openvpn VPS 上的 torrenting 端口

所以我知道如果不采取一些分层解决方案,就无法真正阻止 p2p,但我的问题要简单得多。我所在的国家/地区允许使用 torrenting(没有人关心),但访问 youtube 或 facebook 等基本网站受到严格审查。出于这个原因,我租了一个 VPS,在其上运行 openvpn,并自己和一些亲密的家庭成员使用它的连接。问题是他们可能不会故意“溜走”并在 vpn 模式下运行 torrenting 应用程序,这可能会导致锁定 vps。

我正在考虑将所有 qbittorrents 设置为始终使用特定端口(例如 8999),并阻止任何使用端口 8999 的 vps 连接。这可能吗?我该如何继续这样做?这样做有效吗?

VPS 运行的是 ubuntu 20.04

答案1

免责声明:在开始使用防火墙规则之前,请确保您有其他方式进入 VPN。您很容易将自己锁定在外。VPN 提供商提供的控制台之类的东西将是理想的选择。如果您没有这个,请at在​​开始使用之前设置一个作业来自动刷新 iptables 规则集。

您可以过滤从 OpenVPN 接口到内核的流量:

iptables -A INPUT -i tun0 -p tcp --dport 8999 -j REJECT

(替换tun0为 OpenVPN 创建的接口)

这将拒绝通过 VPN 接口进入的端口 8999。请注意,此更改不是持久的。请参阅您使用的 iptables-wrapper 的文档(如果有),了解如何使此更改持久。

Ubuntu 上的默认设置是ufw,即:

ufw deny in on tun0 proto tcp to any port 8999

导致:

mtak@E2QJZJW2:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8999/tcp on tun0           DENY        Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8999/tcp (v6) on tun0      DENY        Anywhere (v6)

从安全角度来看,最好设置一个阻止所有内容的 iptables 规则集,除了您明确允许的内容。

答案2

我对“VPN 只适用于某些情况,不适用于所有情况”问题的解决方案是使用 HTTP 代理。这仅适用于仅通过隧道传输 Web 浏览器流量。

设置非常简单:

  • 确保您的 VPN 客户端不是更改默认路由(例如redirect-gateway使用 OpenVPN 或AllowedIPs = 0.0.0.0/0WireGuard)
  • 让代理服务器(例如 Squid)在 VPN 子网上运行并监听
  • 仅将您的 Web 浏览器设置为使用此代理

所有不知道代理的应用程序将继续直接向互联网发送流量。

当然,也有一些注意事项:当 VPN 未连接时,浏览器将无法工作。有些浏览器可以快速切换代理,无论是原生的还是使用扩展的。如果你想要隧道传输其他流量(如 SSH),这个解决方案在大多数情况下都行不通(尽管它可以适用于所有 TCP 连接)。


点对点应用程序(如 BitTorrent)通常能够绕过被阻止的端口。它们可以使用反向连接、随机端口等等。我不会依赖如此脆弱的东西。

相关内容