RJ45网线直连Xubuntu与Ubuntu:静态IP配置与SSH互通实战
2026/9/16 4:31:49 网站建设 项目流程

两台机器摆在面前,一台跑着Xubuntu 22.04,一台刚装了Ubuntu 24.04,手边没有路由器也没有交换机,只有一根RJ45网线。想把大文件夹从这台拷到那台,顺便还挂着SSH上去改配置。这种场景下最利索的办法就是网线直连,不用额外设备,一根线把两张网卡怼在一起就能互通。这也是我系列笔记里的第二百七十二篇,前面记了不少零碎问题,这次专门把RJ45网线直连双系统这件事从头到尾捋一遍。

我最早玩网线直连是在嵌入式调试的时候,开发板、笔记本、台式机经常要临时组网,现场未必有路由器。后来发现就算有路由器,局域网里开了AP隔离、VLAN隔离,设备之间反而互相访问不了,网线直连反而能绕开这些限制。这次拿Xubuntu 22.04和Ubuntu 24.04做实验,原因也很简单:一个是最新的LTS桌面发行版,一个是刚发布的LTS,这两代系统之间的网络配置方式差异不小,正好把旧方法和新方法都写清楚。

1. 为什么两条系统之间值得用网线直连?

1.1 先看这个方案到底能解决什么问题

网线直连,说白了就是两台电脑用一条RJ45网线直接把网卡连起来,不经过任何中间网络设备。很多人第一反应是“这能通吗”,能,而且只要配置对了,比走路由器还稳定。

这个方案最典型的应用场景有三个。第一是临时组网,比如在客户现场、学校机房、野外测试环境,没有现成的网络设备,但两台甚至几台机器需要互相传文件、SSH登录。第二是嵌入式开发调试,开发板、树莓派、Jetson这类设备没有显示器,直接一根网线连到笔记本上,再配置一下IP就能登录,这是做底层开发的家常便饭。第三是追求极致传输性能,网线直连是纯二层链路,数据不经过交换机芯片,没有转发延迟,也没有广播域里的其他流量干扰,千兆网卡跑满速是常态。

从技术层面看,网线直连还有一个隐藏优势:它能规避很多莫名其妙的网络策略。办公网里经常有AP隔离、访客网络限制、MAC地址过滤,甚至有些交换机端口直接做了端口安全策略,导致同网段设备互相ping不通。直连是物理层面的独立链路,这些策略全部绕开,非常适合做故障排除和临时快速传输。

1.2 网线直连的硬性前提:网卡、线缆与自动协商

做网线直连之前,得先确认几件事。首先,两张网卡都得能正常工作,这点用ip aethtool就能查。其次,网线得是好的,这里就有个非常经典的误区——交叉线。

早年百兆网卡时代,两台设备直连必须用交叉线(T568A对T568B),因为网卡的收发引脚是固定的,直通线会让两端都从同一对线发信号,根本不通。但现在的千兆网卡几乎都支持Auto-MDIX,也就是自动协商收发引脚,直通线和交叉线都能正常用。我实测下来,千兆网卡用普通直通线完全没问题,只有老掉牙的百兆网卡才需要担心这个问题。如果你还愿意记RJ45引脚定义,T568A和T568B都行,关键是两端别搞混。

还有一个要点,RJ45网线的引脚定义是固定的8P8C结构,百兆只用1、2、3、6四根线,千兆必须8根全用,所以做线的时候不要偷懒只压4根。线材建议用超五类起步,六类更好,长度别超过100米,实际直连场景里基本不会触发这个限制,但网线质量差会导致协商速率掉到百兆,这是很多“跑不满速”问题的根源。

在配置IP之前,先确认两张网卡已经被系统识别:

ip a ethtool enp3s0

ethtool输出里的Speed: 1000Mb/sDuplex: Full就是理想状态,如果显示Speed: 100Mb/s,要么是网线问题,要么是网卡协商失败,先解决这个再继续。

2. 配置前的方案选型:静态IP、网段规划与工具选择

2.1 没有DHCP服务器时,IP怎么分才不打架?

网线直连的场景里没有路由器,自然也没有DHCP服务器,IP地址必须手动指定。那问题来了,用哪段地址合适?

