家庭网络布局:玩转 PT 与 Docker macvlan 避坑指南

发布于 2023-05-26 00:00 1681 字 9 min read

从零开始玩转 OpenWrt 2026:进阶网络架构与 Nikki 极速配置指南2026 自建节点实战:Xray VLESS-Vision-REALITY 部署指南AI 角色扮演进阶指南:从 SillyTavern 部署到 Telegram 接入从 WordPress 到 Astro 迁移记录ImmortalWrt固件overlay扩容安装指南基于mihomo内核的OpenWrt插件Nikki推荐yaml配置OpenWrt 插件 Passwall 推荐设置指南Cloudflare简易使用指南WordPress 网站向 Jekyll 静态博客迁移全记录OpenWrt 插件 OpenClash 推荐配置指南OpenWrt插件Passwall开启ipv6推荐配置OpenWrt插件Passwall推荐配置指南OpenWrt桥接后访问光猫方法PVE下快速更新OpenWrt固件方法群晖 Docker 容器版 Emby 添加弹弹 play 弹幕实战群晖 NAS 常用 Docker Compose 项目部署汇总群晖 Docker 开启 IPv6 双栈与 OpenWrt 协同配置指南软路由刷 PVE 并安装 OpenWrt 折腾记录群晖开启 macvlan 网络并通过 compose 命令安装 docker 指定 ip家庭网络布局:玩转 PT 与 Docker macvlan 避坑指南在本地运行 docker 连接 api 更稳定使用 chatGPT 服务网站添加石蒜模拟器OpenWrt建议设置(个人备份)家庭网络布局:群晖 VMM 虚拟机安装 OpenWrt 旁路由实战群晖种草教程——从玩机到佛系(自用备份版)一加3T手机刷机及安卓必备系统优化软件推荐利用 phpMyAdmin 指令将 WordPress 网站快速 HTTPS 化利用 Docker 快速安装 Aria2 + AriaNg 教程给 WordPress、Typecho、Emlog 等博客网站添加鼠标点击文字特效Windows 10 快捷方式小箭头去除与恢复指南自动化备份指南:利用 Dropbox Uploader 实现网站数据与 SQL 数据库同步Linux学习笔记(二)Linux学习笔记(一)建站之旅其一:一些想法建站之旅其三:多次尝试与一次挫败建站之旅其二:从 VPS 科学上网到自建站的萌芽建站之旅其四:常用命令与参考资料汇总
本文分享了玩 PT 时的网络布局心得,重点介绍了如何通过群晖 Docker 的 macvlan 技术为 qBittorrent 分配独立 IP,从而实现‘NAS 走代理、PT 流量直连’的完美分流方案,并附带了常用 DNS 延迟测试参考。

先说结论吧,如果你要玩 PT,就不要用旁路由了,如果非要用,也请设置为默认不走旁路由的模式(也许主路由 DMZ+旁路转发能行但是 DMZ 主机太不安全了,而且作者也没试过可不可行)。

然后是主路由要选择一个好的 DNS 服务器,其实都大差不差,如果大家有闲心的话,可以下面一样自己整理一个自己家的 DNS 延迟表格,非常直观。直接 cmd,然后 ping+ip 就行了。

公用 DNS 服务器

