在Linux系统中配置网络是日常运维和开发的基础操作,涉及IP地址、子网掩码、网关、DNS等核心参数的设置,以及网络服务的启动与管理,本文将详细讲解Linux网络配置的完整流程,涵盖静态IP、动态IP(DHCP)、DNS与网关配置、网络服务管理及常见故障排查方法,帮助用户快速掌握网络连通性配置。
网络配置基础概念
在开始配置前,需明确网络通信的核心要素:
- IP地址:设备在网络中的唯一标识,分为IPv4(如192.168.1.100)和IPv6。
- 子网掩码:用于区分网络位和主机位,与IP地址配合确定网络范围(如255.255.255.0表示前24位为网络位)。
- 默认网关:本地网络通往其他网络的出口地址,通常是路由器的IP(如192.168.1.1)。
- DNS服务器:负责域名与IP地址的解析,公共DNS如8.8.8.8(Google)、114.114.114.114(国内)。
静态IP地址配置
静态IP适用于需要固定网络环境的服务器或设备,配置方式因Linux发行版而异,主要分为RedHat系(CentOS、RHEL等)和Debian系(Ubuntu、Debian等)。
RedHat系(使用ifcfg配置文件)
以CentOS 7为例,网卡配置文件位于/etc/sysconfig/network-scripts/
,文件名格式为ifcfg-网卡名
(如ifcfg-ens33
)。
配置步骤:
(1)编辑网卡配置文件,使用vi
或nano
打开:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
(2)修改关键参数(以下为示例配置):
TYPE=Ethernet # 网络类型 BOOTPROTO=static # 静态IP(dhcp为动态) IPADDR=192.168.1.100 # IP地址 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 默认网关 DNS1=8.8.8.8 # 主DNS DNS2=114.114.114.114 # 备用DNS ONBOOT=yes # 开机自启网络
(3)保存文件后重启网络服务:
systemctl restart network
Debian系(使用netplan或interfaces)
Ubuntu 18.04及后续版本推荐使用netplan
,配置文件位于/etc/netplan/
下(如01-network-manager-all.yaml
);旧版Ubuntu使用/etc/network/interfaces
。
netplan配置示例:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no # 关闭DHCP addresses: [192.168.1.100/24] # IP地址/子网掩码位数 gateway4: 192.168.1.1 # 默认网关 nameservers: addresses: [8.8.8.8, 114.114.114.114]
应用配置:
netplan apply
不同发行版静态IP配置对比
参数 | RedHat系(ifcfg) | Debian系(netplan) | 说明 |
---|---|---|---|
IP地址 | IPADDR=192.168.1.100 | addresses: [192.168.1.100/24] | RedHat需单独指定子网掩码,netplan通过 CIDR 表示 |
子网掩码 | NETMASK=255.255.255.0 | /24(在addresses中) | 子网掩码与IP合并为CIDR格式 |
网关 | GATEWAY=192.168.1.1 | gateway4: 192.168.1.1 | 指定默认网关 |
DNS | DNS1=8.8.8.8 | nameservers: addresses: […] | 支持多个DNS地址 |
开机自启 | ONBOOT=yes | 无需配置(默认生效) | netplan默认开机启动网络 |
动态IP(DHCP)配置
动态IP适用于客户端设备,通过DHCP服务器自动获取IP地址、网关和DNS。
配置步骤:
- RedHat系:修改网卡配置文件中的
BOOTPROTO=dhcp
,确保ONBOOT=yes
,重启网络服务。 - Debian系(netplan):将
dhcp4: yes
或删除addresses
和gateway4
配置,运行netplan apply
。
验证DHCP获取:
dhclient ens33 # 手动触发DHCP客户端(RedHat系) ip addr show ens33 # 查看IP是否获取成功
DNS与网关配置
DNS配置
除了在网卡配置文件中设置DNS,还可直接修改/etc/resolv.conf
(临时生效,部分系统重启后会恢复,需结合网卡配置或NetworkManager持久化)。
echo "nameserver 8.8.8.8" > /etc/resolv.conf
网关配置
- RedHat系:在
/etc/sysconfig/network
中添加GATEWAY=192.168.1.1
(全局网关)。 - Debian系:在netplan或interfaces中配置
gateway4
。
多网卡场景:若存在多个网卡,需通过ip route
指定默认路由,避免网关冲突:
ip route add default via 192.168.1.1 dev ens33
网络服务管理
常用网络服务命令
命令 | 用途 | 示例 |
---|---|---|
systemctl restart network | 重启网络服务(RedHat系) | systemctl restart network |
systemctl restart networking | 重启网络服务(Debian系) | systemctl restart networking |
nmcli con up ens33 | 通过NetworkManager启动网卡 | nmcli con up ens33 |
ifup ens33 | 启用指定网卡 | ifup ens33 |
ifdown ens33 | 禁用指定网卡 | ifdown ens33 |
NetworkManager工具
现代Linux发行版(如Ubuntu、CentOS 8+)默认使用NetworkManager管理网络,可通过nmcli
命令行工具快速配置:
# 添加静态IP连接 nmcli con add type ethernet con-name static-ip ifname ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 # 启用连接 nmcli con up static-ip
网络故障排查
常用诊断命令
命令 | 用途 | 示例 |
---|---|---|
ip addr show | 查看网卡IP配置 | ip addr show ens33 |
ping 8.8.8.8 | 测试网络连通性 | ping -c 4 8.8.8.8 |
traceroute 8.8.8.8 | 跟踪路由路径 | traceroute 8.8.8.8 |
netstat -tuln | 查听端口状态 | netstat -tuln |
ss -tuln | 替代netstat查看端口(更快) | ss -tuln |
nslookup www.baidu.com | 查询域名解析 | nslookup www.baidu.com |
journalctl -u network | 查看网络服务日志 | journalctl -u network -f |
典型问题排查思路
- 无法获取IP:检查网卡是否启用(
ip link show
)、DHCP服务是否运行(systemctl status dhcpd
)。 - 无法上网:检查网关是否正确(
ip route
)、DNS是否可解析(nslookup
)、防火墙是否拦截(firewall-cmd --list-all
)。
相关问答FAQs
Q1: Linux网络配置后无法上网,如何排查?
A1: 可按以下步骤排查:
- 检查IP配置:
ip addr show
确认IP、子网掩码是否正确; - 测试网关连通性:
ping 网关IP
(如192.168.1.1),若不通检查网线或路由器; - 测试DNS解析:
ns www.baidu.com
,若失败修改/etc/resolv.conf
为公共DNS; - 检查路由:
ip route
确认默认路由存在; - 检查防火墙:
systemctl stop firewalld
临时关闭,验证是否为防火墙拦截。
Q2: 如何在Linux中设置双网卡绑定(bonding)以提高网络可靠性?
A2: 双网卡绑定(bonding)可将多个网卡虚拟为一个,实现负载均衡或故障转移,以CentOS为例:
- 安装bonding工具:
yum install -y bonding
; - 编辑网卡配置文件,创建bond0接口:
# /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 TYPE=Bond BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes BONDING_OPTS="mode=1 miimon=100" # mode=1表示主备模式,miimon=100为检测间隔(ms)
- 修改物理网卡配置(如ens33、ens34),将其加入bond0:
# /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE=ens33 TYPE=Ethernet ONBOOT=yes MASTER=bond0 SLAVE=yes
- 重启网络服务:
systemctl restart network
,验证ip addr show bond0
是否获取到IP。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/24067.html