当前位置: 首页 > news >正文

告别DHCP!Ubuntu 22.04 LTS无线网络固定IP保姆级教程(含DNS防重置终极方案)

Ubuntu 22.04 LTS无线网络固定IP终极配置指南:从基础到防DNS重置

每次重启Ubuntu后,明明设置了静态IP却无法访问外网?这可能是DNS配置被重置的典型症状。作为长期使用Ubuntu进行开发的工程师,我经历过无数次这种"能ping通内网却打不开网页"的抓狂时刻。本文将分享一套经过实战验证的完整解决方案,不仅教你设置静态IP,更会深入解决DNS重置这个顽固问题。

1. 无线网络静态IP基础配置

在开始之前,我们需要明确几个关键网络参数:

  • IP地址:设备在网络中的唯一标识
  • 子网掩码:定义本地网络的规模
  • 网关:连接本地网络与其他网络的出入口
  • DNS服务器:将域名转换为IP地址的服务

1.1 获取当前网络配置

首先打开终端,安装必要的网络工具(如果尚未安装):

sudo apt update && sudo apt install net-tools -y

使用以下命令查看当前网络接口信息:

ifconfig

你会看到类似这样的输出(重点关注无线接口,通常以wlp或wlan开头):

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::c1e9:cb75:e21a:5125 prefixlen 64 scopeid 0x20<link> ether d4:54:8b:13:06:28 txqueuelen 1000 (以太网) RX packets 53789 bytes 54126215 (54.1 MB) TX packets 35118 bytes 10016278 (10.0 MB)

记录下关键信息:

  • 接口名称(本例为wlp0s20f3)
  • 当前IP地址(192.168.1.123)
  • 子网掩码(255.255.255.0)
  • 广播地址(192.168.1.255)

1.2 通过GUI设置静态IP

Ubuntu提供了直观的图形界面来配置网络:

  1. 点击右上角网络图标 → 选择"有线/无线设置"
  2. 找到当前连接的无线网络,点击右侧齿轮图标
  3. 选择"IPv4"选项卡
  4. 将方法从"自动(DHCP)"改为"手动"
  5. 填写以下信息:
    • 地址:192.168.1.150(建议使用当前DHCP范围外的IP)
    • 子网掩码:255.255.255.0
    • 网关:192.168.1.1(通常是路由器IP)
  6. 点击"应用"并重新连接网络

提示:IP地址的最后一段建议选择50-200之间的数字,避免与DHCP分配范围冲突。

2. 解决DNS重置问题:深入systemd-resolved

设置静态IP后,很多用户会遇到一个恼人的问题:重启后DNS配置丢失。这是因为Ubuntu使用systemd-resolved管理DNS,而传统的修改/etc/resolv.conf方法只是临时解决方案。

2.1 理解systemd-resolved架构

systemd-resolved是Ubuntu的DNS解析管理器,它通过以下机制工作:

  1. 从多个来源收集DNS服务器信息(DHCP、手动配置等)
  2. 将这些信息整合到/run/systemd/resolve/resolv.conf
  3. 通过符号链接使/etc/resolv.conf指向上述文件

常见的配置问题来源:

  • 直接修改/etc/resolv.conf(会被覆盖)
  • 未正确配置systemd-resolved的主配置文件
  • 符号链接设置不正确

2.2 永久配置DNS服务器

正确的配置方法是通过systemd-resolved的主配置文件:

  1. 编辑resolved.conf文件:
sudo nano /etc/systemd/resolved.conf
  1. 取消DNS行的注释并添加首选DNS服务器(如8.8.8.8):
[Resolve] DNS=8.8.8.8 1.1.1.1 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=no-negative #DNSStubListener=yes #ReadEtcHosts=yes
  1. 重启systemd-resolved服务使更改生效:
sudo systemctl restart systemd-resolved
  1. 检查当前DNS配置:
resolvectl status

你应该能看到类似输出,确认DNS服务器已正确配置:

Global LLMNR setting: no MulticastDNS setting: no DNSOverTLS setting: no DNSSEC setting: no DNSSEC supported: no Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 1.1.1.1

2.3 修复符号链接问题

为确保DNS配置持久化,需要正确处理/etc/resolv.conf的符号链接:

  1. 备份现有resolv.conf(如果存在):
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
  1. 创建正确的符号链接:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
  1. 验证链接是否正确:
ls -l /etc/resolv.conf

正确输出应显示指向/run/systemd/resolve/resolv.conf的符号链接:

lrwxrwxrwx 1 root root 35 Apr 10 15:30 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

3. 高级网络配置与故障排除

3.1 使用NetworkManager进行配置

对于更喜欢命令行操作的用户,可以使用nmcli工具:

  1. 查看当前连接:
nmcli connection show
  1. 修改连接配置(将CONNECTION_NAME替换为你的连接名):
nmcli connection modify CONNECTION_NAME \ ipv4.method manual \ ipv4.addresses 192.168.1.150/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8 1.1.1.1"
  1. 重新激活连接:
nmcli connection down CONNECTION_NAME && nmcli connection up CONNECTION_NAME

3.2 常见问题诊断