名称DNS 服务器 IP 地址我的延迟
114 DNS114.114.114.114 114.114.115.115请求超时
阿里 AliDNS223.5.5.5 223.6.6.65ms TTL=118
百度 BaiduDNS180.76.76.7638ms TTL=52
DNSPod DNS+119.29.29.29 182.254.116.11632ms TTL=54 36ms TTL=52
CNNIC SDNS1.2.4.8 210.2.4.836ms TTL=54 36ms TTL=50
oneDNS117.50.11.11 117.50.22.22请求超时
DNS 派电信/移动/铁通101.226.4.6 218.30.118.637ms TTL=55 29ms TTL=56
DNS 派 联通123.125.81.6 140.207.198.628ms TTL=50 36ms TTL=52
Google DNS8.8.8.8 8.8.4.438ms TTL=115 40ms TTL=115
Google IPv6 DNS2001:4860:4860::8888 2001:4860:4860::8844传输失败
IBM Quad99.9.9.9224ms TTL=52
OpenDNS(丢包)208.67.222.222 208.67.220.220137ms TTL=53 118ms TTL=53
Verizon DNS(丢包)4.2.2.1 4.2.2.2191ms TTL=54 200ms TTL=54
中国台湾中华电信 HiNet DNS168.95.192.1 168.95.1.171ms TTL=51 65ms TTL=51
中科大 DNS202.141.162.123(中国电信) 202.141.176.93 (中国移动) 202.38.93.153 (教育网)26ms TTL=54 请求超时 48ms TTL=49
韩国 KT DNS168.126.63.1 168.126.63.2122ms TTL=51 120ms TTL=51
CloudflareDNS1.1.1.1 1.0.0.1185ms TTL=54 175ms TTL=54
华为云 DNS122.112.208.1 114.115.192.11 116.205.5.30 139.159.208.206 139.9.23.90 116.205.5.1 122.112.208.17536ms TTL=48 38ms TTL=50 31ms TTL=49 43ms TTL=48 42ms TTL=48 35ms TTL=49 38ms TTL=48
香港宽频 DNS203.80.96.10 203.80.96.939ms TTL=52 39ms TTL=52
赛门铁克诺顿 DNS199.85.126.10 199.85.127.1031ms TTL=56 33ms TTL=56
oracle+dynDNS216.146.35.35 216.146.36.36请求超时
瑞士瑞信银行 DNS64.6.64.6 64.6.65.6126ms TTL=53 35ms TTL=56

最后我选了阿里的两个 DNS,因为延迟低。然后你问我 TTL 有啥用?我直接放图——

其次是主路由实现搭梯子科学上网,我这里无脑推荐买华硕路由器,然后使用 MerlinClash。这里不介绍具体方法。

在华硕路由器设置 DNS(注意是在外部网路这里设置,内部网络 DHCP 那里也可以设置,但是请留空):

这里不推荐任何形式的 DoH 或者 DoT,毕竟家用不用太考虑安全这方面,但是速度带来的体验几乎翻倍。

然后在 MerlinClash 里把清除路由器自定义 DNS 关掉:

这里还是推荐清除路由器 DNS,然后启用 DNS 编辑功能,在 DNS 编辑功能里面如果有你 ping 不通的 DNS,则需要选择修改。MerlinClash 默认的 DNS 如下——

dns:
  enable: true                      #开启DNS解析,必须开启,否则MC将无法解析
  ipv6: false                       #默认关闭,插件开启IP6支持口,自动打开
  listen: :23453                    #监听端口,不懂勿动
  #nameserver-policy:               #指定域名使用自定义DNS解析,默认未使用
  # 'www.baidu.com': 'https://223.5.5.5/dns-query'
  # '+.internal.crop.com': '114.114.114'
  default-nameserver:               #解析非IP的dns用的dns服务器,只支持纯IP
    - 223.5.5.5
    - 8.8.8.8
  enhanced-mode: redir-host         #DNS模式
  nameserver:                       #默认DNS服务器,支持udp/tcp/dot/doh
    - https://223.5.5.5/dns-query
    - tls://101.101.101.101:853
    - https://doh.pub/dns-query
  fallback:                         #回落DNS服务器,支持udp/tcp/dot/doh
    - https://doh.dns.sb/dns-query
    - tcp://208.67.222.222:443
    - tls://dns.google
  fallback-filter:                  #回落DNS服务器过滤
    geoip: true                     #为真时,不匹配为geoip规则的使用fallback返回结果
    ipcidr:                         #列表中的ip使用fallback返回解析结果
      - 240.0.0.0/4
    domain:                        #列表中的域名使用fallback返回解析结果
      #NetFlix
      - '+.netflix.com.edgesuite.net'
      - '+.fast.com'
      - '+.netflix.com'
      - '+.netflix.net'
      - '+.netflixdnstest0.com'
      - '+.netflixdnstest1.com'
      - '+.netflixdnstest2.com'
      - '+.netflixdnstest3.com'
      - '+.netflixdnstest4.com'
      - '+.netflixdnstest5.com'
      - '+.netflixdnstest6.com'
      - '+.netflixdnstest7.com'
      - '+.netflixdnstest8.com'
      - '+.netflixdnstest9.com'
      - '+.nflxext.com'
      - '+.nflximg.com'
      - '+.nflximg.net'
      - '+.nflxso.net'
      - '+.nflxvideo.net'
      #Linkedin
      - '+.linkedin.com'
      - '+.licdn.com'
      #proxy
      - '+.renzhe.cloud'

