两台电脑之间要传一个几十 GB 的文件,多数人第一反应是丢云盘,或者插 U 盘搬一次。这两种办法在现实里都不太靠谱:云盘要先上传再下载,U 盘挑线材看脾气,WiFi 在真实家里更是时快时断。最近有博主重新演示了一个朴素到有点意外的做法——找一根普通网线,把两台 Linux 电脑直连,手动敲两条 IP 配置命令,跑出了约 900 Mbit/s 的实测速度,换算下来每分钟能搬 6.7 GB。这事本身不是新发明,但它戳破了一个被云存储和 WiFi 惯出来的错觉:传文件不一定要绕这么多层。
网线直连,到底在干什么
步骤很简单:发送端和接收端各给网卡配一个 IPv6 链路地址,起链路,ping 通,然后一边 socat 监听、一边发送,中间用 dd 写盘。全程不用交换机、不用路由器,连 TCP/IP 之外的协议栈都可以不要——如果连的对象是微控制器,甚至能直发裸的链路层帧。
千兆网卡基本都支持 auto-MDI-X,能自动识别直通线还是交叉线,不用特意找那根传说中的 crossover 线。家里随便一根网线插上去,大概率就能用。
云盘、WiFi、U 盘,输在哪
这三样东西的短板,其实挺清楚:云存储要经过服务器中转,文件走两遍网络,时间直接翻倍,还要看云厂商限不限速。WiFi 在教科书上标着多千兆,但一进普通家庭——隔墙、干扰、距离——那些数字基本达不到,还容易掉线。
U 盘和移动硬盘理论速度不低,前提是"近乎完美的线材和接口",现实里很难凑齐;而且数据要先拷上再拷下,同样是砍掉一半速度。USB 传统上是 host/device 架构,两台电脑本来没法直连——这也是为什么最近 Linux 开始支持 USB-C(Thunderbolt/USB4)设备之间通过 /dev/tbstreamX 直连,只是作者自己手头的设备不够,还没验证过。
赢的不是速度上限,是不用等基础设施到位
没人提的那部分:它在裸奔
操作步骤讲得很细,但安全几乎一字不提。socat 这么用,数据是明文传输,没有加密,也没有身份认证。只要接的是私有的、物理可控的直连线缆,这不是问题——反正对面插着网线的就是你自己的另一台机器。但如果有人把这套流程搬进公司网络,或接进一个不完全可信的环境,风险就实打实存在:任何能嗅探这段链路的人都能看到完整文件内容。
- 风险.私有直连没问题,但把这套明文 socat 流程原样搬进办公网络或不可信链路,等于把文件裸着发出去,更稳妥的做法是换成 SSH、SFTP、rsync,或者给 socat 加上 TLS。
另外几个容易被忽略、但实操中真会踩坑的细节:
- IPv6 配好之后 ping 不通,通常不是网线的问题,是重复地址检测(DAD)还没跑完,等几秒就好;
- 传完最好跑一遍 SHA256 校验,这条链路没有应用层的完整性保证;
- 家里防火墙规则比较严的话,IPv6 流量也可能被拦,要单独放行;
- 示例里那个 fd42.dead:beef 前缀是随手写的,按 RFC 4193 的建议本该伪随机生成——临时接两台机器传完就拔线无所谓,但如果这台机器以后要接进别的网络,最好别照抄同一个前缀。
USB-C 直连,是这套方案的变数
Linux 新增了对 USB-C(Thunderbolt/USB4)设备间直连的支持,理论上两台支持 USB-C 的 Linux 机器可以通过 /dev/tbstreamX 互传,不再受 USB host/device 架构的限制。但作者手上只有一台完全支持 USB-C 的电脑,没法测,这事目前只能算"正在浮现",谈不上成熟。
如果这条路线跑通,以太网"唯一可靠点对点千兆方案"的位置就不再是唯一。但眼下,网线加两条命令仍然是成本最低、兼容性最广的选项——千兆网卡和网线便宜到几乎不用挑,USB 那根"近乎完美的线材"到现在都还是传说。
对已经布好千兆内网的家庭来说,这个技巧的增量其实有限:直接走局域网共享文件夹,速度差不了太多。它真正省的,是"提前布网络"这一步——两台机器凑一根网线就能跑,不用管有没有交换机、有没有配好的内网。这更像一个被现代云服务惯坏之后重新被想起来的老技巧,而不是什么新发明。
司马迁那句"天下熙熙,皆为利来",搬到这也适用——云盘和 WiFi 省事在"不用懂网络",网线直连省事在"不用等基础设施",两种省事本质上是两种偷懒,谁在什么场景更划算,取决于你缺的是带宽,还是缺的是布线。
