Linux网络配置与管理实战指南
环境说明:本文基于华为云ECS服务器(Ubuntu 24.04 LTS)进行实操演练。使用4台同一VPC内的服务器,通过SSH远程执行所有命令,捕获真实输出。无论你是运维新手还是老手,这篇实战笔记都能帮你系统掌握Linux网络管理技能。
服务器信息:
编号 公网IP 私网IP 主机名 s3 120.46.207.115 192.168.0.171 ecs-c8cd-d105-0003 s4 120.46.159.196 192.168.0.26 ecs-c8cd-d105-0004 s1 1.94.207.93 192.168.0.55 ecs-c8cd-d105-0001 s2 1.92.105.208 192.168.0.110 ecs-c8cd-d105-0002
一、网络接口配置(ip / ifconfig)
1.1 查看网络接口信息
在现代Linux系统中,ip命令已经取代了老旧的ifconfig,但两者在实际工作中都很常见,我们需要同时掌握。
使用ip addr show查看所有接口的IP地址信息:
ipaddr show在s3服务器上执行,输出如下:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:72:ca:75 brd ff:ff:ff:ff:ff:ff altname enp0s3 altname ens3 inet 192.168.0.171/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0 valid_lft 315359173sec preferred_lft 315359173sec inet6 fe80::f816:3eff:fe72:ca75/64 scope link valid_lft forever preferred_lft forever输出解读:
lo:本地回环接口,IP为127.0.0.1/8,始终UP状态eth0:主网卡,IP为192.168.0.171/24(子网掩码255.255.255.0)mtu 1500:最大传输单元,以太网标准值state UP:接口状态为启用link/ether fa:16:3e:72:ca:75:MAC地址altname enp0s3/altname ens3:接口别名,systemd命名规则dynamic noprefixroute:通过DHCP动态获取的地址
1.2 使用 ifconfig 查看接口统计
ifconfigeth0输出:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.171 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::f816:3eff:fe72:ca75 prefixlen 64 scopeid 0x20<link> ether fa:16:3e:72:ca:75 txqueuelen 1000 (Ethernet) RX packets 20772 bytes 27683017 (27.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3406 bytes 371462 (371.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0踩坑经验:Ubuntu 24.04默认已不安装
net-tools包,ifconfig可能不可用。需要手动安装:apt install net-tools。推荐使用ip命令替代。
1.3 查看链路层信息与接口统计
# 查看链路层信息iplinkshow# 查看接口详细统计信息ip-slinkshow eth0# 查看更详细的统计(含错误细分)ip-s-slinkshow eth0ip -s -s link show eth0输出:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether fa:16:3e:72:ca:75 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 27836092 21478 0 0 0 0 RX errors: length crc frame fifo overrun 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 505216 4078 0 0 0 0 TX errors: aborted fifo window heartbt transns 0 0 0 0 2关键指标解读:
RX/TX:接收/发送的bytes、packets、errors、droppedcrc错误:网线或网卡硬件问题dropped:内核缓冲区满导致丢包carrier:物理链路问题
1.4 查看ARP邻居表
ipneigh show输出:
192.168.0.1 dev eth0 lladdr fa:16:3e:f0:db:5c REACHABLEARP表记录了IP地址与MAC地址的对应关系。REACHABLE表示该邻居可达。其他状态包括STALE(过期)、DELAY(等待探测)、FAILED(不可达)。
1.5 创建虚拟网络接口(Dummy)
在某些场景下(如测试、VIP配置),我们需要创建虚拟接口:
# 创建dummy接口并配置IPiplinkadddummy0typedummyipaddradd10.0.0.1/24 dev dummy0iplinksetdummy0 up# 查看创建结果ipaddr show dummy0输出:
3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether 1e:55:59:ed:c2:a1 brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/24 scope global dummy0 valid_lft forever preferred_lft forever inet6 fe80::8c0f:6bff:fed8:3f6f/64 scope link valid_lft forever preferred_lft forever# 清理:删除dummy接口iplinkdel dummy0原理:dummy接口不会实际发送数据包,但内核会为它处理路由。常用于让程序绑定到一个始终存在的IP地址,即使物理网卡down了也不影响。
二、路由表管理(ip route / route)
2.1 查看路由表
iproute show在s3服务器上执行:
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 169.254.169.254 via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.171 metric 100路由条目解读:
default via 192.168.0.1:默认网关为192.168.0.1,所有未知目的地的包都发往这里169.254.169.254:华为云元数据服务地址,用于获取实例元数据192.168.0.0/24 dev eth0:直连路由,同子网内直接通过eth0发送proto dhcp:路由由DHCP协议下发metric 100:路由优先级,数值越小优先级越高
2.2 查询路由决策
ip route get可以查看内核对某个目的IP的路由决策过程:
# 查询内网路由iproute get192.168.0.26输出:
192.168.0.26 dev eth0 src 192.168.0.171 uid 0 cache# 查询外网路由iproute get8.8.8.8输出:
8.8.8.8 via 192.168.0.1 dev eth0 src 192.168.0.171 uid 0 cache可以看到,访问内网192.168.0.26直接走eth0,而访问外网8.8.8.8则需要通过网关192.168.0.1转发。
2.3 添加和删除静态路由
在实际运维中,经常需要临时添加静态路由来实现网络分流:
# 添加静态路由:将10.10.10.0/24网段的流量导向192.168.0.26iprouteadd10.10.10.0/24 via192.168.0.26 dev eth0# 查看添加后的路由表iproute show输出:
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 10.10.10.0/24 via 192.168.0.26 dev eth0 169.254.169.254 via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.171 metric 100# 删除静态路由iproute del10.10.10.0/24 via192.168.0.26 dev eth0踩坑经验:
ip route add添加的路由是临时的,重启后失效。要永久生效需要写入网络配置文件(如netplan或networkd配置)。在云服务器上修改路由要格外小心,可能导致SSH连接断开!
2.4 策略路由规则
iprule show输出:
0: from all lookup local 32766: from all lookup main 32767: from all lookup default规则解读:
- 优先级
0:所有流量先查local表(本机地址) - 优先级
32766:然后查main表(主路由表) - 优先级
32767:最后查default表
实战技巧:策略路由常用于多网卡场景,如让来自某个网卡的流量从对应的网关出去。例如:
ip rule add from 192.168.0.171 table 100,然后为table 100配置独立的默认路由。
三、网络连通性测试(ping / traceroute / nc)
3.1 ping 测试内网互通
4台服务器在同一VPC内,内网互通延迟极低:
# 从s3 ping s4(私网IP 192.168.0.26)ping-c4192.168.0.26输出:
PING 192.168.0.26 (192.168.0.26) 56(84) bytes of data. 64 bytes from 192.168.0.26: icmp_seq=1 ttl=64 time=0.276 ms 64 bytes from 192.168.0.26: icmp_seq=2 ttl=64 time=0.121 ms 64 bytes from 192.168.0.26: icmp_seq=3 ttl=64 time=0.094 ms 64 bytes from 192.168.0.26: icmp_seq=4 ttl=64 time=0.093 ms --- 192.168.0.26 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3063ms rtt min/avg/max/mdev = 0.093/0.146/0.276/0.075 ms# 从s3 ping s1(私网IP 192.168.0.55)ping-c4192.168.0.55输出:
PING 192.168.0.55 (192.168.0.55) 56(84) bytes of data. 64 bytes from 192.168.0.55: icmp_seq=1 ttl=64 time=0.367 ms 64 bytes from 192.168.0.55: icmp_seq=2 ttl=64 time=0.189 ms 64 bytes from 192.168.0.55: icmp_seq=3 ttl=64 time=0.097 ms 64 bytes from 192.168.0.55: icmp_seq=4 ttl=64 time=0.103 ms --- 192.168.0.55 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3071ms rtt min/avg/max/mdev = 0.097/0.189/0.367/0.109 ms# 从s3 ping s2(私网IP 192.168.0.110)ping-c4192.168.0.110输出:
PING 192.168.0.110 (192.168.0.110) 56(84) bytes of data. 64 bytes from 192.168.0.110: icmp_seq=1 ttl=64 time=0.335 ms 64 bytes from 192.168.0.110: icmp_seq=2 ttl=64 time=0.136 ms 64 bytes from 192.168.0.110: icmp_seq=3 ttl=64 time=0.096 ms 64 bytes from 192.168.0.110: icmp_seq=4 ttl=64 time=0.087 ms --- 192.168.0.110 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3064ms rtt min/avg/max/mdev = 0.087/0.163/0.335/0.100 ms内网延迟分析:三台服务器间延迟均在0.1ms左右,0%丢包率,说明VPC内网质量非常好。对比外网ping:
# ping外网8.8.8.8ping-c38.8.8.8输出:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=97 time=296 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=97 time=291 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=97 time=292 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 291.119/293.230/296.285/2.211 ms外网延迟约293ms,是内网的2000倍以上。这就是云上服务间通信推荐使用内网的原因。
3.2 traceroute / tracepath 路径追踪
tracepath192.168.0.26输出:
1?: [LOCALHOST] pmtu 1500 1: 192.168.0.26 0.177ms reached 1: 192.168.0.26 0.163ms reached Resume: pmtu 1500 hops 1 back 1内网同子网只需1跳即可到达。pmtu 1500表示路径MTU为1500字节。
3.3 mtr 综合网络诊断
mtr结合了ping和traceroute的功能,是网络诊断利器:
mtr-r-c3192.168.0.26输出:
Start: 2026-10-12T15:42:54+0800 HOST: ecs-c8cd-d105-0003 Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.168.0.26 0.0% 3 0.1 0.2 0.1 0.3 0.13.4 nc 端口连通性测试
nc(netcat)是测试端口连通性的利器:
# 测试s4的SSH端口是否可达nc-zv192.168.0.2622输出:
Connection to 192.168.0.26 22 port [tcp/ssh] succeeded!实战技巧:
nc -zv只做端口扫描不传输数据,适合快速检测端口开放状态。批量扫描可以用nc -zv host port1-port2。
四、DNS配置与查询(resolv.conf / nslookup / dig)
4.1 查看 DNS 配置
cat/etc/resolv.conf输出:
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8). # Do not edit. ... nameserver 127.0.0.53 options edns0 trust-ad search openstacklocal注意:在Ubuntu 24.04中,
/etc/resolv.conf是systemd-resolved管理的stub配置,nameserver 127.0.0.53是本地DNS stub解析器。直接修改此文件会被覆盖!
4.2 查看实际DNS服务器
resolvectl status输出:
Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (eth0) Current Scopes: DNS Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 100.125.1.250 DNS Servers: 100.125.1.250 100.125.129.250 DNS Domain: openstacklocal华为云内网DNS服务器为100.125.1.250和100.125.129.250,搜索域为openstacklocal。
4.3 nslookup 域名查询
nslookupwww.baidu.com输出:
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 110.242.70.57 Name: www.a.shifen.com Address: 110.242.69.21 Name: www.a.shifen.com Address: 2408:871a:2100:186c:0:ff:b07e:3fbc Name: www.a.shifen.com Address: 2408:871a:2100:1b23:0:ff:b07a:7ebc4.4 dig 高级DNS查询
# 查询A记录digwww.baidu.com +short输出:
www.a.shifen.com. 110.242.70.57 110.242.69.21# 查询NS记录digbaidu.com NS +short输出:
ns7.baidu.com. ns2.baidu.com. ns4.baidu.com. dns.baidu.com. ns3.baidu.com.dig vs nslookup:
dig输出更简洁、支持更多查询类型(+short、+trace、+stats等),适合脚本中使用;nslookup交互式更友好。运维推荐使用dig。
五、防火墙配置(ufw / iptables)
5.1 UFW 状态查看
ufw status verbose输出:
Status: inactiveUFW(Uncomplicated Firewall)是Ubuntu默认的防火墙前端工具,当前处于未激活状态。
5.2 UFW 规则配置
# 添加允许SSH和HTTP的规则ufw allow22/tcp ufw allow80/tcp# 查看规则状态ufw status verbose输出:
Rules updated Rules updated (v6) Rules updated Rules updated (v6) Status: inactive踩坑经验:在云服务器上不要轻易
ufw enable!云平台的安全组已经在网络层做了过滤,如果UFW配置不当(如忘记放行SSH端口),会导致SSH连接断开,只能通过VNC控制台恢复。UFW规则添加后仍需ufw enable才会生效。
5.3 iptables 直接操作
# 查看当前iptables规则iptables-L-n-v输出:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination当前所有链的策略都是ACCEPT,没有任何过滤规则。
5.4 iptables 添加和删除规则
# 添加规则:丢弃所有ICMP echo-request(阻止ping)iptables-AINPUT-picmp --icmp-type echo-request-jDROP# 查看添加后的规则iptables-LINPUT-n-v输出:
--- ICMP DROP rule added --- Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP 1 -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8# 删除规则iptables-DINPUT-picmp --icmp-type echo-request-jDROP# 确认规则已删除iptables-LINPUT-n-v输出:
--- ICMP DROP rule deleted --- Chain INPUT (policy ACCEPT 3 packets, 156 bytes) pkts bytes target prot opt in out source destinationiptables vs nftables:Ubuntu 24.04已默认使用nftables作为后端,
iptables命令实际上是nftables的兼容层。新系统推荐直接使用nft命令。查看nft规则集:nft list ruleset。
5.5 查看 NAT 表
iptables-tnat-L-n-v输出:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destinationNAT表为空,说明没有配置任何NAT规则(如端口映射、SNAT等)。
六、网络抓包(tcpdump)
6.1 基础抓包
tcpdump是Linux下最强大的网络抓包工具,运维排障必备:
# 抓取eth0上的5个数据包tcpdump-ieth0-c5-n输出:
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:42:24.506190 IP 192.168.0.171.22 > 124.70.79.109.29718: Flags [P.], seq 245237769:245237965, ack 378742638, win 517, length 196 15:42:24.515322 IP 192.168.0.171.22 > 124.70.64.180.29628: Flags [.], ack 1084132021, win 517, length 0 15:42:24.554152 IP 124.70.79.109.29718 > 192.168.0.171.22: Flags [.], ack 196, win 126, length 0 15:42:24.567611 IP 192.168.0.171.22 > 124.70.64.180.29628: Flags [P.], seq 0:68, ack 1, win 517, length 68 15:42:24.614386 IP 124.70.64.180.29628 > 192.168.0.171.22: Flags [.], ack 68, win 126, length 0 5 packets captured 19 packets received by filter 0 packets dropped by kernel输出解读:
IP 192.168.0.171.22 > 124.70.79.109.29718:从本机SSH端口22发往外部IPFlags [P.]:PSH+ACK标志,表示有数据推送Flags [.]:+ACK标志,确认包length 196:数据载荷长度196字节5 packets captured:成功捕获5个包
6.2 常用tcpdump过滤表达式
# 只抓ICMP包tcpdump-ieth0-c10-nicmp# 只抓某个端口的包tcpdump-ieth0-c10-nport22# 只抓某个主机的包tcpdump-ieth0-c10-nhost192.168.0.26# 抓取SYN包(TCP连接建立)tcpdump-ieth0-c10-n'tcp[tcpflags] & tcp-syn != 0'# 抓取HTTP请求tcpdump-ieth0-c10-n-A'tcp port 80'踩坑经验:tcpdump默认会解析主机名,加
-n参数禁用反向DNS解析可以大幅提高速度。生产环境抓包建议加-w file.pcap保存到文件,用Wireshark分析。
七、SSH端口转发与代理
7.1 SSH本地端口转发
# 将本地8080端口转发到远程服务器的80端口ssh-L8080:192.168.0.26:80 root@192.168.0.171原理:本地端口转发(Local Forwarding)将本地机器上的端口映射到远程服务器能访问的某个地址和端口。访问本地8080等于访问远程的192.168.0.26:80。
7.2 SSH远程端口转发
# 将远程服务器的9090端口转发到本地80端口ssh-R9090:localhost:80 root@192.168.0.171原理:远程端口转发(Remote Forwarding)方向相反,将远程服务器上的端口映射到本地能访问的地址。常用于内网穿透场景。
7.3 SSH动态端口转发(SOCKS代理)
# 创建SOCKS5代理ssh-D1080root@192.168.0.171原理:动态端口转发创建一个SOCKS5代理,浏览器或curl可以通过
proxychains等工具经此代理访问远程网络。常用于安全地访问内网资源。
八、网络服务管理(systemd-networkd / netplan)
8.1 systemd-networkd 服务状态
systemctl status systemd-networkd输出:
○ systemd-networkd.service - Network Configuration Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; disabled; preset: enabled) Active: inactive (dead) TriggeredBy: ○ systemd-networkd.socket Docs: man:systemd-networkd.service(8) man:org.freedesktop.network1(5) FD Store: 0 (limit: 512)当前systemd-networkd未运行,因为系统使用NetworkManager作为网络后端。
8.2 networkctl 接口状态
networkctl status输出:
systemd-networkd is not running, output might be incomplete. ● Interfaces: n/a State: n/a Online state: unknown Address: 192.168.0.171 on eth0 fe80::f816:3eff:fe72:ca75 on eth0 Gateway: 192.168.0.1 on eth08.3 Netplan 网络配置
Ubuntu使用Netplan作为网络配置的统一前端:
cat/etc/netplan/*.yaml输出:
network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: true eth1: dhcp4: true eth2: dhcp4: true eth3: dhcp4: true eth4: dhcp4: true配置解读:
renderer: NetworkManager:使用NetworkManager作为后端(也可以设为networkd)dhcp4: true:IPv4使用DHCP自动获取地址- 配置了eth0~eth4共5个网卡接口
实战技巧:修改netplan配置后需要执行
netplan apply使配置生效。如果配置错误导致网络断开,可以通过VNC控制台修复。
九、网络连接与套接字监控
9.1 ss 查看监听端口
ss-tlnp输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=5552,fd=3),("systemd",pid=1,fd=122)) LISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=531,fd=17)) LISTEN 0 10 127.0.0.1:29338 0.0.0.0:* users:(("uniagentd",pid=5792,fd=5)) LISTEN 0 10 127.0.0.1:29339 0.0.0.0:* users:(("uniagentd",pid=5793,fd=4)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=531,fd=15)) LISTEN 0 4096 [::]:22 [::]:* users:(("sshd",pid=5552,fd=4),("systemd",pid=1,fd=123))监听端口解读:
0.0.0.0:22:SSH服务,监听所有地址127.0.0.54:53/127.0.0.53:53:systemd-resolved DNS stub127.0.0.1:29338/29339:华为云uniagentd监控代理
9.2 ss 套接字统计
ss-s输出:
Total: 219 TCP: 20 (estab 5, closed 7, orphaned 0, timewait 7) Transport Total IP IPv6 RAW 0 0 0 UDP 5 4 1 TCP 13 11 2 INET 18 15 3 FRAG 0 0 0ss vs netstat:
ss是netstat的现代替代品,速度更快(直接读取内核socket结构而非遍历/proc)。推荐始终使用ss。
十、IPv6与IP转发
10.1 查看IPv6地址
ip-6addr show输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000 inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000 inet6 fe80::f816:3eff:fe72:ca75/64 scope link valid_lft forever preferred_lft forever当前只有链路本地地址(fe80::),没有全局IPv6地址。
10.2 IP转发状态
cat/proc/sys/net/ipv4/ip_forwardsysctlnet.ipv4.ip_forward输出:
0 net.ipv4.ip_forward = 0IP转发关闭,表示该服务器不会作为路由器转发数据包。如果需要作为路由器或使用Docker等容器技术,需要开启:sysctl -w net.ipv4.ip_forward=1。
10.3 ethtool 查看网卡信息
ethtooleth0输出:
Settings for eth0: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Speed: Unknown! Duplex: Unknown! (255) Auto-negotiation: off Port: Other PHYAD: 0 Transceiver: internal Link detected: yes虚拟网卡的速率和双工模式显示为Unknown,但Link detected: yes表示链路正常。
10.4 子网计算
python3-c" import ipaddress n = ipaddress.ip_network('192.168.0.0/24', strict=False) print(f'Network: {n.network_address}') print(f'Netmask: {n.netmask}') print(f'Broadcast: {n.broadcast_address}') print(f'Hosts: {list(n.hosts())[0]}-{list(n.hosts())[-1]}') print(f'Total hosts: {n.num_addresses-2}') "输出:
Network: 192.168.0.0 Netmask: 255.255.255.0 Broadcast: 192.168.0.255 Hosts: 192.168.0.1-192.168.0.254 Total hosts: 254十一、所有路由表详情
iproute show table all输出:
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 169.254.169.254 via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.171 metric 100 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.171 metric 100 local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1 local 192.168.0.171 dev eth0 table local proto kernel scope host src 192.168.0.171 broadcast 192.168.0.255 dev eth0 table local proto kernel scope link src 192.168.0.171 fe80::/64 dev eth0 proto kernel metric 256 pref medium local ::1 dev lo table local proto kernel metric 0 pref medium local fe80::f816:3eff:fe72:ca75 dev eth0 table local proto kernel metric 0 pref medium multicast ff00::/8 dev eth0 table local proto kernel metric 256 pref medium可以看到Linux内核维护了多张路由表:main(主路由表)、local(本机地址路由)以及IPv6路由表。
总结
本文在华为云ECS服务器上完整实操了Linux网络配置与管理的各个方面,涵盖以下核心内容:
| 模块 | 关键命令 | 核心知识点 |
|---|---|---|
| 网络接口配置 | ip addr、ip link、ifconfig | 接口状态、统计信息、虚拟接口 |
| 路由表管理 | ip route、ip rule | 静态路由、策略路由、多路由表 |
| 连通性测试 | ping、traceroute、nc、mtr | 内网互通、路径追踪、端口检测 |
| DNS配置 | resolvectl、nslookup、dig | systemd-resolved、DNS查询 |
| 防火墙 | ufw、iptables、nft | 规则管理、NAT表、nftables |
| 网络抓包 | tcpdump | 抓包过滤、协议分析 |
| SSH转发 | ssh -L/-R/-D | 本地/远程/动态端口转发 |
| 网络服务 | systemctl、netplan | systemd-networkd、Netplan配置 |
| 套接字监控 | ss | 监听端口、连接状态统计 |
踩坑经验汇总
- ifconfig不可用:Ubuntu 24.04默认不装net-tools,需
apt install net-tools - resolv.conf被管理:systemd-resolved管理,直接修改会被覆盖,用
resolvectl替代 - UFW启用风险:云服务器上启用UFW前务必放行SSH端口,否则会断连
- 临时路由失效:
ip route add添加的路由重启后消失,需写入配置文件持久化 - iptables已过时:Ubuntu 24.04使用nftables后端,推荐学习
nft命令 - 内网通信优先:VPC内网延迟0.1ms vs 外网293ms,服务间通信走内网
写在最后:Linux网络管理是运维工程师的核心技能。在云原生时代,虽然云平台提供了安全组、VPC等网络管理能力,但掌握底层的Linux网络命令仍然是排障、优化和自动化运维的基础。建议读者在测试环境中多加练习,形成肌肉记忆。