如何确保传输流量使用VPN?

我想确保传输仅在其运行的服务器连接到VPN时发送/接收流量。

我发现这个问题类似,但我不想强制通过VPN的所有流量,我也无法找到如何从命令行使用firestarter的良好指南。

相反,我正在考虑使用ufw,但我几乎没有防火墙的经验,我希望社区可以帮助我。

我的一个想法是强制传输使用特定端口,比如说33442,然后只允许从VPN服务器的IP地址进出该端口的流量。 我检查了Ubuntu服务器指南,我认为可以做这样的事情:

sudo ufw enable sudo ufw deny port tcp from localhost to any port 33442 sudo ufa allow port tcp from localhost to VPNIP port 33442 sudo ufw deny port udp from localhost to any port 33442 sudo ufa allow port udp from localhost to VPNIP port 33442 

这个逻辑是否有其盐? 你会怎么做? 我将如何使用VPNIP,VPN服务器的公共IP,或者我应该指定VPN连接到我的本地子网范围?

谢谢你的帮助!

 sudo groupadd vpnroute sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT sudo -g vpnroute transmission-gtk & 

这适用于无头传输,我根据运行传输服务的用户限制流量, 10.0.0.0/8是您的内部网络,您应该更改它以匹配您的网络, tun0是您的OpenVPN接口, eth0是您的LAN连接。

如果您不是root,请将sudo添加到命令:

iptables -F (我们使用-F开关刷新所有现有规则,因此我们从一个干净状态开始添加新规则。)

iptables -L (列出当前设置)

 NET=10.0.0.0/8 GROUP=debian-transmission IFACE_INTERNAL=eth0 IFACE_VPN=tun0 ALLOW_PORT_FROM_LOCAL=9091 iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT 

重启后使iptables持久化

 apt-get install iptables-persistent service iptables-persistent start 

理想情况下,您应该使用具有绑定到特定接口(VPN接口)function的torrent客户端。

在洪流客户中,Deluge就是这样做的。 因此,您可以在首选项中安装Deluge并配置界面,然后进行设置!

这是NOOBS(使用debian)的完整’如何’,以确保debian-transmission用户组(即传输)仅通过vpn路由数据

不要使用基于复杂系统脚本的更长的’如何’为vpn ……! iptables是最好的(和万无一失的)方法! – 使用基于传输用户和组的少量IPTABLE规则来控制vpn(不像使用系统脚本,上下脚本等许多更复杂的’hack’方法) 而且它太简单了!

步骤1 – 设置:(假设已安装传输,因此存在debian-transmission用户!)

 sudo apt-get install iptables sudo apt-get install iptables-persistent 

第2步 – 创建transmission-ip-rules文件

 sudo nano transmission-ip-rules 

并从#!/bin/bash开始在下面的代码块中添加文本

重要

  • 如果您的本地网络不是192.168.1.x格式,请更改NET变量以对应您自己的本地网络寻址格式!!
  • 还要注意192.168.1.0/25实际给出范围192.168.1.0-255的怪癖!
  • 有时您的接口eth0,tun0(也就是vpn)等可能不同 – 请检查’ifconfig’并根据需要进行更改。
 #!/bin/bash # Set our rules so the debian-transmission user group can only route through the vpn NET=192.168.1.0/25 GROUP=debian-transmission IFACE_INTERNAL=eth0 IFACE_VPN=tun0 ALLOW_PORT_FROM_LOCAL=9091 iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT # not needed - but added these to properly track data to these interfaces....when using iptables -L -v iptables -A INPUT -i $IFACE_VPN -j ACCEPT iptables -A INPUT -i $IFACE_INTERNAL -j ACCEPT iptables -A INPUT -i lo -j ACCEPT # track any forward (NAT) data for completeness - don't care about interfaces iptables -A FORWARD 

保存文件,然后运行

 sudo iptables -F sudo chmod +x transmission-ip-rules sudo ./transmission-ip-rules 

然后确保这些规则在重新启动之间保持不变:

 sudo dpkg-reconfigure iptables-persistent 

并在两个提示中点击“是”。 DONE!

这个脚本有什么好处,它将通过设备跟踪所有数据! 当你发出

 sudo iptables -L -v 

它将显示有多少数据进入哪个接口以及哪一侧INPUT或OUTPUT,以便您可以确保vpn脚本正常工作。 例如;

 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1749K 661M ACCEPT all -- tun0 any anywhere anywhere 3416K 3077M ACCEPT all -- eth0 any anywhere anywhere 362K 826M ACCEPT all -- lo any anywhere anywhere Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 all -- any any anywhere anywhere Chain OUTPUT (policy ACCEPT 2863K packets, 2884M bytes) pkts bytes target prot opt in out source destination 1260 778K ACCEPT tcp -- any eth0 anywhere 192.168.1.0/ 25 tcp spt:9091 owner GID match debian-transmission 0 0 ACCEPT udp -- any eth0 anywhere 192.168.1.0/ 25 udp spt:9091 owner GID match debian-transmission 1973K 1832M ACCEPT all -- any tun0 anywhere anywhere owner GID match debian-transmission 8880 572K ACCEPT all -- any lo anywhere anywhere owner GID match debian-transmission 13132 939K REJECT all -- any any anywhere anywhere owner GID match debian-transmission reject-with icmp-port-unreachable 

此脚本已在连接,断开连接,从VPN重新启动时进行了详尽的测试。 它很棒。 传输只能使用VPN。 这个脚本相对于其他脚本的巨大优势在于我确保您可以看到(通过iptables -L -v )您的数据与传输的内容相符(通过添加INPUT(全部)和前向(所有)规则对于每个接口eth0,vpn(tun0))。 所以你知道到底发生了什么! 数据总数不会与传输完全吻合 – 不幸的是我无法区分INPUT端到debian-transmission用户,并且会有额外的开销和可能使用相同VPN的其他进程,但你会看到数据大致相同在INPUT端,并且在OUTPUT上大约有一半用于确认其工作的vpn。 另外需要注意的是 – 它需要一段时间才能断开连接(所有流量都会停止传输)并重新连接以便在新的vpn上“继续”传输,所以不用担心是否需要大约5分钟才能再次启动。 。

提示 – 谷歌’MAN iptables’,如果您想逐行了解此脚本的工作原理,请参阅有关带宽监控的文章 …