1. 为什么需要命令行配置网络刚接触Ubuntu的朋友可能会疑惑明明有图形界面可以点点鼠标联网为什么要学命令行我最初也有同样的疑问直到有次服务器机房维护——没有显示器只能通过SSH连接。那次经历让我明白命令行网络配置是Linux使用者的必备技能。命令行配置的优势非常明显。首先是轻量高效在资源有限的设备上特别实用。我的树莓派跑图形界面卡顿用nmcli命令3秒就能连上WiFi。其次是可脚本化公司要批量部署50台Ubuntu工作站时我写个脚本自动配置网络省去逐台操作的麻烦。最重要的是稳定性强去年有次系统更新导致网络管理器崩溃全靠命令行工具恢复连接。常见的场景包括服务器等无图形界面环境远程SSH连接时的网络故障排除需要重复部署的批量操作网络管理器(NetworkManager)异常时的备用方案提示建议所有Ubuntu用户都掌握基础网络命令就像司机要会换备胎一样关键时刻能救命。2. WiFi连接全攻略2.1 用nmcli玩转无线网络nmcli是NetworkManager的亲儿子用起来最顺手。先教大家几个实用技巧查看网卡状态时我习惯加个-color参数让输出更易读nmcli -color auto device status彩色显示会标出已连接(绿色)、断开(红色)等状态。搜索WiFi时发现列表太长试试这样过滤nmcli dev wifi list | grep -v ^\*这个命令会隐藏已连接的星标网络专注新网络。连接企业级WiFi要特别注意加密方式。有次我死活连不上公司网络后来发现是忘了指定PEAP认证nmcli dev wifi connect Office-Net password 123456 \ wifi-sec.key-mgmt wpa-eap 802-1x.eap peap \ 802-1x.identity myaccount 802-1x.password mypwd2.2 wpa_supplicant进阶用法当NetworkManager不可用时wpa_supplicant就是救命稻草。分享几个实战经验配置文件有个隐藏技巧——可以保存多个网络配置系统会自动选择信号最强的network{ ssidHome5G pskpassword123 priority5 } network{ ssidHome2.4G pskpassword123 priority3 }priority值越大优先级越高。遇到WPA3加密的路由器时要在配置里显式声明network{ ssidWPA3-Net key_mgmtSAE pskstrongpassword }3. PPPoE宽带配置详解3.1 pppoeconf交互式配置第一次用pppoeconf时我被它的交互界面搞懵了。后来发现几个关键点当它问Enter your PPPoE password时输入是不显示星号的这不是bug配置完成后会生成/etc/ppp/peers/dsl-provider文件如果ISP使用特殊认证方式需要手动编辑这个文件有个坑我踩过三次——MTU设置不当会导致网页打不开。解决方法是在dsl-provider文件追加mtu 1492 mru 14923.2 nmcli配置PPPoE用nmcli配置PPPoE有个隐藏优势可以保存多个ISP配置。比如我家用电信公司用联通可以这样管理nmcli con add type pppoe con-name ChinaTelecom ifname eth0 username 13312345678 password 123456 nmcli con add type pppoe con-name Unicom ifname eth0 username 18512345678 password 654321切换时只需nmcli con up ChinaTelecom nmcli con down Unicom4. 常见问题排查指南4.1 WiFi连接失败排查上周帮同事debug时遇到典型案例能搜到WiFi但连不上。按照这个流程排查先看硬件开关rfkill list如果显示hard blocked: yes需要按笔记本的FnFx组合键解锁。检查驱动lspci -k | grep -A 3 -i wireless确保Kernel driver in use栏有内容。最后看认证日志journalctl -u NetworkManager --since 5 minutes ago | grep -i auth4.2 PPPoE拨号失败处理最常见的错误是Timeout waiting for PADO packets通常意味着网线没插好别笑我干过光猫未桥接模式防火墙阻拦了PPPoE数据包可以用tcpdump抓包诊断sudo tcpdump -i eth0 -nn port 8864 or port 8865正常应该能看到PADI、PADO等协议包交互。5. 自动化脚本实战5.1 一键连接脚本我把常用命令打包成脚本分享核心部分#!/bin/bash WIFI_SSIDMyWiFi WIFI_PASS12345678 PPPOE_USERispaccount PPPOE_PASSisppassword # WiFi连接函数 connect_wifi() { nmcli dev wifi connect $WIFI_SSID password $WIFI_PASS \ || echo 连接失败尝试备用方案... \ sudo systemctl restart NetworkManager sleep 2 \ nmcli dev wifi connect $WIFI_SSID password $WIFI_PASS } # PPPoE连接函数 connect_pppoe() { if ! nmcli con show | grep -q MyPPPoE; then nmcli con add type pppoe con-name MyPPPoE \ ifname eth0 username $PPPOE_USER password $PPPOE_PASS fi nmcli con up MyPPPoE }5.2 网络质量监控用watch命令实时监控watch -n 1 nmcli dev wifi | grep -E SSID|SIGNAL这个命令每秒刷新一次显示信号强度和当前连接。对于PPPoE我写了个断线自动重连的脚本while true; do if ! ping -c 1 114.114.114.114 /dev/null; then pon dsl-provider sleep 30 fi sleep 60 done6. 安全加固建议6.1 密码安全管理千万别像这样把密码明文写在脚本里nmcli dev wifi connect MyWiFi password 123456 # 危险推荐两种安全做法使用nmcli的秘密存储nmcli --ask dev wifi connect MyWiFi执行时会交互式询问密码。对于PPPoE可以用密钥环nmcli con modify MyPPPoE secrets password这样配置后首次连接会提示输入密码。6.2 防火墙配置UFW防火墙可能会阻断PPPoE需要放行sudo ufw allow in proto pppoe sudo ufw allow out proto pppoe对于企业WiFi记得开放必要的EAP端口sudo ufw allow 1812/udp # RADIUS认证 sudo ufw allow 1813/udp # RADIUS计费