Debian环境下如何仅让qBittorrent流量通过SoftEther VPN路由
Debian环境下如何仅让qBittorrent流量通过SoftEther VPN路由
我明白你现在的需求——只想让qBittorrent的流量走SoftEther VPN,其他程序的流量还是走本地网络对吧?之前要么全流量路由、要么绑定接口后qBittorrent连不上网的问题,我来给你梳理一套可行的解决方案:
第一步:确认VPN连接状态与接口信息
首先确保你已经成功连接SoftEther VPN,并且能获取到VPN接口(比如你提到的vpn_vpn)的关键信息:
- 查看VPN接口的IP地址和网关:
输出里会有类似ip addr show vpn_vpninet 10.0.0.2/24的行,你可以通过dhclient vpn_vpn获取到VPN网关(通常是子网的第一个IP,比如10.0.0.1)。 - 保留原有的本地默认路由不要删除,这是其他流量走本地的关键。
第二步:配置专属路由表与规则
我们会给qBittorrent单独配置一套路由规则,让它的流量优先走VPN:
- 创建一个新的路由表:
编辑/etc/iproute2/rt_tables文件,添加一行自定义路由表(比如编号200,命名为vpnroute):echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables - 给这个路由表添加VPN相关路由:
- 添加默认路由到VPN网关:
把sudo ip route add default via <VPN_GATEWAY> dev vpn_vpn table vpnroute<VPN_GATEWAY>替换成你第一步获取到的VPN接口网关。 - (可选)如果你需要qBittorrent能访问本地局域网资源,添加本地子网路由到这个表:
比如本地子网是sudo ip route add <LOCAL_SUBNET>/24 dev <LOCAL_INTERFACE> table vpnroute192.168.1.0/24,本地接口是eth0,就替换成对应值。
- 添加默认路由到VPN网关:
- 添加IP规则,让qBittorrent用户的流量使用这个路由表:
- 先找到qBittorrent运行的用户ID(通常是
qbittorrent):
假设输出是id -u qbittorrent1001。 - 添加规则绑定用户ID到路由表:
sudo ip rule add uidrange 1001-1001 lookup vpnroute
- 先找到qBittorrent运行的用户ID(通常是
第三步:配置qBittorrent绑定VPN接口
最后在qBittorrent的设置里完成绑定:
- 打开qBittorrent的设置界面,找到网络选项卡。
- 在高级区域的网络接口下拉菜单里,选择你的VPN接口
vpn_vpn。 - (可选)为了避免DNS泄露,在DNS服务器栏手动填入VPN提供商提供的DNS地址,不要用本地DNS。
- 确保qBittorrent是以
qbittorrent用户运行的(如果是用qbittorrent-nox服务,默认就是这个用户),这样之前的路由规则才会生效。
验证是否生效
你可以用tcpdump工具验证流量走向:
sudo tcpdump -i vpn_vpn host <某个下载源IP>
启动qBittorrent下载,看看是否有流量在vpn_vpn接口上传输,同时打开浏览器访问网站,检查流量是否还是走本地接口(比如eth0)。
备注:内容来源于stack exchange,提问作者Redber
相关产品推荐
相关产品推荐