当网络出现问题时,可以按照以下步骤排查:

  1. 检查IP地址配置:
ip addr show
  1. 测试网关连通性:
ping 192.168.1.1
  1. 测试DNS解析:
nslookup example.com
  1. 检查路由表:
ip route show
  1. 查看NetworkManager日志:
journalctl -u NetworkManager -b

3.3 多网络环境配置策略

对于需要在不同网络环境(如家庭、办公室)间切换的用户,可以考虑以下方案:

  1. 使用NetworkManager的"连接"功能为每个网络创建独立配置
  2. 编写脚本根据SSID自动切换配置:
#!/bin/bash CURRENT_SSID=$(iwgetid -r) case "$CURRENT_SSID" in "Home_WiFi") nmcli connection modify Home_WiFi ipv4.dns "192.168.1.1 8.8.8.8" ;; "Office_WiFi") nmcli connection modify Office_WiFi ipv4.dns "10.0.0.1 8.8.8.8" ;; *) echo "Unknown network, using default DNS" ;; esac

4. 安全加固与性能优化

4.1 DNS安全配置

现代DNS提供了多种安全增强选项,可以在/etc/systemd/resolved.conf中启用:

[Resolve] DNS=8.8.8.8 1.1.1.1 DNSSEC=yes DNSOverTLS=opportunistic

这些选项提供:

  • DNSSEC:验证DNS响应真实性
  • DNS-over-TLS:加密DNS查询,防止窃听

4.2 网络管理服务优化

确保相关服务在启动时自动运行:

sudo systemctl enable --now systemd-resolved NetworkManager

检查服务状态:

systemctl status systemd-resolved NetworkManager

4.3 防火墙配置建议

使用UFW设置基本防火墙规则:

sudo ufw enable sudo ufw default deny incoming sudo ufw default allow outgoing

允许SSH(如果远程访问):

sudo ufw allow 22/tcp

4.4 网络性能调优

对于高延迟网络,可以调整TCP参数:

echo "net.ipv4.tcp_slow_start_after_idle=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p

这个配置可以防止TCP连接在空闲后重新进入慢启动状态,提高持续连接的性能。

http://www.jsqmd.com/news/758330/

相关文章:

  • PyTorch 2.x时代,torchtext停止维护了,我们该怎么办?迁移方案与替代库盘点
  • 别再只会用GPIO读按键了!用STM32的ADC实现矩阵按键,节省IO口的硬件设计思路
  • 让卡车自动巡航:ETS2LA如何为《欧洲卡车模拟2》带来智能驾驶体验
  • UnClaw:零成本AI智能体框架,基于Claude Code的配置即架构实践
  • Linux 5.4.18内核编译指南:将自定义EDID固件(1920x1200.bin)打包进内核镜像
  • Balena Etcher完整指南:三步轻松制作系统启动盘的终极解决方案
  • 到底要不要考scmp证书?scmp报考含金量解读 - 品牌企业推荐师(官方)
  • 构建支持多模型快速切换的智能客服问答系统架构思路
  • 别再死记硬背了!用这套实战项目带你吃透Jenkins Pipeline(附完整Jenkinsfile)
  • 别再手动做报表了!用Power BI Desktop连接Excel,5分钟搞定可视化分析
  • 强化学习在软件开发反馈优化中的应用与实践
  • 终极指南:OpenCore Legacy Patcher让老Mac重获新生的完整教程
  • 如何用AI一键分离图像图层?5步掌握专业设计自动化
  • VideoDownloadHelper完整教程:轻松下载全网视频的免费Chrome插件
  • 贵州安亿顺废旧物资回收:贵阳回收废铝专业公司推荐 - LYL仔仔
  • 如何实现40+平台直播自动录制?DouyinLiveRecorder完整指南
  • 你的爬虫又卡住了?用Python requests库优雅处理504错误的3种重试策略与避坑指南
  • 微信单向好友检测技术难题与自动化解决方案
  • Bili2text技术架构解析:模块化设计的多引擎B站视频转文字工具
  • 从扫地机器人到AR眼镜:聊聊SLAM技术在我们身边的那些落地应用
  • OpenClaw AI Agent实战指南:从架构选型到企业级部署
  • 科研党福音:MATLAB 2023b + Yalmip + Gurobi 11.0 完整配置指南(含校园License申请避坑)
  • 告别表格!用PyTorch实战策略梯度(Policy Gradient),5步搞定REINFORCE算法
  • 3分钟搞定音乐解锁:Unlock-Music让你的加密音频重获自由
  • 手机号码定位神器:3分钟搭建你自己的归属地查询系统
  • Dify细粒度权限失效了?3分钟定位用户-角色-资源-操作-环境五元组断点
  • 东阳市杰业木业:东阳母婴健康环保板材定制放心厂家 - LYL仔仔
  • 给嵌入式工程师的MIPI C-PHY/D-PHY选型指南:从CSI-2摄像头接口到PCB布线实战
  • Element Plus后台管理系统实战:给任务调度模块加个my-cron-vue3配置器(附完整代码)
  • 别再乱改/etc/resolv.conf了!Ubuntu 20.04 DNS配置的正确姿势:systemd-resolved保姆级教程