可以参考说明:https://mcreadme.gitbook.io/mc/Advanced/dns

然后,重要的来了。

你要实现啥,PT 流量不能走代理,但是 NAS 需要代理吧,你要云备份访问 GoogleDrive、Dropbox 之类的、还要 emby 刮削数据、还有自动追番动漫花园的 RSS 也要能访问吧。而且还要让 PT 网站识别你为正确的 IP 而不是代理 IP,那么你需要

1、PT 软件的流量全部不走代理
2、NAS web 访问走代理,BT 流量不走代理
3、电视、手机、电脑全部走代理

好,思路清晰了,web 访问走代理可以只允许 80 和 443 端口,全部走和全部不走其实也很容易实现,但是有一个重要的问题,就是 PT 也是搭建在群晖 NAS 上的,如何做到 PT 拥有独立 IP 呢?

我参考了

https://www.bilibili.com/video/BV1bd4y1c7uN/
https://sleele.com/2020/03/08/%E7%BE%A4%E6%99%96%E5%88%9B%E5%BB%BA%E6%A1%A5%E6%8E%A5%E7%BD%91%E7%BB%9C-%E4%BD%BF%E5%AE%B9%E5%99%A8%E5%92%8C%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%80%E4%B8%AA%E7%BD%91%E6%AE%B5/

大概有 3 步吧:

sudo -i      /获取root权限
ip addr

终端中输入ip addr查看网络信息,找到你群晖 ip 地址所在的那行。

我的是群晖 IP 所在网络接口是ovs_eth0,我估计大部分单网口的应该都是这个数值,复制这个ovs_eth0

sudo ip link set ovs_eth0 promisc on   #开启混杂模式
docker network create -d macvlan --subnet=网段/24 --gateway=网关 -o parent=ovs_eth0 macnet   #给docker容器添加一个名为macnet(可自己设置)的macvlan网络,网段比如我的就是192.168.2.0/24,(最后一位填0),网关是192.168.2.1(主路由地址)

然后是创建容器,这里推荐 create,而不是 run。(需要预先下载好容器镜像)

docker create --name qbittorrent-pt --network macnet --ip=192.168.2.152 linuxserver/qbittorrent   #其中qbittorrent-pt是你自定义的容器名称,macnet是你刚才设置的macvlan网络名称,192.168.2.152是你给这个容器分配的固定ip地址,需要在刚才的网段内,linuxserver/qbittorrent是拉取的镜像docker的名称,必须和官方名称一模一样,如果你是需要特定版本,请先预先下载好特定版本并且修改这里的名称,比如我还拉取了一个johngong/qbittorrent:4.1.9.1的镜像。

这些地方都可以复制到最新的或者特定版本的镜像名称。

容器创建好后,我们就可以在群晖的容器管理里面修改环境、文件(夹)映射参数之类的了。

然后是 PT 软件设置,这里以 qb 为例:

端口 ip 请固定,并在主路由设置好对应端口转发。不开启 UPNP 的原因是容易端口冲突,因为我有多个 qb 软件,而这个 UPNP 功能并不是一对一,而是多对一,如果你都设置成 52000 附近的话非常容易冲突,我索性就关闭了。

然后在 MerlinClash 里将 qb 地址的 ip 设置为全不走代理。

至此就设定完成了,可以开始愉快的 PT 刷积分刷流量了,233

喜欢的话,留下你的评论吧~