基本网络配置
Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager (以前的叫做 network)提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态。它提供了一些工具, 比如 nmcli(用于配置网络的命令行工具),通过这些工具可以很方便的对网络进行管理。
NetworkManager 的配置文件保存在 /etc/sysconfig/network-scripts/ 目录下。
对于任何一个设备而言,可以存在多个连接,方便切换配备,但是同一时间只能有一个连接处于活动状态。
设备指的是网络接口,连接则表示的是可以为设备配置的设置的集合。
查看联网信息
nmcli dev status 命令可以显示所有网络设备的状态。
nmcli con show 命令可显示所有连接的列表,如果仅列出活动的连接,可以加上 --active 选项。
添加网络连接
nmcli con add 用于添加新的网络连接。
控制网络连接
nmcli con up 命令能够激活指定的连接,通过指定连接的名称,而非网络接口的名称。
nmcli dev dis 命令关闭网络接口的连接,通过指定网络接口的名称将其关闭。
修改连接配置文件
NetworkManager 连接具有两种类型的设置,一种是静态连接,由管理员配置并存储在 /etc/sysconfig/network-scripts/ifcfg-* 的配置文件里,另一种是活动连接数据,这些数据是从 DHCP 服务器中获得,不会持久获得。可以通过 nmcli con show(携带连接名称) 命令进行查看。
nmcli con mod 命令用于更改连接的设置,这些更改还会保存到对应的配置文件中去(/etc/sysconfig/network-scripts/ifcfg-*)。
删除网络连接
nmcli con del 命令能够删除连接,删除对应的配置文件,同时断开与设备的连接, 通过指定连接的名称将其删除。
常用 nmcli 关键命令汇总
| 命令 | 用途 |
|---|---|
| nmcli dev status | 显示所有网络接口的 NetworkManager 状态 |
| nmcli con show | 列出所有连接 |
| nmcli con show name | 列出名为 name 连接的当前配置 |
| nmcli con add con-name name | 添加名为 name 的新连接 |
| nmcli con mod name | 修改名为 name 连接的配置 |
| nmcli con reload | 重新加载配置文件 |
| nmcli con up name | 激活名为 name 的连接 |
| nmcli dev dis dev | 停用 dev 的网络接口,并断开当前连接 |
| nmcli con del name | 删除 名为 name 的连接及配置文件,并断开当前连接 |
编辑网络配置文件
通过 nmcli con mod 命令修改的配置会自动保存到对应的配置文件中,但我们也能够手动去修改配置文件,然后重启配置。
通常配置文件会存放在 /etc/sysconfig/network-scripts/ 目录,以 ifcfg-name 的方式命名。
使用 nmcli 与 直接修改文件的比较
| nmcli con mod | ifcfg-* 文件 | 影响 |
|---|---|---|
| ipv4.mothod manual | BOOTPROTO=none | IPv4 以静态方式配置 |
| ipv4.mothod auto | BOOTPROTO=dhcp | 从 DHCPv4 服务器中查找配置,如果还设置了静态地址,在从 DHCP 服务器获取信息之前,不会激活静态地址 |
| ipv4.addresses "192.0.2.1/24 192.0.2.254" (老版本可能要使用 ipv4.gateway 单独设置 网关) | IPADDR=192.0.2.1 PREFIX=24 GATEWAY=192.0.2.252 | 设置静态IPv4 地址,网络前缀、默认网络,如果设置了多个,则依次以 1、2、3等结尾 |
| ipv4.dns 8.8.8.8 | DNS=8.8.8.8 | 修改 DNS 服务器 |
| ipv4.dns-search example.com | DOMAIN=example.com | 设置 DOMAIN |
| ipv4.ignore-auto-dns true | PEEERDNS=no | 忽略来自 DHCP 服务器的 DNS 服务器信息 |
| ipv6.method manual | IPV6_AUTOCONF=no | IPv6 地址以静态方式配置 |
| ipv6.method | IPV6_AUTOCONF=yes | 使用路由器播发中的 SLAAC 来配置网络设置 |
| ipv6.method dhcp | IPV6_AUTOCONF=no DHCPV6C=YES | 使用 DHCPv6(而不使用SLAAC)来配置网络设置 |
| ipv6.addresses "2001:db8::a/64 2001:db8::1" | IPV6ADDR=2001:db8::a/64 IPV6_DEFAULTGW=2001:db8::1 | 设置静态 IPv6 地址、网络前缀、默认网关, 如设置多个地址,将采用空格分隔 |
| ipv6.dns ... | DNS= ... | 同 IPv4 |
| ipv6.dns-serach ... | DOMAIN=... | 同 IPv4 |
| ipv6.ignore-auto-dns true | IPV6_PEERDNS=no | 忽略来自 DHCP 服务器的 DNS 信息 |
| connection.autoconnect yes | ONBOOT=yes | 系统引导时自动激活此连接 |
| connection.id exx | NAME=exx | 此连接的名称 |
| connection.interface-name ens3 | DEVICE=ens3 | 连接与具有此名称的网络接口绑定 |
| 802-3-ethernet.mac-address ... | HWADDR= ... | 连接与具有此 MAC 地址的网络接口绑定 |