我习惯用192.168.50.0/24或者10.66.66.0/24这样的私有网段。选网段有个大原则:一定要避开当前局域网正在用的网段,也避开常见的家用路由网段,比如192.168.1.0/24192.168.0.0/24,否则后续把机器重新接入局域网时,可能会造成路由混乱或者IP冲突。

为什么选/24子网掩码?因为/24对应255.255.255.0,一个网段里有254个可用IP,对于两机直连来说完全够用,也好记。更重要的是,/24是绝大多数人最熟悉的子网划分方式,配置起来不容易出错。你也可以用/30,但说实话没必要,除非你脑子里时刻装着子网掩码计算表。

接下来就是分配IP:给一台机器设192.168.50.1/24,另一台设192.168.50.2/24。是否设置网关?不设。这里的逻辑是,网关只有在需要访问其他网段时才需要,而网线直连只有两个节点,互相通信根本不需要网关。DNS也不需要填,因为你不通过这台机器解析域名。如果你非要填,填127.0.0.1或者其他都行,但纯属多此一举。

有些朋友可能会问,能不能用169.254.x.x这种自动私有地址?理论上链路本地地址也能让两台机器自动互通,Windows和Linux默认都会配置,但问题在于自动生成的地址不可预测,你不一定知道对方拿到了什么IP,而且SSH、SCP都需要明确的目标地址,所以手动配静态IP是唯一靠谱的路径。

2.2 两个系统的网络栈差异:NetworkManager 与 netplan

这里得专门讲一下两个系统的网络管理方式,因为这是最容易踩坑的地方。

Xubuntu 22.04本质上是带Xfce桌面的Ubuntu发行版,桌面环境下默认使用NetworkManager管理网络。这意味着你用命令行配IP、改DNS、启停网卡,最常用的工具是nmcli,当然也可以用图形界面的网络设置。NetworkManager的好处是配置实时生效、自动漫游、对普通用户友好,缺点是在服务器场景下有时候显得“太聪明”,自动把网卡拉起来、自动连Wi-Fi,反而干扰了手动配置。

Ubuntu 24.04就更有意思了。如果装的是服务器版,默认没有NetworkManager,网络配置交给netplan加systemd-networkd。netplan是一个抽象层,用一个YAML文件统一描述网络配置,然后渲染到后端,后端要么是networkd,要么是NetworkManager。桌面版的Ubuntu 24.04默认渲染到NetworkManager,因为桌面环境依赖NM做无线网络管理。

这就引出了第一个大坑:如果你在Ubuntu 24.04桌面版上改了/etc/netplan/下的YAML文件,但忘了确认渲染器后端,很可能netplan命令执行完了,实际网络状态一点没变。因为NM会“抢占”网卡控制权。我的建议是,在动手之前先查清楚当前网卡被谁管控:

nmcli device status systemctl status NetworkManager systemctl status systemd-networkd

nmcli device status里会显示每张网卡的STATECONNECTION,如果显示connected,说明是NM在管。systemctl status NetworkManager能看到NM进程是否在跑。把这两个信息摸清楚了,再选择走哪条配置路径,能少走很多弯路。

3. 实操:Xubuntu 22.04 和 Ubuntu 24.04 直连配置全流程

3.1 Xubuntu 22.04 侧:命令行与图形界面两条路

Xubuntu 22.04侧因为有桌面,最简单的方法是打开图形界面。不过图形界面有时候反而慢,我更喜欢直接上nmcli,一条命令搞定,还方便写进脚本。

先查看当前NetworkManager认到的有线连接叫什么名字,常见的是“Wired connection 1”:

nmcli con show

然后找到对应网卡的连接名字后,把这连接改成静态IP:

nmcli con mod "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.50.1/24 ipv4.gateway "" ipv4.dns ""

注意最后两个参数,一个把网关清空,一个把DNS清空,因为直连场景不需要这两个。然后重新激活连接:

nmcli con up "Wired connection 1"

这时候再用ip addr show确认一下,inet 192.168.50.1/24应该已经在网卡上了。

如果你实在喜欢图形界面,Xubuntu点屏幕右上角或面板上的网络图标,打开“网络连接”,找到有线连接,选IPv4设置,方法改成“手动”,地址填192.168.50.1,子网掩码填255.255.255.0,网关留空,DNS留空,保存即可。还要注意Xfce桌面下有个“连接编辑器”(nm-connection-editor),功能一样,都是调NetworkManager,本质没区别。

3.2 Ubuntu 24.04 侧:netplan 的 YAML 配置细节

