Linux 之nmcli网络配置命令

nmcli命令

地址配置工具

nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

       OBJECT := { general | networking | radio | connection | device | agent  }

       OPTIONS := {

       -t[erse]

       -p[retty]

       -m[mode] tabular | multiline

       -f[ields] <field1,field2,...> | all | common

       -e[scape] yes | no

       -n[ocheck]

       -a[sk]

       -w[ait] <seconds>

       -v[ersion]

       -h[elp]

       }

nmcli device 命令

Usage: nmcli device { COMMAND | help }

COMMAND := { status | show | connect | disconnect | delete | wifi }

nmcli device show eth1    #查看eth1网卡的信息
nmcli device status        #查看所有网卡信息
nmcli device connect eth1    #使网卡eth1连接
nmcli device disconnect eth1   #使网卡eth1断开
nmcli device delete bond0     #删除虚拟网卡,不可以删除物理网卡

nmcli connection 命令

查看命令帮助 : nmcli connetcion help

Usage: nmcli connection { COMMAND | help }

COMMAND := { show | up | down | add | modify | edit | delete | reload | load }

比如修改IP地址等属性:

#nmcli connection modify IFACE [+|-]setting.property value 

  setting.property: 

    ipv4.addresses ; ipv4.gateway ; ipv4.dns1; ipv4.method [manual | dhcp] 

修改配置文件执行生效:systemctl restart network   或  nmcli connetcion reload

nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0 (connection 可简写为con)

网络接口配置tui工具 : nmtui

使用nmcli 配置网络

NetworkManager 是管理和监控网络设置的守护进程

设备即网络接口,连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效

显示所有连接(包括不活动的连接)
  nmcli connection show
显示网络连接配置
  nmcli connection show "System bond0"
显示设备状态
  nmcli device status 
显示网络接口属性
  nmcli dev show eth1
创建新连接 conn1 ,IP通过自动dhcp获取
  nmcli connection add con-name conn1 type Ethernet ifname eth1
删除连接
  nmcli connection delete conn1
创建新连接 conn2 指定静态IP,不自动连接
 nmcli connection add con-name conn2 ifname eth1 autoconnect no type Ethernet ip4 10.1.1.1/16 gw4 10.1.1.254
启用 conn2连接配置
  nmcli connetcion up conn2
查看帮助
  nmcli connection add help

修改连接设置:

nmcli connection modify "eno16777736" connection.autoconnect no
nmcli connection modify "eno16777736" ipv4.addresses 10.1.1.100/16
nmcli connection modify "eno16777736" ipv4.dns 10.1.0.1
nmcli connection modify "eno16777736" +ipv4.dns 10.1.0.1
nmcli connection modify "eno16777736" -ipv4.dns 10.1.0.1

Command Use
nmcli dev status List all devices
nmcli con show List all connetcions
nmcli con up "<ID>" Activate a connetcion
nmcli con down "<ID>" Deactivate a connetction.The connetcion will restart if autoconnect is   yes
nmcli dev dis <DEV> Bring down an interface and temporarily disable autoconnect
nmcli net off Disable all managed interfaces
nmcli con add … Add a new connetcion
nmcli con mod "<ID>"… Modify a connection
nmcli con del "<ID>" Delete a connetcion

nmcli   con mod ifcfg-* 文件
ipv4.method   manual BOOTPROTO=none
ipv4.method   auto BOOTPROTO=dhcp
ipv4.addresses "192.0.2.1/24 192.0.2.254"

IPADDR0=192.0.2.1  

PREFIX0=24 

GATEWAY0=192.0.2.254

ipv4.dns   8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search   example.com DOMAIN=example.com
ipv4.ignore-auto-dns   true PEERDNS=no
connection.autoconnect   yes ONBOOT=yes
connection.id   eth0 NAME=eth0
connection.interface-name   eth0 DEVICE=eth0
802-3-ethernet.mac-address   . . . HWADDR= . . .

设备文件保存到文本文件中: /etc/sysconfig/network-scripts/ifcfg-<name>

帮助文档列出完整选项列表: /usr/share/doc/initscripts-*/sysconfig.txt

动态配置

静态配置

DEVICE=ethX 

HWADDR=0:02:8A:A6:30:45 

BOOTPROTO=dhcp 

ONBOOT=yes 

Type=Ethernet

DEVICE=ethX 

HWADDR=0:02:8A:A6:30:45 

IPADDR=192.168.0.123 

NETMASK=255.255.255.0 

GATEWAY=192.168.0.254 

