制作网站设计的技术有,河北省公司执照网上注册,创意ppt模板大全,合肥做网页的网络公司1. 为什么你的Ubuntu网络总是不听话#xff1f;先搞懂这两个“管家” 刚接触Ubuntu的朋友#xff0c;尤其是从Windows转过来的#xff0c;最头疼的可能就是网络配置了。在Windows里#xff0c;点开“网络和共享中心”#xff0c;鼠标点几下#xff0c;IP、网关、DNS就设好…1. 为什么你的Ubuntu网络总是不听话先搞懂这两个“管家”刚接触Ubuntu的朋友尤其是从Windows转过来的最头疼的可能就是网络配置了。在Windows里点开“网络和共享中心”鼠标点几下IP、网关、DNS就设好了。但到了Ubuntu你可能会发现网上搜到的教程五花八门有的让你改一个叫/etc/netplan/的YAML文件有的又说用nmcli命令还有的提到古老的/etc/network/interfaces。一顿操作猛如虎结果网络服务直接“罢工”连不上网了只能对着命令行干瞪眼。别慌这其实是因为Ubuntu在不同版本里换了两个不同的“网络大管家”。你之所以混乱是因为没搞清楚现在你家系统里到底是谁在管事。今天我就用最直白的大白话带你彻底弄明白netplan和NetworkManager这两位管家让你以后配网络跟点外卖一样简单。netplan你可以把它想象成一个“总设计师”。它本身不直接去操作网卡而是个“写方案的”。从Ubuntu 18.04开始它就成了默认的网络配置工具。它的工作就是读取/etc/netplan/目录下那些以.yaml结尾的“设计方案”配置文件然后把方案翻译成具体指令交给后面的“施工队”比如NetworkManager或者systemd-networkd去执行。它的特点是声明式配置你只需要在YAML文件里写好“我想要什么样的网络”它来负责实现。NetworkManager则更像一个“全能保姆”或者“现场监工”。它是一个一直在后台运行的守护进程服务不仅管有线的还管无线、VPN等各种连接。它最大的好处是提供了图形化界面就是桌面右上角那个网络图标以及非常强大的命令行工具nmcli和文本界面工具nmtui。对于桌面用户来说99%的情况通过图形界面点点鼠标就能搞定。它的配置是动态的、即时生效的。那么问题来了他俩谁说了算在最新的Ubuntu桌面版比如22.04 LTS, 24.04 LTS上默认的搭配是netplan作为顶层配置生成器而NetworkManager作为后端的“渲染引擎”。也就是说netplan写的方案默认会交给NetworkManager去落地执行。但在服务器版或无图形界面的最小化安装中netplan的后端可能会是systemd-networkd。理解了这个“权力结构”你就能明白为什么有时候改了一个地方另一个地方的设置又被覆盖了。简单总结一下选择策略如果你是桌面用户喜欢图形化操作优先使用NetworkManager的图形界面或nmcli命令。如果你是服务器管理员或者喜欢用配置文件搞定一切、追求可重复性和版本控制那么直接编辑netplan的YAML文件是你的最佳选择。接下来我们就手把手进入实战。2. 新时代标配用netplan搞定静态IP附避坑指南netplan的配置文件通常放在/etc/netplan/目录下文件名可能是00-installer-config.yaml、01-netcfg.yaml之类的。咱们先看一个最经典、最常用的静态IP配置案例。假设你的网卡名叫ens33可以用ip addr命令查看你想把它设置成固定IP。2.1 一个能直接拷贝的配置模板打开终端用你喜欢的编辑器比如sudo nano或sudo vim编辑配置文件sudo nano /etc/netplan/00-installer-config.yaml然后把下面的内容贴进去请务必根据你的实际情况修改addresses、gateway和nameserversnetwork: version: 2 renderer: NetworkManager # 指定后端为NetworkManager桌面版默认就是这个 ethernets: ens33: # 你的网卡设备名 dhcp4: no # 关闭DHCP即使用静态IP addresses: - 192.168.31.88/24 # IP地址/子网掩码位数。24对应255.255.255.0 routes: - to: default via: 192.168.31.1 # 默认网关地址 nameservers: addresses: - 114.114.114.114 # 主DNS - 8.8.8.8 # 备DNS search: [localdomain] # 搜索域可选保存退出后最关键的一步来了应用配置。sudo netplan apply如果配置语法正确这个命令执行后网络会闪断一下然后重连。现在你可以用ip addr show ens33看看IP是不是变成了你设置的192.168.31.88再用ping 114.114.114.114试试能不能通基本就大功告成了。2.2 你可能遇到的坑和解决方案看起来很简单对吧但新手最容易在这里栽跟头。我踩过的坑你就不用再踩了。第一个大坑YAML语法缩进。netplan的配置文件对缩进极其敏感必须使用空格不能使用Tab键。通常每一级缩进是两个空格。上面模板里的缩进格式是经过验证的你直接照着结构改数值就行。如果缩进错了运行sudo netplan apply时会直接报错比如“Invalid YAML”或者“expected mapping”。有个小技巧可以用sudo netplan try命令它会应用配置并给你一个回滚的倒计时如果网络断了你按回车就能恢复原状比直接apply更安全。第二个坑网卡设备名不对。你的网卡可能不叫ens33可能是enp0s3、eth0等等。一定要用ip addr或ifconfig -a如果已安装命令确认。写错了名字配置自然不会生效。第三个坑新旧版本配置语法。网上有些老教程针对20.04及更早用的是gateway4:字段。但在20.04之后的新版本官方推荐使用上面模板里的routes:方式来定义默认网关。gateway4:虽然可能还能用但已经是过时的语法了。为了兼容性和未来性建议直接用新的routes写法。第四个坑配置没生效还是旧的IP。执行netplan apply后如果IP没变可以按顺序排查sudo netplan --debug apply看看详细的生成和应用过程有没有警告或错误。检查是否被NetworkManager的图形界面或其他连接覆盖了。有时候NetworkManager会自己创建一个连接配置文件优先级更高。可以试试在NetworkManager里把对应的连接比如“有线连接 1”删除再netplan apply。终极方法重启系统。虽然不优雅但能解决很多玄学问题。3. 图形化与命令行的双刃剑NetworkManager深度玩转对于桌面用户NetworkManager绝对是你的好朋友。它不仅有个直观的图形界面还提供了两个强大的命令行工具nmcli功能全面和nmtui文本菜单适合无图形界面的服务器。我们先从最强大的nmcli说起。3.1 告别图形界面用nmcli命令行掌控一切nmcli是NetworkManager的命令行客户端功能强大到可以完全替代图形界面。它的命令结构有点类似git是“对象-动作”模式。最常用的对象是connection连接配置和device物理设备。首先我们看看系统里现在有哪些连接配置nmcli connection show # 或者简写 nmcli con show你会看到一个列表包含连接的NAME名字可能是“有线连接 1”这种中文、UUID唯一标识符、TYPE和DEVICE。记住你要操作的那个连接的NAME或UUID。假设我们要修改一个名叫“有线连接 1”的配置将其设为静态IP。请将以下命令中的IP、网关、DNS替换成你网络环境的值。# 1. 先将IPv4方法从自动(DHCP)改为手动(static) sudo nmcli con modify 有线连接 1 ipv4.method manual # 2. 设置静态IP地址和子网掩码使用CIDR格式如/24 sudo nmcli con modify 有线连接 1 ipv4.addresses 192.168.31.100/24 # 3. 设置网关 sudo nmcli con modify 有线连接 1 ipv4.gateway 192.168.31.1 # 4. 设置DNS服务器可以设置多个用逗号分隔 sudo nmcli con modify 有线连接 1 ipv4.dns 114.114.114.114,8.8.8.8 # 5. 让修改生效先断开连接再重新激活 sudo nmcli con down 有线连接 1 sudo nmcli con up 有线连接 1执行完这一套“连招”你的网络应该就切换成新的静态IP了。你可以用nmcli con show 有线连接 1 | grep ipv4来查看详细的配置是否已更新。nmcli的优势在于可脚本化。你可以把上面这一系列命令写成一个脚本以后在新机器上部署时一键运行就能完成网络配置这对于运维自动化来说非常方便。3.2 折中之选使用nmtui文本用户界面如果你觉得纯命令行nmcli记不住又不想或者没有图形界面那么nmtui就是为你准备的。它在终端里提供一个简单的、基于光标导航的文本菜单。sudo nmtui运行后你会看到主菜单选择“Edit a connection”编辑连接。在连接列表里用方向键选择你要修改的那个有线连接回车。进入编辑界面后将“IPv4 CONFIGURATION”从Automatic切换到Manual。下方会出现地址栏按Show展开在这里手动添加你的IP地址带子网掩码如192.168.31.100/24、网关和DNS服务器。用Add按钮添加多个DNS。一路OK回到主菜单。非常重要回到主菜单后选择“Activate a connection”激活连接。先停用Deactivate你刚修改的那个连接然后再激活Activate它。这样修改才会真正生效。nmtui本质上是对nmcli的一个友好封装它修改的底层配置和nmcli修改的是同一个地方最终都保存在/etc/NetworkManager/system-connections/目录下每个连接一个配置文件。你也可以直接去编辑这些文件但记得修改后要sudo systemctl restart NetworkManager重启服务才能加载。4. 当netplan遇上NetworkManager理清优先级与冲突这是最让人困惑的部分。我明明用netplan配好了怎么一重启又变了或者我用图形界面改好了怎么执行netplan apply后又回去了根本原因就是配置冲突和优先级问题。我们来理清一下现代Ubuntu桌面版使用NetworkManager作为renderer的配置生效流程系统启动时netplan会读取/etc/netplan/*.yaml生成配置并交给NetworkManager。NetworkManager会将这些配置作为“初始配置”应用并生成自己的连接配置文件在/etc/NetworkManager/system-connections/。此后如果用户通过NetworkManager的图形界面、nmcli或nmtui修改了网络设置NetworkManager会更新自己的连接配置文件并立即生效。此时netplan的YAML文件里的内容就变成了一个“初始模板”不再反映当前的实际运行状态。如果此时你再次运行sudo netplan applynetplan会重新读取它的YAML文件并用其中的配置去覆盖NetworkManager当前的配置。这就是为什么你会觉得设置被“重置”了。所以一个黄金法则就是选定一种方式并坚持使用它。不要混用。如果你想用netplan配置文件管理那就尽量只用sudo netplan apply来管理网络。避免使用图形界面或nmcli去修改同一个网络接口的设置。你可以通过配置/etc/netplan/01-network-manager-all.yaml或类似文件明确指定所有接口由netplan管理renderer: NetworkManager并且不启用NetworkManager对设备的自动管理但这需要更复杂的配置。如果你想用NetworkManager动态/图形化管理那么你可以直接“忽略”/etc/netplan/下的文件或者将其内容简化只设置renderer: NetworkManager把具体的IP、DNS配置都交给NetworkManager的图形界面或命令行工具去做。这样更符合桌面用户的使用习惯。对于服务器通常建议只使用netplan systemd-networkd完全禁用NetworkManager这样可以避免不必要的守护进程和潜在的冲突让网络配置完全静态化、可预测。5. 不止于IP网关、DNS与多网卡的高级配置配好了IP网络只能算通了一半。网关是让你能访问外网比如互联网的“出口”DNS则是把“www.baidu.com”翻译成IP地址的“翻译官”。这两项配置不对你照样上不了网。5.1 网关与DNS配置精讲在netplan中如我们之前模板所示网关现在推荐写在routes:区块里to: default表示这是默认路由via:后面跟网关IP。DNS则写在nameservers:下的addresses:列表里。这里有个细节search:域。当你访问一个不完整的域名比如主机名server1时系统会尝试在后面加上search里定义的域如server1.localdomain进行查询这在内部网络很有用。在NetworkManager中无论是图形界面还是nmcli网关和DNS都是和IP地址一起设置的如上文nmcli示例所示。图形界面里通常在IPv4设置的手动模式中有单独的“网关”和“DNS服务器”输入框。一个常见陷阱DNS不生效。你设了114.114.114.114但ping www.baidu.com还是不通。这时可以cat /etc/resolv.conf看看。这个文件是系统真正使用的DNS解析配置。在由NetworkManager管理的系统上这个文件通常是一个指向/run/systemd/resolve/stub-resolv.conf的符号链接并且内容由NetworkManager动态生成不建议手动编辑因为一重启或网络重连就会被覆盖。确保你的NetworkManager连接配置里DNS设置正确才是根本。5.2 多网卡环境的配置策略服务器或高级用户经常遇到多网卡场景比如一张卡走内网一张卡走外网。这时候配置的关键在于路由Routing。假设你有ens33IP: 192.168.31.100/24网关: 192.168.31.1连接互联网ens34IP: 10.0.0.100/24无网关连接内部服务器集群。你希望访问10.0.0.0/24网段走ens34其他所有流量走ens33的默认网关。在netplan中你可以这样配置network: version: 2 ethernets: ens33: dhcp4: no addresses: [192.168.31.100/24] routes: - to: default via: 192.168.31.1 nameservers: addresses: [114.114.114.114] ens34: dhcp4: no addresses: [10.0.0.100/24] # 为内部网段添加一条静态路由 routes: - to: 10.0.0.0/24 via: 10.0.0.1 # 假设10.0.0.1是这个内部网络的一个路由器 metric: 100 # 可选路由优先级在NetworkManager中配置多网卡路由稍微复杂一点。你需要为每个连接Connection配置IP和路由。可以使用nmcli为ens34的连接添加静态路由sudo nmcli con modify “内部网络连接名” ipv4.routes “10.0.0.0/24 10.0.0.1”核心思想就是默认网关只有一个通常在外网卡上对于特定的目标网络需要添加更精确的静态路由来指明从哪张卡出去。6. 从18.04到24.04不同Ubuntu版本的配置变迁Ubuntu的网络配置方式并非一成不变了解这段历史能帮你更好地理解网上那些不同的教程。Ubuntu 17.10及之前主要使用经典的/etc/network/interfaces文件来配置网络配合ifup和ifdown命令。DNS则在/etc/resolv.conf里直接写。这种方式直接但功能相对单一对于复杂的网络环境如多个Wi-Fi、VPN管理起来不便。Ubuntu 18.04 LTS这是一个重要的分水岭。Canonical引入了netplan旨在作为一个跨后端的、统一的网络配置抽象层。在桌面安装时默认使用NetworkManager作为后端renderer: NetworkManager在服务器安装时默认使用systemd-networkd作为后端renderer: networkd。但为了兼容/etc/network/interfaces方式仍然可用。Ubuntu 20.04 LTS 及以后netplan进一步巩固了地位成为官方推荐且默认的网络配置方式。/etc/network/interfaces文件在全新安装的系统上可能只包含回环接口lo的配置。NetworkManager的功能也愈发强大和稳定。在配置语法上逐渐淘汰了gateway4/gateway6转向更灵活的routes列表。所以如果你在管理一台Ubuntu 18.04或更新版本的机器尤其是服务器请优先学习并使用netplan。对于老版本系统如16.04或某些特定需求才需要去折腾/etc/network/interfaces。记住这个版本脉络看教程时先看发布时间就能对得上号了。7. 实战排错网络不通的终极检查清单配置都做完了但网络还是不通别急按照这个清单一步步来99%的问题都能找到。检查物理连接网线插好了吗网口灯亮吗对于虚拟机检查虚拟网络适配器是否连接比如VMware的“已连接”是否打勾。确认IP地址是否生效ip addr show [网卡名] # 或 nmcli device show [网卡名] | grep IP4.ADDRESS看看显示的IP是不是你配置的那个。检查网关和路由ip route show查看“default via”那一行后面跟的是不是你的网关IP。路由表里有没有你配置的静态路由测试网关连通性ping [你的网关IP]比如ping 192.168.31.1。如果网关都ping不通说明问题出在内网链路交换机、网线、防火墙等。检查DNS解析nslookup www.baidu.com # 或 dig www.baidu.com看能否返回IP地址。如果返回“servfail”或超时说明DNS配置有问题。可以临时指定DNS测试nslookup www.baidu.com 114.114.114.114。检查防火墙Ubuntu默认的ufw防火墙可能阻止了某些访问。可以暂时关闭防火墙测试sudo ufw disable注意测试后记得根据安全需求重新启用。查看NetworkManager服务状态systemctl status NetworkManager确保它是active (running)状态。查看netplan配置生成结果netplan只是生成配置可以看它到底生成了什么给后端sudo netplan generate sudo netplan apply --debug在debug输出里找线索。查看日志系统日志是终极法宝。sudo journalctl -u NetworkManager --since “5 minutes ago” sudo journalctl -u systemd-networkd --since “5 minutes ago” # 如果使用networkd后端看看有没有相关的错误信息。按照这个清单从上到下排查大部分网络配置问题都能迎刃而解。网络配置是个细致活尤其是配置文件格式多一个空格少一个冒号都可能出问题。我的经验是修改前先备份原配置文件每次只做一处小修改然后测试循序渐进。