Ubuntu 24.04这侧就稍微讲究点了。先看看/etc/netplan/目录下有哪些文件:

ls -l /etc/netplan/

通常会有个50-cloud-init.yaml或者01-network-manager-all.yaml,取决于安装方式。不管文件名是什么,编辑之前先备份,这习惯能救命:

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

然后用vimnano编辑,核心内容长这样:

network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false addresses: - 192.168.50.2/24

这里有三个关键点。第一,renderer一定得和实际情况一致,如果确认这台Ubuntu 24.04没有跑NetworkManager,用networkd没问题;如果跑着NM,这里也要写成NetworkManager,否则配置可能被忽略。第二,addresses用YAML列表格式,后面接- 192.168.50.2/24,缩进必须严格一致,netplan对YAML缩进非常敏感,错一个空格都可能报错。第三,dhcp4: false必须写,不关DHCP的话,哪怕配了静态地址,可能还会同时从DHCP拿一个IP,出现双地址的混乱情况。

保存文件后,先别急着apply,用netplan try最安全:

sudo netplan try

这个命令会先应用配置,然后给你120秒确认时间,如果配置没问题敲回车确认生效;如果配置把网络搞断了,等120秒自动回滚,不会把你锁在机器外面。确认没问题后用netplan apply正式生效,或者直接回车也行。

3.3 双方互ping与SSH验证

配置完两边IP,先做最基础的连通性测试,在Ubuntu 24.04这侧ping一下Xubuntu:

ping 192.168.50.1

能收到回复说明二层链路通了,网线、网卡、IP配置全都正常。如果ping不通,回到第5节的排查清单。

ping通之后就可以SSH登入对端了:

ssh user@192.168.50.1

如果提示Connection refused,先看对端的SSH服务是否启动,没装的话在Xubuntu上执行sudo apt install openssh-serversudo systemctl start ssh。如果提示Connection timed out,多半是防火墙拦了,检查ufw。

最后做个文件传输测试,验证实际使用场景:

scp ~/bigfile.tar.gz user@192.168.50.1:/tmp/

到这里,双机直连就完全跑通了。

4. 实战测试:直连之后传文件到底能跑多快?

4.1 用iperf3测带宽

既然物理链路走的是千兆网卡,很多人第一反应就是“网线直连是不是能跑满千兆”。理论归理论,实际测一下才放心。iperf3是测吞吐量的标准工具,先在Xubuntu那台装好:

sudo apt install iperf3 iperf3 -s

-s表示作为服务器端监听,默认端口5201。然后在Ubuntu 24.04那台装上iperf3后执行:

iperf3 -c 192.168.50.1

我这次实测的结果是940 Mbits/sec左右,这基本就是千兆以太网去掉协议开销后的物理上限了。如果测出来只有100 Mbits/sec,那问题肯定出在协商速率上,用ethtool查看一下两端网卡的Speed字段,看看是不是掉到100Mb/s了。如果只有几十Mbits/sec,很可能网线质量差或者网卡驱动异常。

iperf3还有个多功能参数可以看双向带宽,客户端加-R就是反向传输,用来测对端到本端的吞吐量。跑几轮之后你会发现,网线直连的带宽非常稳定,没有Wi-Fi那样的波动,也没有路由器转发带来的性能下降。

4.2 影响传输速度的几个暗坑

带宽测出来正常,不代表实际传文件就一定快。SCP传输大文件时,速度取决于很多因素,我踩过的坑包括但不限于:

第一,协商模式不对。如果网卡或者交换机强制成百兆半双工,速度直接少一个数量级。ethtool enp3s0看Speed和Duplex,双工一定要是Full

第二,防火墙和限速工具。有些发行版默认开了防火墙,哪怕没开,也有tc(network traffic control)规则在影响流量。检查方式:

sudo ufw status sudo tc qdisc show

第三,MTU大小。千兆直连其实可以尝试MTU 9000巨帧,减少包数量,提升大文件传输效率。这对直连场景是安全的,因为中间没有别的路由器需要分片。但必须两端网卡同时设置,否则会有大量分片丢包。

sudo ip link set dev enp3s0 mtu 9000

在netplan里可以写mtu: 9000。但说实话,日常传文件用1500就行,巨帧的提升幅度在千兆网络下大概百分之几,不值得为了这点性能引入排查复杂度。