ONBOOT=yes 

Type=Ethernet

通过nmcli命令修改连接配置后,需要重新加载配置

nmcli con reload

图形工具

nm-connection-editor

网络组 Network Teaming

网络组:是将多块网卡聚合在一起的方法,从而实现容错和提高吞吐量

网络组不同于旧版中bonding技术,它能提供更好的性能和扩展性

网络组由内核驱动和teamd守护进程实现

有多种方式:

    runner

    broadcast

    roundrobin

    activebackup

    loadbalance

    lacp

启动网络组接口不会自动启动网络组中的port接口

启动网络组接口中的port接口不会自动启动网络组接口

禁用网络组接口会自动禁用网络组中的port接口

没有port接口的网络组接口可以启动静态IP连接

启用DHCP连接时,没有port接口的网络组会等待port接口的加入

创建网络组接口格式如下:

nmcli con add type team con-name CNAME ifname INAME [config JSON]

  CNAME :连接名

  INAME :接口名

  JSON :指定runner的方式,格式: '{"runner":{"name":"METHOD"}}'

    METHOD :可以是 broadcast ;roundrobin ;activebackup ;loadbalance ;lacp

创建port接口格式如下:

nmcli con add type team-slave con-name CNAME ifname INAME master TEAM 

  CNAME :连接名

  INAME :网络接口名

  TEAM :网络组接口名

若连接名不指定,则默认为team-slave-IFACE

nmcli con up CNAME(网络组接口名或port接口)

nmcli dev dis INAME(设备名)

网络组示例:

# nmcli con add type team con-name team0 ifname team0 config ‘{"runner": {"name": "loadbalance"}}' 
# nmcli con mod team0 ipv4.addresses 192.168.1.100/24 
# nmcli con mod team0 ipv4.method manual 
# nmcli con add con-name team0-eth1 type teamslave ifname eth1 master team0 
# nmcli con add con-name team0-eth2 type teamslave ifname eth2 master team0 
# nmcli con up team0 
# nmcli con up team0-eth1 
# nmcli con up team0-eth2 
# teamdctl team0 state; 
# nmcli dev dis eth1

实验:创建一个网络组主备自动切换的网络组

nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
nmcli connection modify team0 ipv4.method auto
nmcli connection add con-name team-eth0 type team-slave ifname eno16777736 master team0 
nmcli connection add con-name team-eth1 type team-slave ifname eno33554960 master team0 
nmcli connection add con-name team-eth2 type team-slave ifname eno50332184 master team0 
nmcli connection add con-name team-eth3 type team-slave ifname eno67109408 master team0 
nmcli connection up team0
nmcli connection up team-eth1
nmcli connection up team-eth2
nmcli connection up team-eth3
nmcli connection up team-eth0
watch -n1 'teamdctl team0 state'

blob.png

blob.png

blob.png

管理网络组配置文件:

# /etc/sysconfig/network-scripts/ifcfg-team0 
DEVICE=team0 
DEVICETYPE=Team 
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}" 
BOOTPROTO=none 
IPADDR0=172.25.5.100 
PREFIX0=24 
NAME=team0 
ONBOOT=yes
# /etc/sysconfig/network-scripts/ifcfg-team0-eth1 
DEVICE=eth1 
DEVICETYPE=TeamPort 
TEAM_MASTER=team0 
NAME=team0-eth1 
ONBOOT=yes

使用nmcli配置主机名

rhel6之前主机名配置文件:/etc/sysconfig/network

rhel7.0主机名配置文件:/etc/hostname,默认没有这个文件,通过DNS反向解析获取主机名,主机名默认为: localhost.localdomain

显示主机名信息

    hostname

    hostnamectl status

创建并修改文件并生效

    hostnamectl set-hostname desktopX.example.com

删除文件,恢复主机名localhost.localdomain

DNS设置,存放在/etc/resolv.conf文件中

    PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:

    nmcli con mod “system eth0” ipv4.ignore-auto-dns yes

在命令行下测试网络的连通性

显示主机名

hostname

测试网络连通性

ping mtr

显示正确的路由表

ip route

确定名称服务器使用:

nslookup

host

dig

跟踪路由

traceroute

Tracepath

lftp, ftp, lftpget, wget

lftp [-p port] [-u user[,password]] SERVER

子命令:

get、 mget、ls、help

# lftpget URL

# ftp

# wget

wget [option]... [URL]...

-q: 静默模式

-c: 断点续传

-O: 保存位置

--limit-rates=: 指定传输速率