CentOS网络配置主要围绕IP地址、子网掩码、网关、主机名、DNS等关键参数展开。实现这些配置的途径有三种:传统的ifcfg命令族、新一代的iproute2工具集,以及直接修改配置文件。本文将从这三个方面进行详细讲解。
一、ifcfg系命令(传统网络配置工具)
ifcfg命令族包括ifconfig、route、netstat和hostname,早期Linux系统管理员几乎每天都在使用它们完成网络设置。
1、ifconfig命令详解
ifconfig命令,顾名思义,用于配置和查看网络接口信息。其基本用法包括以下几种:
a) ifconfig [-a] [interface]
参数-a用于显示包括非活动(inactive)状态在内的全部网络接口信息。
~]# ifconfig -a
b) ifconfig IFACE IPADDR netmask NETMASK [up|down]
直接为接口设置IP地址和子网掩码,并可启用或停用该接口。需要注意的是,此命令立即生效,但重启服务或系统后配置会丢失,因为它直接写入内核协议栈而非配置文件。
~]# ifconfig eth1 172.16.7.14 netmask 255.255.0.0
~]# ifconfig eth1 172.16.7.14/16 down
2、route命令详解
route命令用于显示和修改IP路由表。常见用法如下:
a) route [-n] 查看全部路由表,并以数字形式显示IP地址(避免DNS解析)。
~]# route -n
b) route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 添加路由条目。
~]# route add -host 172.16.7.14 gw 172.16.0.1 dev eth1 # 添加主机路由
~]# route add -net 172.16.7.0/24 gw 172.16.0.1 dev eth1 # 添加网段路由
~]# route add default gw 172.16.0.1 dev eth1 # 添加默认路由
c) route del [-net|-host] target [netmask Nm] [[dev] If] 删除路由条目。
~]# route del -host 172.16.7.14 dev eth1
~]# route del -net 172.16.7.0/24 dev eth1
~]# route del default dev eth1
3、netstat命令详解
netstat是一个多用途工具,可用于显示网络连接、路由表、接口统计信息等。其基本格式如下:
netstat [-n] [-r] [-p] [-e] [-a] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [-i] [-I]
-n:以数字格式显示IP地址和端口,不进行名称解析-r:显示内核路由表-p:显示关联的进程ID和名称-e:显示扩展信息(如用户等)-a:显示所有连接状态(包括监听和非监听)-t:仅显示TCP连接-u:仅显示UDP连接-w:仅显示原始套接字连接-l:仅显示处于监听状态的连接-i:显示所有网络接口的统计信息-I:显示指定接口的统计信息
常用组合包括 -tan、-uan、-tln、-uln、-tunlp 等。
~]# netstat -tan
~]# netstat -Ieth1
4、hostname命令详解
hostname命令用于查看和临时设置主机名。用法简单直接:
hostname:显示当前主机名
hostname HOSTNAME:修改主机名,但仅当前会话有效,重启后恢复原值。
~]# hostname
~]# hostname TEST
5、hostnamectl命令(CentOS7新增永久修改方式)
CentOS7引入了hostnamectl命令,相比hostname功能更全面:
hostnamectl [status]:查看当前主机名及相关信息
hostnamectl set-hostname:设置主机名,且永久保存。
~]# hostnamectl set-hostname CentOS7
二、iproute2系命令(新一代网络配置工具)
iproute2是替代ifcfg系列的新一代网络配置工具集,功能更强大、语法更清晰。主要包括ip link、ip addr、ip route、ip netns以及ss等命令。
1、ip link命令详解
该命令用于配置网络接口属性,如启用、禁用、重命名、设置MTU等。
a) ip link set [dev] IFACE [up|down] [multicast on|off] [name IFACE] [mtu NUMBER]
up|down:启用或禁用指定接口multicast on|off:开启或关闭组播功能name NAME:重命名接口(需先down掉接口)mtu NUMBER:设置最大传输单元,默认值为1500
~]# ip link set eth1 name eth2 up
~]# ip link set eth2 multicast off mtu 1000
b) ip link [show|list] 显示所有网络接口的当前属性。
~]# ip link show
2、ip addr命令详解
用于管理网络接口的IP地址。
a) ip addr add IPADDR dev IFACE [label NAME] [broadcast ADDRESS] [scope SCOPE_VALUE] 添加IP地址。
label NAME:为额外地址指定接口别名;broadcast 通常由系统自动计算;scope 可选 global(全局可用)、link(仅链路本地)、host(仅本机可用)。
~]# ip addr add 172.16.7.14/24 dev eth1 label eth1:0
b) ip addr delete IPADDR dev IFACE 删除指定IP地址。
~]# ip addr del 172.16.7.14/24 dev eth1:0
c) ip addr show [dev IFACE|label IFACE:#] 显示指定接口或别名的地址信息。
~]# ip addr show label eth1:0
~]# ip addr show eth1
d) ip addr flush [dev] {IFACE|label IFACE:#} 清空指定接口或别名的所有IP地址。
~]# ip addr flush label eth1:0
~]# ip addr flush eth1
3、ip route命令详解
用于管理路由表。
a) ip route add TYPE PREFIX via GateWay [dev IFACE] [src SOURCE_IP] 添加路由条目。
~]# ip route add 172.16.7.14 via 172.16.0.1 dev eth1
~]# ip route add 172.16.7.0/24 via 172.16.0.1 dev eth1
~]# ip route add default via 172.16.0.1 dev eth1
b) ip route del TYPE PREFIX 删除路由。
~]# ip route del 172.16.7.14
~]# ip route del 172.16.7.0/24
c) ip route show 显示路由表。
~]# ip route show
d) ip route flush dev IFACE 清空指定接口关联的所有路由。
~]# ip route flush dev eth1
4、ss命令详解
ss命令与netstat功能类似,用于查看网络套接字状态,但查询效率更高。其选项与netstat高度兼容,并支持灵活的过滤器。
格式:ss [options] [filter]
filter 示例:FILTER := [ state TCP-STATE ] [ EXPRESSION ]
常用选项:-t(TCP)、-u(UDP)、-w(原始套接字)、-l(监听状态)、-a(所有状态)、-n(数字格式)、-e(扩展信息)、-p(显示进程和PID)、-m(内存使用量)、-o(计时器信息)。
EXPRESSION 中可使用 dport 和 sport 进行端口过滤,例如 '( dport = :22 or sport = :22 )'。
~]# ss -tan # 查看当前所有TCP连接状态
三、网络配置文件(永久生效的配置方法)
通过直接编辑相关配置文件,可以实现重启后依然生效的网络配置。修改后需要通知内核重新加载配置。
1、IP/NETMASK/GW/DNS等属性的配置文件
路径:/etc/sysconfig/network-scripts/ifcfg-IFACE
该文件常见字段说明:
DEVICE:网络接口设备名称ONBOOT:系统引导时是否激活该接口NETBOOT:是否支持网络启动UUID:接口唯一标识符IPv6INT:是否初始化IPv6协议BOOTPROTO:获取IP地址的协议,常用 dhcp、bootp、static、noneTYPE:接口类型,如 ethernet、bridgeDNS1、DNS2:域名服务器地址DOMAIN:DNS搜索域GATEWAY:默认网关IPADDR、NETMASK(CentOS7还支持使用PREFIX替代子网掩码)USERCTL:是否允许普通用户控制该接口PEERDNS:DHCP获取IP时是否覆盖手动设置的DNSHWADDR:MAC地址NM_CONTROLLED:是否由NetworkManager管理
配置文件示例:
# network-scripts]# cat ifcfg-eth1
DEVICE="eth1"
ONBOOT=yes
NETBOOT=yes
IPADDR=172.16.7.14
DNS=172.16.0.1
GATEWAY=172.16.0.1
NETMASK=255.255.0.0
IPV6INIT=no
BOOTPROTO=none
TYPE=Ethernet
2、路由配置文件
路径:/etc/sysconfig/network-scripts/route-IFACE
路由配置文件支持两种格式(不能混用):
- 格式a:每行一个路由条目,格式为
TARGET via GW - 格式b:每三行构成一个条目,依次为
ADDRESS#=TARGET、NETMASK#=MASK、GATEWAY#=NEXTHOP
示例:
# network-scripts]# cat route-eth1
172.16.7.0/24 via 172.16.0.1
3、主机名配置文件
路径:/etc/sysconfig/network
格式:HOSTNAME=
# sysconfig]# cat network
# Created by anaconda
HOSTNAME=centos7.1
4、DNS服务器指向配置文件
路径:/etc/resolv.conf
格式:nameserver DNS_SERVER_IP
# etc]# cat resolv.conf
# Generated by NetworkManager
search magelinux.com
nameserver 172.16.0.1
四、结语
在Linux系统学习过程中,网络配置是必须掌握的核心技能。相关命令工具在不断演进,许多功能存在多种实现方式——优先掌握简单高效的方法往往能事半功倍。此外,CentOS7中还提供了nmtui等图形化工具,在特定场景下也很实用。无论采用哪种方式,深入理解底层原理才是网络配置的长久之道。