第四,磁盘IO才是真正的瓶颈。如果从机械硬盘读数据,或者写入端是USB 2.0外接盘,SCP速度可能只有50-80MB/s,这时候换个协议或者直接压缩传输更划算,比如用rsync -ztar czf - | ssh

5. 常见问题速查表与排错实录

5.1 配置不生效、连不上、很慢……从哪查起?

我把这几年直连遇到过的典型问题整理成一张速查表,基本覆盖了90%的场景。

现象可能原因排查命令/操作
ping不通对端IP网线没插好、网卡没起来ip aethtool enp3s0、检查网线灯
SSH连接超时防火墙拦截、IP不对sudo ufw status、确认IP段
SSH连接拒绝openssh-server没装或没启动sudo systemctl status ssh
IP配好了但重启丢失netplan没生效或NM冲突sudo netplan applynmcli con up
网卡显示有IP但始终断网卡被NetworkManager托管nmcli device status
传输速度只有百兆网线质量差、协商速率掉到100Methtool查看Speed
netplan apply报错YAML缩进错误、renderer后端不匹配sudo netplan generate看具体报错
设备无法访问外网直连只通了本网段,没NAT确认是否需要网关/NAT

这几条是我在实际操作中反复遇到的,尤其是“配置好了重启就丢”和“网卡明明有IP但就是不通”两个问题,基本都出在NetworkManager和netplan打架上。

5.2 我踩过的最深的几个坑

第一个坑,netplan和NetworkManager互相抢网卡。有一次在Ubuntu 24.04桌面版上改了netplan配置,apply也执行成功了,但ip a一看,网卡还是旧的DHCP地址。原因就是netplan里renderer写的是networkd,但系统里NetworkManager还活着,NM重新接管了网卡,把networkd的配置冲掉了。解决方法是让渲染器和实际管理工具保持一致,要么停用NM,要么在netplan里明确用renderer: NetworkManager

第二个坑,笔记本以太网口被省电模式坑了。Xubuntu 22.04跑在笔记本上时,系统为了省电可能会在网卡空闲时把链路down掉。表现为插了网线,网卡灯也亮,但ping就是不通。这时候用sudo ethtool -s enp3s0 wol d关掉WOL唤醒,或者直接用nmcli把该连接的自动连接打开,通常能解决。如果还不行,检查BIOS里有没有关闭网卡节能。

第三个坑,防火墙放行问题。Ubuntu 24.04默认没开ufw,但Xubuntu 22.04如果之前手动开过防火墙,SSH就会被拦。最迷惑的是ping能通、SSH超时,很多人会反复检查SSH配置,其实问题在防火墙。直接执行sudo ufw allow from 192.168.50.2把对端IP放行就完了。

5.3 顺带一提:如果你下次还要做类似直连设备…

这套思路不只是Xubuntu到Ubuntu,做嵌入式开发的时候,开发板、树莓派、Jetson Nano统统适用。那些小设备一般也没有显示器,默认跑的是DHCP客户端,你可以先用USB转串口或者HDMI接个屏幕登录,然后把网口改成静态IP。更有意思的是,有些开发板出厂就支持mDNS,接上网线后直接用hostname.local就能访问,只不过动态获取的IP可能变来变去,搞直连时还是改成固定IP省心。

如果你手头有多个设备要互连,一根网线就不够了。最简单的升级方案是插一个几十块的小型unmanaged交换机,IP规划完全不用改,仍然用192.168.50.0/24这个网段,所有设备都配静态IP就能互相访问。如果设备更多或者需要自动分配IP,那就得在某个节点上装DHCP服务,或者干脆用一台机器做路由加NAT,这个属于进阶玩法,以后有机会再单独写。

最后再分享一个小技巧

这个网线直连方案我在嵌入式调试里用了很多年,每次手头没有路由器、又要快速建临时网络时最顺手。折腾完这一套之后,我慢慢养成了几个习惯:能先netplan try就不直接apply,能用nmcli con mod就不去翻图形界面,配完IP第一件事永远是ping而不是直接ssh。另外一个小技巧是,如果两台机器都装了SSH服务,直连后跑一个rsync -avz --progress比SCP省心太多,断点续传、增量同步都是SCP给不了的。希望这篇记录能帮你少走几步弯路,要是你也试过更奇怪的直连姿势,欢迎一起聊聊。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询