查看网络设备信息
本文中,范例均在说明文字的 下方。
网卡
lspci
可以查看网卡的品牌和型号:
# lspci | grep -i 'eth'
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
ethtool
该工具用于查询或控制网络驱动以及硬件的设置。
不加参数运行为查看某个网卡接口的详细信息。
$ ethtool ens33
Settings for ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full # 支持千兆双工
Supported pause frame use: No
Supports auto-negotiation: Yes # 支持自适应
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes # 默认使用自适应模式
Speed: 1000Mb/s # 当前网卡工作速度
Duplex: Full # 全双工
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes # 当前有网线连接
查看网络接口
ifconfig -a
查看所有网络接口的属性,无论在线还是离线。
$ ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.77 netmask 255.255.255.0 broadcast 192.168.1.255
......
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
......
ip link show
查看数据链路层当前可用设备信息。
$ ip link show
1: lo: <LOOPBACK> mtu 16436 qdisc noqueue state DOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether b8:97:5a:17:b3:8f brd ff:ff:ff:ff:ff:ff
管理网络配置
主机名
静态主机名
static hostname
静态主机名 是系统启动时内核会引用的默认主机名,通常关注 这个主机名即可。它通常保存在 /etc/hostname 文件中。
查看
查看静态主机名:
$ hostnamectl status
Static hostname: localhost
Transient hostname: localhost.localdomain
Icon name: computer-container
Chassis: container
Machine ID: c02dd0f0a9b74c00b232d39819dbff61
Boot ID: a4dbaa87203040858654e13e0cc00376
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab127.2
Architecture: x86-64
$ nmcli general hostname
localhost
$ hostname
localhost
修改
🍎 修改静态主机名:
nmcli general hostname MATRIX
hostnamectl set-hostname "Your-Hostname"
动态主机名
transient :由内核维护的动态主机名,系统启动后 默认与静态主机名相同。但在 运行时,可被 DHCP 或 mDNS 修改。
修改动态主机名:
hostnamectl --transient set-hostname BILL
pretty hostname
这种主机名只是给用户看的,内核完全用不到。可以是任意格式 UTF8 字符。
网卡命名
主流网卡使用以太网络协议,称这种网络接口为 eth0 等。
CentOS 7 开始,使用新规则对网卡的命名:
- eno1 :主板内置的网卡
- ens1 :主板内置的 PCI-E 接口的网卡
- enp2s0 :PCI-E 接口的独立网卡,可能有多个接口,s0, s1…
- eth0 :如果上述名称都不适用,就用默认网卡编号
用 ifconfig -a 会列出全部网卡。CentOS 7 不希望用户手动修改配置文件,而应该使用 nmcli 命令来设置网络参数。
连接
connection
NetworkManager 把所有的网络配置文件都保存为一个个的 “连接”,因此 连接中所保存的实际上是二层信息、IP 地址等数据,这些数据共同描述了创建并连接到网络的具体方式。连接的生成与使用状态均由 NetworkManager 控制。
当一个网络接口使用某个连接的配置来创建连接或连接到网络时,我们说一个连接处于 激活(active)状态。
一个网络接口(device)可以有 多个连接,但 同时只能有一个被激活。
之所以使用多个连接,是为了 快速切换不同的网络配置。
假如某台主机通常连接到使用 DHCP 的网络,但有时需要使用静态 IP 地址连接到某个测试网络,这两种情况的网络设置可以分别保存为一个配置文件,每次切换配置文件就可以直接切换 IP 地址的设置了。
作为连接的这些配置文件通常保存在 /etc/sysconfig/network-scripts/ 目录,文件名前缀为 ifcfg- 开头。
“连接” 一词 仅在本小节 用来专指这种 网络配置文件。其它小节出现的连接均指通常语义中的网络连接。
启用、禁用全局网络
启用、禁用网络。网络被禁用时,所有 NM 管理的接口都会停用。
nmcli networking on/off
创建连接
nmcli connection add type ... ifname ... con-name ...
type 连接类型
type 的取值可以是:
ethernetwifiwimaxpppoegsmcdmainfinibandbluetoothvlanbondbond-slaveteamteam-slavebridgebridge-slavevpnolpc-meshadsltunip-tunnelmacvlanvxlandummy
ifname 接口名称
指定这个新连接要使用哪个接口。
con-name 连接名称
指定新连接的名称。如未指定,默认命名格式为 type-ifname[-number]
添加动态地址连接
nmcli connection add type ethernet ifname ens33 con-name MATRIX
配置会保存为 /etc/sysconfig/network-scripts/ifcfg-MATRIX。
再次激活该接口之前,NetworkManager 不会意识到对 ifcfg 文件的手动更改。要想立即生效,必须使用 nmcli con reload。
添加静态地址连接
~]$ nmcli connection add type ethernet con-name LAB ifname ens33 ip4 192.168.1.56/24 gw4 192.168.1.1
~]$ nmcli con add type ethernet con-name LAB ifname ens9 ip4 10.10.10.10/24 gw4 10.10.10.254
查看连接
🍎 查看所有连接:
nmcli connection show
查看指定连接的配置参数:
nmcli connection show ens33
🍎 查看已激活的连接:
nmcli connection show --active
启用连接
🍎 启用指定连接:
nmcli connection up id bond0`
停用连接
停用该接口的连接。之后 有可能 被自动连接的设置所 激活。
nmcli connection down id port0`
查看网络参数
IP 地址
🍎 查看所有网络接口的各协议地址,包括 IP 地址:
ip addr
路由表
🍎 查看路由表:
route -n
#### 修改连接参数
命令中,connection 可以简写为 con:
主机名
修改 “连接到 DHCP 服务器时” 给自己配置的主机名。如连接到 WIFI 时。
~]$ nmcli con modify my-office ipv4.dhcp-hostname ZION ipv6.dhcp-hostname ZION
客户端名
修改发送到 DHCP 服务器的 IPv4 客户端名称。如连接到 WIFI 时。
~]$ nmcli con modify my-office ipv4.dhcp-client-id neo
DNS 服务器
🍎 修改 DNS 服务器地址:
~]$ nmcli con modify test-lab ipv4.dns "8.8.8.8 8.8.4.4"
~]$ nmcli con modify test-lab ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
忽略 DHCP 服务器发送到主机的 DNS 服务器:
~]$ nmcli con modify my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
添加 DNS 服务器地址:
~]$ nmcli con mod test-lab +ipv4.dns "8.8.8.8 8.8.4.4"
~]$ nmcli con mod test-lab +ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
路由
🍎 添加静态路由:
~]# nmcli con modify eth0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
IP 地址
🍎 修改 IPv4 地址及网关:
RHEL 7.0:
~]# nmcli con mod net-eth0 ipv4.addresses "192.168.2.10/24 192.168.2.1"
~]# nmcli con mod net-eth0 ipv4.method manual
~]# nmcli con up net-eth0
RHEL 7.1 :
~]# nmcli con mod net-eth0 ipv4.addresses 192.168.2.10/24
~]# nmcli con mod net-eth0 ipv4.gateway 192.168.2.1
~]# nmcli con mod net-eth0 ipv4.method manual
~]# nmcli con up net-eth0
修改 IPv4 地址和网关的命令在 RHEL 7.0 版本中,整体需要双引号括起来,引号内部可以用 IP 地址 + 空格 + 网关 的格式,但到了 RHEL 7.1 版本,因为 NetworkManager 版本的升级,导致语法也发生了变化,地址和网关必须 分开指定,指定时无需双引号。
接口
device
接口是 物理设备,一个接口可以有多个连接,但是 同时只允许一个连接处于激活状态。
对网络接口的操作一般用 nmcli device 来实现。
查看接口状态
查看所有网络接口的状态:
$ nmcli device status
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
ens33 ethernet connected ens33
lo loopback unmanaged --
virbr0-nic tun unmanaged --
查看指定接口状态:
$ nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:B2:33:63
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.1.78/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1002
IP4.DNS[1]: 192.168.1.1
IP6.ADDRESS[1]: fe80::104b:1122:25f0:e73d/64
IP6.GATEWAY:
连接网络接口
连接指定的网络接口。NetworkManager 会尝试找到一个最适合的连接来激活,即使没有配置为自动连接的也会考虑。
$ nmcli device connect ifname
断开网络接口
断开指定的网络接口。断开之后,该接口不会被连接自动激活。
$ nmcli device disconnect ifname
监控网络接口
监控设备的活动,只要设备状态有变化,该命令就会显示一行信息。
$ nmcli device monitor ens33
WIFI
确认 wifi 已打开,启用了广播
~]$ nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled
重新扫描无线 AP
~]$ nmcli device wifi rescan
查看无线 AP 列表
$ nmcli device wifi list
连接到某个 AP
$ nmcli device wifi connect "SSID" password "wireless-password"
要想避免在命令行中直接输入密码:
nmcli --ask device wifi connect "myssid"
查看网络状态
侦听状态
查看侦听的端口
netstat -tnlp
查看所有监听端口
网络连接状态
查看系统整体连接
nmcli
$ nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
查看系统有线、无线连接状态。
$ sudo nmcli networking connectivity check
full
检查系统当前连接状态。
返回的网络连接的状态:
none主机未连接到任何网络portal主机位于网关的后面,无法访问完整的互联网limited主机连接到某个网络,但无法访问互联网full主机连接到某个网络,并可访问互联网unknown无法查明连接状态
netstat
netstat -antp
查看所有已建立的连接
netstat -s
查看每个协议的简要统计数据。
nmcli 工具
CentOS7 之前的网络管理是通过 ifcfg 文件配置管理接口,而现在是通过 NetworkManager 服务管理连接。
在 CentOS7 中默认使用 NetworkManager 守护进程来监控和管理网络设置。nmcli 是命令行的 NetworkManager 工具,会自动把配置写到 /etc/sysconfig/network-scripts/ 目录下面。
用户和脚本都可使用 nmcli 来控制 NetworkManager。
nmcli 可用于创建、查看、编辑、删除、激活、禁用网络连接,也可以用来控制和查看网络接口的状态。
语法
nmcli [选项] 对象 [命令] [参数]
【 选项 】
-t, –terse 使用精炼的输出,用于脚本
-p, –pretty 使用易于阅读的输出,用于用户
-h, –help
【 对象 】
general、networking、radio、connection 或 device
【 命令 】
命令分多种:普通、网络控制、广播传输控制、活动监视、连接管理、网络接口管理
熟悉这些命令后可 使用简写,如:
nmcli connection add type ethernet # 可简化为:
nmcli c a type eth
普通命令
nmcli general { status | hostname | permissions | logging } [ARGUMENTS...]
nmcli general status 查看 NetworkManager 的 整体状态,nmcli genernal 后面如果不跟任何命令,默认用此命令
~]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
网络控制命令
nmcli networking { on | off | connectivity } [ARGUMENTS...]
查询网络状态
nmcli networking connectivity 查询网络连接状态,直接显示最近查看过的连接状态
nmcli networking connectivity check 重新检查连接状态
返回的网络连接的状态:
none主机未连接到任何网络portal主机位于网关的后面,无法访问完整的互联网limited主机连接到某个网络,但无法访问互联网full主机连接到某个网络,并可访问互联网unknown无法查明连接状态
启用或禁用网络
nmcli networking on/off 启用、禁用网络。
网络被禁用时,所有 NM 管理的接口都会停用。
连接管理命令
nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export } [ARGUMENTS...]
可以指定连接名称、UUID、D-Bus 路径。如果连接名过于混淆,可以使用 id、uuid、path、apath 等关键字。以下各命令均适用。
id ID ID 为连接名
uuid ID ID 为连接的 UUID
path ID 为 D-Bus 静态连接路径,格式为 /org/freedesktop/NetworkManager/Settings/num 或 num
show | 查看指定连接
nmcli connection show [--active] [ id | uuid | path | apath ] ID...
显示连接信息。
nmcli connection show 查看所有连接
nmcli connection show ens33 查看指定连接的配置参数
nmcli connection show --active 查看激活的连接
up | 激活连接
如果需要特定的接口来激活连接,可以使用 ifname 参数来指定接口名称。
如果没有指定连接名称,则必须要指定 ifname 接口名称。
nmcli connection up [ id | uuid | path ] ID [ifname ifname] [ap BSSID] [passwd-file file]
ifname 指定激活的接口
ap 要连接到的无线 AP 的 BSSID
passwd-file 指定密码文件
nmcli connection up id bond0`
down | 停用连接
deactivate,该接口仍具有自动激活的能力。可同时作用于多个连接。
该命令会停用指定的激活连接,但连接所在的 接口仍然随时准备连接,它会寻找合适的连接,如果找到的连接中含有 autoconnect 标签,包括刚被停用的连接,该接口还是可以被其自动激活。因此,如果连接被设定为自动连接,它仍会在该接口上自动激活。
在多数情况下,应该使用 nmcli device disconnect 命令,而不用 down。
如果没有指定 --wait 参数,默认超时为 10 秒。
nmcli connection down [ id | uuid | path | apath ] ID...
nmcli connection down id port0`
modify | 修改连接配置
modify 命令用于 增加、修改、删除连接配置中的属性。
被修改的属性可以用别名。
如果为某个属性追加值,在属性前加 +,要想从容器类的属性中删除一个值,在属性前加 -,并指定要删除的值。+ 和 - 只对有多个值的属性起作用,如 ipv4.dns、ipv4.addresses、bond.options 等。
modify [--temporary] [ id | uuid | path ] ID { option value | [+|-]setting.property value } ...
修改发送到 DHCP 服务器的主机名:
~]$ nmcli con modify my-office ipv4.dhcp-hostname ZION ipv6.dhcp-hostname ZION
修改发送到 DHCP 服务器的 IPv4 客户端名称:
~]$ nmcli con modify my-office ipv4.dhcp-client-id neo
忽略 DHCP 服务器发送到主机的 DNS 服务器:
~]$ nmcli con modify my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
修改 DNS 服务器地址:
~]$ nmcli con mod test-lab ipv4.dns "8.8.8.8 8.8.4.4"
~]$ nmcli con mod test-lab ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
添加 DNS 服务器地址:
~]$ nmcli con mod test-lab +ipv4.dns "8.8.8.8 8.8.4.4"
~]$ nmcli con mod test-lab +ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
添加静态路由
~]# nmcli connection modify eth0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
修改 IPv4 地址及网关
RHEL 7.0:
~]# nmcli con mod net-eth0 ipv4.addresses "192.168.2.10/24 192.168.2.1"
~]# nmcli con mod net-eth0 ipv4.method manual
~]# nmcli con up net-eth0
RHEL 7.1 :
~]# nmcli con mod net-eth0 ipv4.addresses 192.168.2.10/24
~]# nmcli con mod net-eth0 ipv4.gateway 192.168.2.1
~]# nmcli con mod net-eth0 ipv4.method manual
~]# nmcli con up net-eth0
修改 IPv4 地址和网关的命令在 RHEL 7.0 版本中,整体需要双引号括起来,引号内部可以用 IP 地址 + 空格 + 网关 的格式,但到了 RHEL 7.1 版本,因为 NetworkManager 版本的升级,导致语法也发生了变化。必须分开指定,指定时无需双引号。
add | 创建新连接
nmcli connection add [save { yes | no }] { option value | [+|-]setting.property value } ...
用指定属性 创建新连接。
需要指定若干属性的值来创建新连接。要想创建一个有意义的连接,至少要设定 connection.type 属性,或使用别名 type。type 的取值可以是:
ethernetwifiwimaxpppoegsmcdmainfinibandbluetoothvlanbondbond-slaveteamteam-slavebridgebridge-slavevpnolpc-meshadsltunip-tunnelmacvlanvxlandummy
save 用来控制是否要把该配置保存到磁盘,默认为 yes
type 指定连接类型
ifname 接口名称
con-name 指定新连接名称。如未指定,默认格式为 type-ifname[-number]
某些属性的默认值:
connection.autoconnect: yes
ONBOOT: yes
ipv4.method: manual
connection.autoconnect: yes
BOOTPROTO: none
ONBOOT: yes
添加动态链接
nmcli connection add type ethernet ifname ens33 con-name MATRIX
配置会保存为 /etc/sysconfig/network-scripts/ifcfg-MATRIX。
再次激活该接口之前,NetworkManager 不会意识到对 ifcfg 文件的手动更改。要想立即生效,必须使用 nmcli con reload。
添加静态连接:
~]$ nmcli connection add type ethernet con-name LAB ifname ens33 ip4 192.168.1.56/24 gw4 192.168.1.1
~]$ nmcli con add type ethernet con-name LAB ifname ens9 ip4 10.10.10.10/24 gw4 10.10.10.254
添加 IPv6 地址和网关信息:
~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 gw4 10.10.10.254 ip6 abbe::cafe gw6 2001:db8::1