• 查看ip命令
  • 网络配置管理
  • 文件配置
  • nmcli命令配置
  • nmtui/setup

计算机网络可以简单分为局域网和广域网。国际标准组织ISO制定了一个层次化的网络通信参考模型--OSI(open system interconnection),每一层定义了其实现的功能以实现设备间网络通信。 但在实际中使用的是TCP/IP协议,(本身包含TCP传输控制协议,IP互联网络协议),tcp?ip模型范围4层将多个网络进行无缝连接。 IP协议:在相互连接的网络之间传递IP数据报、分配唯一IP地址。 IP地址:网络号+主机号

  • 查看ip命令
[root@xt ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.112/24 brd 192.168.0.255 scope global dynamic eno16777736
       valid_lft 83592sec preferred_lft 83592sec
    inet6 fe80::20c:29ff:fe20:b5fd/64 scope link 
       valid_lft forever preferred_lft forever
[root@xt ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.112  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20c:29ff:fe20:b5fd  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:20:b5:fd  txqueuelen 1000  (Ethernet)
        RX packets 11796  bytes 926808 (905.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7634  bytes 5484873 (5.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 网络管理配置
    • ifconfig命令:配置网络接口 用法: ifconfig [-v] [-a] [-s] [interface] ifconfig [-v] interface [aftype] options | address ... 第一种用法:查看接口地址,-v:显示详细信息,-a:显示所有接口地址 第二种用法:配置接口地址 ifconfig IFACE IP/MASK [up|down] 激活|停止,配置IP ifconfig IFACE IP netmask NETMASK
[root@xt ~]# ifconfig ens36 192.168.175.10/24 up #配置IP并激活
[root@xt ~]# ifconfig ens36
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.175.10  netmask 255.255.255.0  broadcast 192.168.175.255
        inet6 fe80::20c:29ff:fe20:b507  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:20:b5:07  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 989 (989.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20  bytes 2076 (2.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@xt ~]# ifconfig ens36 down  #关闭后网卡信息
[root@xt ~]# ifconfig   
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       ......
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       ....
[root@xt ~]# systemctl restart network #重启网络服务
[root@xt ~]# ifconfig 
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.175.133  netmask 255.255.255.0  broadcast 192.168.175.255
        inet6 fe80::20c:29ff:fe20:b507  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:20:b5:07  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 1331 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 3252 (3.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0			 
注:这种方式修改,立即生效,只是临时有效,重启服务后失效
- route命令:路由查看管理,即将被ip route替代
	查看:route -n
	添加用法:
			route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] Interface]
			-net:target是网段
			-host:目标为主机
			route add -net  10.0.0.0/8  gw  192.168.1.1  dev  eth1
			route add  -net  0.0.0.0/0.0.0.0  gw 192.168.1.1
			route add  default  gw 192.168.1.1  	
	删除路由:
			route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] Interface]	
- netstat命令:显示网络连接,路由表,接口状态等
	-显示路由表
		netstat -rn   #-r显示内核路由  -n:不解析
	-显示网络连接
		netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]   [--extend|-e[--extend|-e]]  [--program|-p]
		-t: tcp协议相关链接
		-u: udp协议连接
		-l: 处于监听状态连接
		-a: 所有状态
		-n:以数字方式显示ip和port,不解析服务名
		-p:显示相关进程及pid
[root@xt ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1168/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1246/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1168/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1246/master         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           3069/dhclient       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           2717/dhclient       
	-显示接口的统计数据
		显示所有接口:netstat -i
		指定接口:netstat -I<INTERFACE>
[root@xt ~]# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno16777  1500    15549      0      0 0         10242      0      0      0 BMRU
ens36     1500       18      0      0 0            51      0      0      0 BMRU
lo       65536        0      0      0 0             0      0      0      0 LRU
[root@xt ~]# netstat -Iens36
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens36     1500       18      0      0 0            51      0      0      0 BMRU
[root@xt ~]# 
- iproute服务提供的ip管理工具
- - ip命令显示管理路由、设备
	用法:
		 ip [ OPTIONS ] OBJECT { COMMAND | help }
		OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute |
           mrule | monitor | xfrm | netns | l2tp | tcp_metrics }
	ip link:网络设备配置
		ip link set:修改设备属性
		ip link set { dev DEVICE | group DEVGROUP } [ { up | down } ] [ arp { on | off } ]
                  [ dynamic { on | off } ]
                  [ multicast { on | off } ] 
                  [ allmulticast { on | off } ]
                  [ promisc { on | off } ]
                  [ trailers { on | off } ]
                  [ txqueuelen PACKETS ]
                  [ name NEWNAME ]
                  [ address LLADDR ]
                  [ broadcast LLADDR ]
                  [ mtu MTU ] #默认1500
                  [ netns PID ] #用于将接口移动到指定的网络名称空间
                  [ netns NAME ]
                  [ alias NAME ]
		ip link show :	显示设备的属性
		ip link help :查看命令帮助			
[root@xt ~]# ip addr show ens36 
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.175.133/24 brd 192.168.175.255 scope global dynamic ens36
       valid_lft 1672sec preferred_lft 1672sec
    inet6 fe80::20c:29ff:fe20:b507/64 scope link 
       valid_lft forever preferred_lft forever
[root@xt ~]# ip link set ens36 down 
[root@xt ~]# ip addr show ens36 
3: ens36: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.175.133/24 brd 192.168.175.255 scope global dynamic ens36
       valid_lft 1648sec preferred_lft 1648sec
[root@xt ~]# ip addr li ens36 
3: ens36: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
	ip netns:网络名称空间管理
		ip netns list:
		ip netns add Name
		ip netns del Name
		ip [-all] netns exec [NAME] cmd ...#在指定名称空间中运行命令
设置网络名称步骤:在云计算中使用
1.设置名称
	ip netns add mynet
2.添加至每个网卡
	ip link set ens36 netns mynet
3.运行查看
	ip netns exec mynet  ip llink show
	ip address :协议地址管理
		ip addr add :添加地址
		ip addr {add|change|replace} if_address/prefix dev STRING  [scope ..] [...]	#[broadcast address]: 广播地址,会根据ip和netmask自动计算 [scope scope_value]: 值有global、link、host
		ip addr del :删除IP地址
			ip addr  del   if_address  dev  IFACE 
		ip addr show :查看地址
			ip  addr  show dev  IFACE
		ip addr flush :清空地址
			ip  addr  flush  dev  IFACE
[root@xt ~]# ip addr show ens36 
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.175.133/24 brd 192.168.175.255 scope global dynamic ens36
       valid_lft 1049sec preferred_lft 1049sec
    inet 172.16.0.10/32 scope global ens36
       valid_lft forever preferred_lft forever
[root@xt ~]# ip addr del 172.16.0.10 dev ens36 #删除ip操作
[root@xt ~]# ip addr show ens36  #查看ip
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.175.133/24 brd 192.168.175.255 scope global dynamic ens36
       valid_lft 1703sec preferred_lft 1703sec  
[root@xt ~]# ip addr add 172.16.0.11 dev ens36 #添加ip地址
[root@xt ~]# ip addr list ens36 
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.175.133/24 brd 192.168.175.255 scope global dynamic ens36
       valid_lft 1647sec preferred_lft 1647sec
    inet 172.16.0.11/32 scope global ens36
       valid_lft forever preferred_lft forever
[root@xt ~]# ip addr flush  dev ens36 #清空ens36ip地址
[root@xt ~]# ip addr list ens36 
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:20:b5:07 brd ff:ff:ff:ff:ff:ff
	ip route:路由管理
		ip route add - add new route
		ip route change - change route
		ip route replace - change or add new one
		ip  route   add  [TYPE] PREFIX  via gw_ip  [dev  IFACE]  [src src_ip]
	  ip route del ip_addr - delete route 删除路由
		ip route show - list routes		查看路由				
		ip route flush - flush routing tables清空路由表		
# ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100    
# ip  route  add default  via  192.168.0.1
# ip  route del 192.168.0.0/24
-  ss命令:可以取代netstat来查看链接状态
	用法:		
		ss  [options]  [filter]
		选项:
				-t:TCP协议的相关连接
				-u:UDP相关的连接
				-w:raw socket相关的连接
				-l:监听状态的连接
				-a:所有状态的连接
				-n:数字格式
				-p:相关的程序及其PID
				-e:扩展格式信息
				-m:内存用量
				-o:计时器信息
		filter= [ state TCP-STATE ]  [ EXPRESSION ]	
		TCP的常见状态:
		 All standard TCP states:  established,  syn-sent,  syn-recv,  fin-wait-1,  fin-wait-2,  time-wait,
          closed, close-wait, last-ack, listen and closing.
		EXPRESSION:
		dport = 
		sport = 
[root@xt ~]# ss  -tan  state  ESTABLISHED
Recv-Q Send-Q                 Local Address:Port                                Peer Address:Port              
0      0                      192.168.0.112:22                                 192.168.0.106:55499              
0      0                      192.168.0.112:22                                 192.168.0.106:54701              
0      0                      192.168.0.112:22                                 192.168.0.106:55573              
0      52                     192.168.0.112:22                                 192.168.0.106:55575              
0      0                      192.168.0.112:22                                 192.168.0.106:54864              
[root@xt ~]# ss -tan '( sport = :22 )'
State       Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN      0      128                           *:22                                        *:*                  
ESTAB       0      0                 192.168.0.112:22                            192.168.0.106:55499              
ESTAB       0      0                 192.168.0.112:22                            192.168.0.106:54701              
ESTAB       0      0                 192.168.0.112:22                            192.168.0.106:55573              
ESTAB       0      52                192.168.0.112:22                            192.168.0.106:55575              
ESTAB       0      0                 192.168.0.112:22                            192.168.0.106:54864              
LISTEN      0      128                          :::22                                       :::*                  
	```



-----

	
	
以上使用ifconfig/ip配置IP地址等只是对当前有效,关机或者重启服务等操作配置失效,若需要永久生效则可以通过文件配置、nmcli/nmtui有NetworkManage提供的工具配置。

- 文件配置
	- 配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE,大量参数来定义接口的属性
				DEVICE:此设备文件对应的设备名称
				NAME:可以与device同样,主要在图形界面显示
				ONBOOT:在开机启动过程是否激活
				UUID:此设备的唯一ID号
				BOOTPROTO:接口的协议:dhcp、static、none
				TYPE:接口类型,常见:Ethernet、Bridge
				DNS1:第一DNS服务器指向
				DNS2:备用DNS服务指向
				DNS3:一共可以有三个DNS服务指向
				IPADDR:ipv4地址
				NETMASK:子网掩码,centos支持PREFIX以长度方式指明子网掩码
				GATEWAY:网关
				HWADDR:设备Mac地址
				NM_CONTROLLED:是否使用NetworkManager服务管理
		查看设备的所有信息:dmesg命令
		手动配置一般指定这几个参数即可:
		![](https://s1.51cto.com/images/blog/201901/04/b7cf1ade1ed8ab3d2e969b9645e14dda.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
			device网络接口的命名:
				centos6之前:主要以ethX,如eth1,eth2...
				centos7:根据Firmware或BIOS所提供的索引信息来命名:
					名称类型:
					o<index>:集成设备的设备索引号;
					s<slot>:扩展槽的索引号;
					x<MAC>:基于MAC地址的命名;
					p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;
				常见有:eno16777736,ens33...
	- 例如添加一块网卡,网卡信息如下:通过配置文件方式
		IP地址:192.168.1.77
		子网掩码:255255.255.0
		网关:192.168.1.254
		DNS:192.168.1.254
要求:重启网卡后生效,分别查看IP,网关和DNS是否配置成功
注:以下内容是通过新添加一块网卡ens36来实现,但新添加网卡并没有配置文件,通过复制原有的文件来实现:

		```
		[root@xt network-scripts]# cp ifcfg-eno16777736 ifcfg-ens36
		[root@xt network-scripts]#vim ifcfg-ens36

		BOOTPROTO="none"
		NAME="ens36"
		DEVICE="ens36"
		ONBOOT="yes"
		IPADDR=192.168.1.77
		NETMASK=255.255.255.0
		GATEWAY=192.168.1.254
		DNS1=192.168.1.254

		[root@xt network-scripts]# systemctl restart network
		[root@xt network-scripts]# ifconfig 
		ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
						inet 192.168.1.77  netmask 255.255.255.0  broadcast 192.168.1.255
						inet6 fe80::20c:29ff:fe20:b507  prefixlen 64  scopeid 0x20<link>
						ether 00:0c:29:20:b5:07  txqueuelen 1000  (Ethernet)
						RX packets 4  bytes 989 (989.0 B)
						RX errors 0  dropped 0  overruns 0  frame 0
						TX packets 20  bytes 2076 (2.0 KiB)
						TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
		[root@xt network-scripts]# route -n
		Kernel IP routing table
		Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
		0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eno16777736
		0.0.0.0         192.168.1.254   0.0.0.0         UG    101    0        0 ens36
		192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
		192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens36
		[root@xt network-scripts]# cat /etc/resolv.conf 
		# Generated by NetworkManager
		search xt.com
		nameserver 221.7.128.68
		nameserver 221.7.136.68
		nameserver 192.168.1.254
		```
- nmcli命令:nmcli - command‐line管理NetworkManage服务,命令参数可以补齐,创建或修改 的会话配置信息会自动保存为网卡配置文件,无需手动编辑,重启依然生效。
	nmcli  [ OPTIONS ] OBJECT { COMMAND | help }
	- 查看网卡信息:
			[root@xt tmp]# nmcli connection show 
			NAME(网卡名称)      UUID                   TYPE(网卡类型)            DEVICE(设备)      
			gongsi       86370ae8-b9ed-45b2-9b34-73a6477151fc  802-3-ethernet  ens36       
			eno16777736  2361aff4-2de8-4868-9fd6-5d30ccdada02  802-3-ethernet  eno16777736 
			home         b0569674-eee5-4622-b5d1-861b828d289d  802-3-ethernet  -
			如果想查看某个网卡详细信息:...show [id|uuid]即可
	- 查看网卡连接状态
			[root@xt tmp]# nmcli device status 
			DEVICE       TYPE      STATE      CONNECTION  
			eno16777736  ethernet  connected  eno16777736 
			ens36        ethernet  connected  gongsi      
			lo           loopback  unmanaged  --          
	- OBJECT:agent 、 connection 、 device   、   general   、  help     、   networking、  radio 
			device:显示和管理网络接口
				-device command :={ status | show | connect | disconnect | delete | wifi | wimax }
			connection:开始停止和管理网络连接,NetworkManager存储所有的网络配置信息保存在会话中,如L2详细信息,ip地址等,这些信息描述了创建、连接、或激活设备的过程。
				-connection  command:= { show | up | down | add | edit | modify | delete | reload | load } 
				  modify [--temporary] [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value> 
					add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS IP_OPTIONS:添加会话
					修改ip地址等属性:
					ip的配置方法 :auto默认、manual、link-local
					[root@xt ~]# nmcli connection modify home ipv4.addresses 192.168.10.10 ipv4.gateway 192.168.10.1 ipv4.method  manual
					Examples:					
					nmcli con mod em1-1 ipv4.method manual ipv4.addr "192.168.1.2/24, 10.10.1.5/8" #添加多个ip
					nmcli con mod em1-1 +ipv4.dns 8.8.4.4  **+表示添加 ,-表示删除**
					nmcli con mod em1-1 -ipv4.dns 1
					nmcli con mod em1-1 -ipv6.addr "abbe::cafe/56" 
					nmcli con mod bond0 +bond.options mii=500
					nmcli con mod bond0 -bond.options downdelay

-----
- nmcli配置实例
	- 添加以太网连接手动配置ip	

$ nmcli con add con-name my-con-em1 ifname em1 type ethernet [ ip4 192.168.100.100/24 gw4 192.168.100.1 ip 4 1.2.3.4 ip6 abbe::cafe] $ nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4" $ nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4 $ nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844" $ nmcli -p con show my-con-em1 #-p更友好格式输出

注:
-1、第一条命令表示添加一个以太网连接别名为my-con-em1(自己命名),绑定到em1网卡,手动配置ip4 192.168.100.100 24位掩码,第二个Ip4 1.2.3.4没指定掩码默认32位,可以配置多个ip、gw、ip6,如果【】这部分不指定表示dhcp自动获取,当然也可以使用下一条命令修改配置。
-2、之后的命令表示修改ip4/dns/参数,最后显示配置信息

	- Adding a bonding master and two slave connection profiles

$ nmcli con add type bond ifname mybond0 mode active-backup $ nmcli con add type bond-slave ifname eth1 master mybond0 $ nmcli con add type bond-slave ifname eth2 master mybond0

注:
1、bond-slave:   master <master (ifname, or connection UUID or name)>
2、bond: [mode balance-rr (0) | active-backup (1) | balance-xor (2) | broadcast (3) | 802.3ad    (4) | balance-tlb   (5) | balance-alb (6)]
7种绑定驱动模式:常用
mode=0 |balance-rr:平衡负载,同时工作且自动备援,但需要”Switch”支援及设定
mode=1:自动备援模式,只有一块网卡工作,故障后自动切换
mode=6:平均负载均衡模式,且自动备援,但无需”Switch”支援及设定


-----



- setup/nmtui
	centos7开始使用nmtui图形化管理,之前6的可以使用setup管理,比较简单,配置完重启服务即可。
![](https://s1.51cto.com/images/blog/201901/04/e73268921e05c63d74ea43ef66458e19.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)