网络配置是Linux系统管理的重要技能,掌握网络配置可以帮助您搭建服务器、排查网络故障。本章将详细介绍Linux网络配置的各个方面。
网络接口:网络设备在操作系统中的抽象表示。
常见接口类型:
| 接口类型 | 说明 | 示例 |
|---|---|---|
| eth0 | 以太网接口 | eth0、ens33 |
| wlan0 | 无线网卡接口 | wlan0、wlp2s0 |
| lo | 本地回环接口 | 127.0.0.1 |
| docker0 | Docker网桥接口 | 172.17.0.1 |
| virbr0 | 虚拟网桥接口 | 192.168.122.1 |
| tun0 | VPN隧道接口 | tun0 |
东巴文理解:网络接口就像计算机的门,数据通过不同的门进出。
传统命名:
新式命名(systemd):
东巴文提示:新式命名规则更稳定,不会因硬件变化而改变接口名。
IPv4地址:32位地址,点分十进制表示。
IP地址分类:
| 类别 | 地址范围 | 私有地址范围 | 默认子网掩码 |
|---|---|---|---|
| A类 | 1.0.0.0-126.255.255.255 | 10.0.0.0/8 | 255.0.0.0 |
| B类 | 128.0.0.0-191.255.255.255 | 172.16.0.0/12 | 255.255.0.0 |
| C类 | 192.0.0.0-223.255.255.255 | 192.168.0.0/16 | 255.255.255.0 |
特殊IP地址:
| 地址 | 说明 |
|---|---|
| 127.0.0.1 | 本地回环地址 |
| 0.0.0.0 | 所有网络接口 |
| 255.255.255.255 | 广播地址 |
| 169.254.0.0/16 | 自动专用IP(APIPA) |
东巴文理解:IP地址就像家庭住址,用于在网络中定位设备。
子网掩码:用于划分网络地址和主机地址。
CIDR表示法:
子网掩码计算:
# 计算子网掩码
ipcalc 192.168.1.0/24
# 输出示例:
# Address: 192.168.1.0
# Netmask: 255.255.255.0 = 24
# Wildcard: 0.0.0.255
# =>
# Network: 192.168.1.0/24
# HostMin: 192.168.1.1
# HostMax: 192.168.1.254
# Broadcast: 192.168.1.255
# Hosts/Net: 254
IPv6地址:128位地址,冒号十六进制表示。
IPv6地址格式:
IPv6特殊地址:
| 地址 | 说明 |
|---|---|
| ::1 | 本地回环地址 |
| :: | 所有网络接口 |
| fe80::/10 | 链路本地地址 |
| fc00::/7 | 唯一本地地址 |
东巴文观点:IPv6是未来趋势,地址空间更大,配置更简单。
默认网关:连接不同网络的出口。
网关作用:
东巴文理解:网关就像小区的大门,所有进出小区的数据都要经过这里。
路由表:决定数据包转发路径的规则表。
路由表组成:
ip命令:Linux新一代网络配置工具,属于iproute2软件包。
ip命令优势:
ip命令子命令:
| 子命令 | 说明 | 替代命令 |
|---|---|---|
| ip addr | 地址管理 | ifconfig |
| ip link | 接口管理 | ifconfig |
| ip route | 路由管理 | route |
| ip neigh | ARP表管理 | arp |
# 查看所有网络接口
ip addr show
# 输出示例:
# 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
# valid_lft forever preferred_lft forever
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
# link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
# inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
# valid_lft 86398sec preferred_lft 86398sec
# inet6 fe80::20c:29ff:fe12:3456/64 scope link
# valid_lft forever preferred_lft forever
# 查看指定接口
ip addr show eth0
# 简写形式
ip a
ip a s eth0
# 查看接口统计信息
ip -s link show eth0
# 输出示例:
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
# link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
# RX: bytes packets errors dropped overrun mcast
# 1.2M 1500 0 0 0 0
# TX: bytes packets errors dropped carrier collsns
# 500K 800 0 0 0 0
# 添加IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
# 添加多个IP地址
sudo ip addr add 192.168.1.101/24 dev eth0
# 删除IP地址
sudo ip addr del 192.168.1.100/24 dev eth0
# 清空所有IP地址
sudo ip addr flush dev eth0
# 启用接口
sudo ip link set eth0 up
# 禁用接口
sudo ip link set eth0 down
# 修改MAC地址
sudo ip link set eth0 address 00:11:22:33:44:55
# 修改MTU
sudo ip link set eth0 mtu 9000
# 简写形式
sudo ip a add 192.168.1.100/24 dev eth0
sudo ip a del 192.168.1.100/24 dev eth0
东巴文最佳实践:使用ip命令配置的网络信息在重启后会丢失,需要持久化配置。
# 查看路由表
ip route show
# 输出示例:
# default via 192.168.1.1 dev eth0 proto dhcp metric 100
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
# 添加默认网关
sudo ip route add default via 192.168.1.1
# 添加静态路由
sudo ip route add 10.0.0.0/8 via 192.168.1.254
# 添加路由到指定接口
sudo ip route add 192.168.2.0/24 dev eth0
# 删除路由
sudo ip route del default via 192.168.1.1
# 删除所有路由
sudo ip route flush
# 简写形式
ip r
sudo ip r add default via 192.168.1.1
ifconfig:传统网络配置工具,属于net-tools软件包。
东巴文提示:ifconfig已被ip命令取代,但仍在广泛使用。
# 安装net-tools(如果未安装)
sudo apt install net-tools # Debian/Ubuntu
sudo dnf install net-tools # CentOS/RHEL
# 查看所有网络接口
ifconfig
# 输出示例:
# eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
# inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
# inet6 fe80::20c:29ff:fe12:3456 prefixlen 64 scopeid 0x20<link>
# ether 00:0c:29:12:34:56 txqueuelen 1000 (Ethernet)
# RX packets 1500 bytes 1200000 (1.2 MB)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 800 bytes 500000 (500.0 KB)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 查看指定接口
ifconfig eth0
# 启用接口
sudo ifconfig eth0 up
# 禁用接口
sudo ifconfig eth0 down
# 配置IP地址
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 配置IP地址和广播地址
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
# 添加虚拟IP
sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0
# 修改MAC地址
sudo ifconfig eth0 hw ether 00:11:22:33:44:55
# 启用混杂模式
sudo ifconfig eth0 promisc
# 禁用混杂模式
sudo ifconfig eth0 -promisc
# 查看路由表
route -n
# 输出示例:
# Kernel IP routing table
# Destination Gateway Genmask Flags Metric Ref Use Iface
# 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
# 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
# 添加默认网关
sudo route add default gw 192.168.1.1
# 删除默认网关
sudo route del default gw 192.168.1.1
# 添加静态路由
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254
# 删除静态路由
sudo route del -net 10.0.0.0 netmask 255.0.0.0
NetworkManager:Linux桌面和服务器的网络管理服务。
NetworkManager特点:
东巴文理解:NetworkManager是现代Linux系统的网络管理管家。
nmcli:NetworkManager的命令行工具。
# 查看网络设备状态
nmcli device status
# 输出示例:
# DEVICE TYPE STATE CONNECTION
# eth0 ethernet connected Wired connection 1
# lo loopback unmanaged --
# 查看连接
nmcli connection show
# 输出示例:
# NAME UUID TYPE DEVICE
# Wired connection 1 12345678-1234-1234-1234-123456789012 ethernet eth0
# 查看连接详情
nmcli connection show "Wired connection 1"
# 创建新连接(DHCP)
sudo nmcli connection add type ethernet con-name "eth0-dhcp" ifname eth0
# 创建新连接(静态IP)
sudo nmcli connection add type ethernet con-name "eth0-static" ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
# 修改连接
sudo nmcli connection modify "eth0-static" ipv4.addresses 192.168.1.101/24
# 修改DNS
sudo nmcli connection modify "eth0-static" ipv4.dns "8.8.8.8 8.8.4.4"
# 启用连接
sudo nmcli connection up "eth0-static"
# 禁用连接
sudo nmcli connection down "eth0-static"
# 删除连接
sudo nmcli connection delete "eth0-static"
# 重新加载配置
sudo nmcli connection reload
# 查看设备详情
nmcli device show eth0
nmtui:NetworkManager的文本界面工具。
# 启动nmtui
nmtui
nmtui功能:
东巴文提示:nmtui提供了友好的文本界面,适合不熟悉命令行的用户。
传统配置文件:/etc/network/interfaces
DHCP配置:
# The primary network interface
auto eth0
iface eth0 inet dhcp
静态IP配置:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
多IP配置:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0:1
iface eth0:1 inet static
address 192.168.1.101
netmask 255.255.255.0
配置说明:
| 配置项 | 说明 |
|---|---|
| auto | 开机自动启用 |
| iface | 接口配置 |
| address | IP地址 |
| netmask | 子网掩码 |
| gateway | 默认网关 |
| dns-nameservers | DNS服务器 |
东巴文提示:Ubuntu 18.04+默认使用Netplan,不再使用此配置文件。
Netplan配置目录:/etc/netplan/
配置文件示例:/etc/netplan/01-netcfg.yaml
DHCP配置:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
静态IP配置:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
多接口配置:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
eth1:
addresses:
- 10.0.0.100/24
应用配置:
# 验证配置
sudo netplan try
# 应用配置
sudo netplan apply
# 调试模式
sudo netplan --debug apply
东巴文最佳实践:Netplan配置文件使用YAML格式,注意缩进。
配置文件目录:/etc/sysconfig/network-scripts/
配置文件命名:ifcfg-<接口名>
DHCP配置:
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
静态IP配置:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
配置项说明:
| 配置项 | 说明 |
|---|---|
| TYPE | 接口类型 |
| BOOTPROTO | 启动协议(dhcp/static) |
| DEFROUTE | 是否为默认路由 |
| NAME | 连接名称 |
| DEVICE | 设备名称 |
| ONBOOT | 开机是否启用 |
| IPADDR | IP地址 |
| NETMASK | 子网掩码 |
| GATEWAY | 默认网关 |
| DNS1/DNS2 | DNS服务器 |
重启网络服务:
# CentOS 7
sudo systemctl restart network
# CentOS 8+/RHEL 8+
sudo nmcli connection reload
sudo nmcli connection up eth0
东巴文提示:CentOS 8+推荐使用nmcli管理网络。
DNS配置文件:/etc/resolv.conf
配置示例:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
options timeout:2 attempts:3
配置项说明:
| 配置项 | 说明 |
|---|---|
| nameserver | DNS服务器地址 |
| search | 搜索域名 |
| options | 选项(超时、重试次数等) |
东巴文提示:现代Linux系统会自动管理此文件,手动修改可能被覆盖。
systemd-resolved:systemd提供的DNS解析服务。
# 查看状态
systemctl status systemd-resolved
# 配置文件
sudo vim /etc/systemd/resolved.conf
# 配置示例:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1
Domains=~.
LLMNR=no
DNSSEC=no
# 重启服务
sudo systemctl restart systemd-resolved
# 创建软链接
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
ping:测试网络连通性。
# 测试连通性
ping 8.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=117 time=10.5 ms
# 64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=10.3 ms
# 64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=10.4 ms
# ^C
# --- 8.8.8.8 ping statistics ---
# 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
# rtt min/avg/max/mdev = 10.326/10.411/10.526/10.079 ms
# 指定次数
ping -c 4 8.8.8.8
# 指定间隔
ping -i 0.5 8.8.8.8
# 指定包大小
ping -s 1000 8.8.8.8
# 测试域名
ping google.com
# 持续ping(Ctrl+C停止)
ping 8.8.8.8
东巴文理解:ping就像敲门,确认对方是否在家。
ping6:测试IPv6连通性。
# 测试IPv6连通性
ping6 ::1
# 测试IPv6地址
ping6 2001:4860:4860::8888
# 指定接口
ping6 -I eth0 fe80::1
traceroute:追踪数据包路由路径。
# 安装traceroute
sudo apt install traceroute # Debian/Ubuntu
sudo dnf install traceroute # CentOS/RHEL
# 追踪路由
traceroute google.com
# 输出示例:
# traceroute to google.com (142.250.189.238), 30 hops max, 60 byte packets
# 1 _gateway (192.168.1.1) 1.234 ms 1.123 ms 1.012 ms
# 2 10.0.0.1 (10.0.0.1) 5.678 ms 5.567 ms 5.456 ms
# 3 172.16.0.1 (172.16.0.1) 10.123 ms 10.012 ms 9.901 ms
# 4 * * *
# 5 142.250.189.238 (142.250.189.238) 15.678 ms 15.567 ms 15.456 ms
# 使用ICMP协议
traceroute -I google.com
# 使用TCP协议
traceroute -T google.com
# 指定端口
traceroute -p 80 google.com
# IPv6路由追踪
traceroute6 google.com
东巴文理解:traceroute就像快递追踪,显示包裹经过的每个站点。
tracepath:追踪路径MTU。
# 追踪路径
tracepath google.com
# 输出示例:
# 1?: [LOCALHOST] pmtu 1500
# 1: _gateway 1.234ms
# 1: _gateway 1.123ms
# 2: 10.0.0.1 5.678ms
# 3: 172.16.0.1 10.123ms
# 4: no reply
# 5: 142.250.189.238 15.678ms
# Resume: pmtu 1500 hops 5 back 5
nslookup:查询DNS记录。
# 查询域名
nslookup google.com
# 输出示例:
# Server: 8.8.8.8
# Address: 8.8.8.8#53
#
# Non-authoritative answer:
# Name: google.com
# Address: 142.250.189.238
# Name: google.com
# Address: 2607:f8b0:4004:800::200e
# 指定DNS服务器
nslookup google.com 8.8.8.8
# 查询MX记录
nslookup -query=mx gmail.com
# 查询NS记录
nslookup -query=ns google.com
# 查询所有记录
nslookup -query=any google.com
# 反向查询
nslookup 8.8.8.8
dig:DNS查询工具。
# 查询域名
dig google.com
# 输出示例:
# ; <<>> DiG 9.16.1-Ubuntu <<>> google.com
# ;; global options: +cmd
# ;; Got answer:
# ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
# ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
#
# ;; OPT PSEUDOSECTION:
# ; EDNS: version: 0, flags:; udp: 512
# ;; QUESTION SECTION:
# ;google.com. IN A
#
# ;; ANSWER SECTION:
# google.com. 299 IN A 142.250.189.238
#
# ;; Query time: 15 msec
# ;; SERVER: 8.8.8.8#53(8.8.8.8)
# ;; WHEN: Mon Jan 01 10:00:00 CST 2024
# ;; MSG SIZE rcvd: 55
# 简短输出
dig +short google.com
# 指定DNS服务器
dig @8.8.8.8 google.com
# 查询MX记录
dig google.com MX
# 查询NS记录
dig google.com NS
# 查询SOA记录
dig google.com SOA
# 查询TXT记录
dig google.com TXT
# 反向查询
dig -x 8.8.8.8
# 追踪DNS解析过程
dig +trace google.com
东巴文提示:dig命令功能更强大,适合DNS故障排查。
host:简单的DNS查询工具。
# 查询域名
host google.com
# 输出示例:
# google.com has address 142.250.189.238
# google.com has IPv6 address 2607:f8b0:4004:800::200e
# google.com mail is handled by 10 smtp.google.com.
# 查询MX记录
host -t mx google.com
# 查询NS记录
host -t ns google.com
# 反向查询
host 8.8.8.8
netstat:网络统计信息。
# 查看所有连接
netstat -a
# 查看TCP连接
netstat -t
# 查看UDP连接
netstat -u
# 查看监听端口
netstat -l
# 查看端口号和PID
netstat -tulpn
# 输出示例:
# Active Internet connections (only servers)
# Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
# tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
# tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5678/mysqld
# tcp6 0 0 :::80 :::* LISTEN 9012/nginx
# 查看路由表
netstat -r
# 查看网络统计
netstat -i
# 查看接口统计
netstat -ie
# 持续监控
netstat -c
东巴文提示:netstat已被ss命令取代,但仍在广泛使用。
ss:socket统计工具。
# 查看所有连接
ss -a
# 查看TCP连接
ss -t
# 查看UDP连接
ss -u
# 查看监听端口
ss -l
# 查看端口号和PID
ss -tulpn
# 输出示例:
# Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
# tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
# tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=5678,fd=33))
# tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=9012,fd=6))
# 查看已建立的连接
ss -tu
# 查看进程信息
ss -p
# 查看内存使用
ss -m
# 查看统计信息
ss -s
# 输出示例:
# Total: 1234 (kernel 2345)
# TCP: 567 (estab 345, closed 123, orphaned 0, synrecv 0, timewait 89/0), ports 0
#
# Transport Total IP IPv6
# * 2345 - -
# RAW 1 0 1
# UDP 12 6 6
# TCP 444 222 222
# INET 457 228 229
# FRAG 0 0 0
lsof:列出打开的文件。
# 查看端口占用
sudo lsof -i :80
# 输出示例:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# nginx 9012 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)
# 查看所有网络连接
sudo lsof -i
# 查看TCP连接
sudo lsof -i TCP
# 查看UDP连接
sudo lsof -i UDP
# 查看指定进程的网络连接
sudo lsof -i -a -p 1234
# 查看指定用户的网络连接
sudo lsof -i -u nginx
tcpdump:网络抓包工具。
# 安装tcpdump
sudo apt install tcpdump # Debian/Ubuntu
sudo dnf install tcpdump # CentOS/RHEL
# 抓取所有数据包
sudo tcpdump
# 抓取指定接口
sudo tcpdump -i eth0
# 抓取指定主机
sudo tcpdump host 192.168.1.100
# 抓取指定端口
sudo tcpdump port 80
# 抓取TCP数据包
sudo tcpdump tcp
# 抓取UDP数据包
sudo tcpdump udp
# 抓取ICMP数据包
sudo tcpdump icmp
# 抓取指定数量的包
sudo tcpdump -c 100
# 保存到文件
sudo tcpdump -w capture.pcap
# 从文件读取
sudo tcpdump -r capture.pcap
# 显示详细信息
sudo tcpdump -v
# 显示ASCII内容
sudo tcpdump -A
# 显示十六进制内容
sudo tcpdump -X
# 组合条件
sudo tcpdump -i eth0 -nn -vvv 'tcp and port 80 and host 192.168.1.100'
东巴文理解:tcpdump就像网络摄像头,记录所有经过的数据包。
Wireshark:图形化网络分析工具。
# 安装Wireshark
sudo apt install wireshark # Debian/Ubuntu
sudo dnf install wireshark # CentOS/RHEL
# 启动Wireshark
sudo wireshark
# 命令行工具tshark
sudo tshark -i eth0
标准排查流程:
东巴文最佳实践:按照从底层到高层的顺序排查网络问题。
问题1:无法连接网络
# 1. 检查接口状态
ip link show
# 2. 检查IP地址
ip addr show
# 3. 测试本地回环
ping 127.0.0.1
# 4. 测试网关
ping 192.168.1.1
# 5. 测试外网IP
ping 8.8.8.8
# 6. 测试DNS
ping google.com
问题2:DNS解析失败
# 1. 检查DNS配置
cat /etc/resolv.conf
# 2. 测试DNS服务器
nslookup google.com 8.8.8.8
# 3. 检查DNS服务
systemctl status systemd-resolved
# 4. 手动配置DNS
sudo vim /etc/resolv.conf
问题3:网络速度慢
# 1. 检查网络接口速率
ethtool eth0
# 2. 检查网络延迟
ping -c 10 google.com
# 3. 检查带宽
speedtest-cli
# 4. 检查网络拥塞
traceroute google.com
Ubuntu 20.04+ (Netplan):
# 编辑配置文件
sudo vim /etc/netplan/00-installer-config.yaml
# 配置内容
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
# 应用配置
sudo netplan apply
CentOS 8+ (nmcli):
# 创建连接
sudo nmcli connection add type ethernet con-name "eth0-static" ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
# 配置DNS
sudo nmcli connection modify "eth0-static" ipv4.dns "8.8.8.8 8.8.4.4"
# 启用连接
sudo nmcli connection up "eth0-static"
场景:一个网卡连接外网,一个网卡连接内网。
# Netplan配置
network:
version: 2
renderer: networkd
ethernets:
eth0: # 外网网卡
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
eth1: # 内网网卡
addresses:
- 10.0.0.100/24
# 不配置网关,避免路由冲突
添加静态路由:
# 添加内网路由
sudo ip route add 10.0.0.0/8 via 10.0.0.1 dev eth1
# 持久化路由(Netplan)
network:
version: 2
renderer: networkd
ethernets:
eth1:
addresses:
- 10.0.0.100/24
routes:
- to: 10.0.0.0/8
via: 10.0.0.1
创建网桥:
# Ubuntu (Netplan)
network:
version: 2
renderer: networkd
bridges:
br0:
interfaces: [eth0]
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
# 应用配置
sudo netplan apply
CentOS (nmcli):
# 创建网桥
sudo nmcli connection add type bridge con-name br0 ifname br0
# 配置IP地址
sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
sudo nmcli connection modify br0 ipv4.gateway 192.168.1.1
sudo nmcli connection modify br0 ipv4.dns "8.8.8.8"
sudo nmcli connection modify br0 ipv4.method manual
# 添加接口到网桥
sudo nmcli connection add type bridge-slave con-name br0-port0 ifname eth0 master br0
# 启用网桥
sudo nmcli connection up br0
✅ 理解网络基础概念 ✅ 掌握ip和nmcli命令 ✅ 学会配置网络文件 ✅ 掌握网络诊断工具 ✅ 能够排查网络故障
完成本章学习后,请确认您能够:
东巴文(db-w.cn) - 让Linux学习更简单