AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 37412
In Process
Evan
Evan
Asked: 2011-04-28 15:15:24 +0800 CST2011-04-28 15:15:24 +0800 CST 2011-04-28 15:15:24 +0800 CST

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

  • 772

我想确保传输仅在其运行的服务器连接到 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 连接到我的本地子网范围?

谢谢你的帮助!

server
  • 4 4 个回答
  • 84395 Views

4 个回答

  • Voted
  1. Anne Onyme
    2012-10-24T16:49:06+08:002012-10-24T16:49:06+08:00

    创建vpnroute组:

    sudo groupadd vpnroute
    

    添加一条iptables规则,拒绝vpnroute不通过tun0接口的组成员进行的任何传出网络连接:

    sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT
    

    以组成员身份开始传输过程vpnroute:

    sudo -g vpnroute transmission-gtk &
    
    • 33
  2. Musclehead
    2017-10-01T01:59:13+08:002017-10-01T01:59:13+08:00

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

    不要基于复杂的系统脚本对 vpn 使用更冗长的“操作方法”......! iptables 是最好的(也是万无一失的)方法!!!- 使用基于传输用户和组的一些 IPTABLE 规则来控制 vpn(不像许多使用 systemd 脚本、上下脚本等的更复杂的“黑客”方法......)而且它非常简单!

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

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

    第 2 步 - 创建传输 IP 规则文件

    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
    

    并在两个提示中点击是。完毕!

    该脚本的优点在于它将通过设备跟踪所有数据!当你发出

    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) 您的数据与传输中的内容相符(通过为每个接口 eth0、vpn (tun0) 添加 INPUT(全部)和转发(全部)规则)。所以你确切地知道发生了什么!!!数据总数与传输不完全一致 - 不幸的是,我无法在 INPUT 端区分到 debian-transmission 用户,并且可能会有额外的开销和使用相同 VPN 的其他进程,但您会看到数据大致相符在输入端,大约是输出端的一半,用于确认 vpn 的工作。另一件需要注意的事情 - vpn 断开连接需要一段时间(所有流量都停止传输)并重新连接传输以在新的 vpn 上“开始”,所以不要担心是否需要大约 5 分钟才能再次开始洪流.. .

    提示 -如果您想逐行了解此脚本的工作原理,请使用谷歌“MAN iptables”并查看这篇关于带宽监控的文章...

    • 8
  3. TheZeroth
    2014-05-08T23:08:46+08:002014-05-08T23:08:46+08:00

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

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

    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
    
    • 6
  4. user4124
    2011-04-28T16:26:33+08:002011-04-28T16:26:33+08:00

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

    在洪流客户端中,Deluge 就是这样做的。因此,您可以安装 Deluge 并在“首选项”中配置界面,一切就绪!

    • 3

相关问题

  • 使用 dpkg 手动安装软件包是否会阻止未来的升级路径?

  • 如何从命令行刻录双层 dvd iso

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve