下面写的是Centos网络管理和网络配置
我们为网卡设置网络属性有两种方式,手动配置和自动配置。自动配置,就是从主机所在网路中的DHCP服务器获取,其至少有一台DHCP服务器。手动配置有两种方式,分别是使用命令和修改配置文件,使用命令有三大家族的命令,即net-tools家族(ifcfg家族)、iproute家族、nm家族。同时,还介绍了相关的配置文件和网络接口命名规则。
一、net-tools家族
1、ifconfig命令
ifconfig命令具有三个主要功能,分别是查看网络接口状态、配置网络属性、管理接口状态。
查看:
ifconfig [interface] 命令中,如果没有指定接口状态,显示的就是【激活状态】接口的网络信息;如果指定了操作接口,不管接口是否是激活状态,都显示指定接口的网络配置信息。
ifconfig -a:显示所有端口网络连接,无论是否激活。
配置管理:
ifconfig INTERFACE ADDRESS 用于配置指定端口的指定参数
例如:ifconfig INTERFACE IP[/PREFIX_LEN] [up/down]
ifconfig INTERFACE IP netmask SUBNET_MASK [up/down]
ifconfig eth1 172.16.1.1
ifconfig eth1 172.16.1.1/24
ifconfig eth1 172.16.1.1/24 up
ifconfig eth1 172.16.1.1 netmask 255.255.255.0 up
ifconfig eth1 up/down
2、route命令
route查看和管理路由信息,其中,路由表中的路由条目有三种类型,分别是主机路由、网络路由、默认路由。主机路由的目的地址是单个IP地址;网络路由有子网路由、主网路由、超网路由三种;默认路由,目的地址是0.0.0.0/0的IP地址,可以到达任意地址。
查看:
route -n:以数字化来显示主机名、IP地址和端口。
配置:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 添加
route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 删除
添加默认网关:route add default gw 192.168.0.1 或 route add default gw 192.168.0.2 dev eth2
删除默认网关:route del default 或 route del default gw 192.168.0.2
添加静态路由:route add -net 10.0.0.0/8 gw 192.168.0.2 dev eth2
删除静态路由:route del -net 10.0.0.0/8 或 route del -net 10.0.0.0/8 gw 192.168.0.2
3、netstat命令
netstat查看网络连接、路由信息、接口统计信息等。
netstat的常用选项如下:
-t:只查看与TCP协议有关的网络连接
-u:只查看与UDP协议有关的网络连接
-U:只显示与udplite协议有关的网络连接
-w:显示与络套接字有关的网络连接
-l:显示处于监听状态的网络连接
-a:显示所有状态的所有连接,不管激活与否
-n:数字化显示,数字显示主机名、端口号、用户ID等信息
-e:以扩展格式显示输出网络连接
-p:显示与该网络连接有关的应用程序与进程ID
常用的选项组合:-tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp
-r:显示路由表信息 常用复合选项有:-rn、-rne
-i/-I:显示接口统计信息,存在复合选项
-s:详细显示协议信息,分条显示,存在复合选项
二、iproute家族
1、ip命令
ip命令能进行网络参数的设置,设备的相关设定、额外IP设定、路由设定。格式为:ip [ OPTIONS ] OBJECT { COMMAND | help } ; 其中OBJECT有四类:link、addr、route、netns。
(1)、ip link COMMAND
设定与设备(device)有关的相关设定,包括MTU以及该网络设备的MAC等等。ip link COMMAND 中COMMAND有5类,分别是add、delete、set、show/list、help。
ip link {show | list} 单纯的查阅该设备相关的信息,列表显示所有接口。
例如:ip link show eth0
ip link set 修改网络设备的配置参数。
ip link set [dev] IFACE_NAME { up | down }:激活或禁用网络接口;
例如:ip link set eth0 up 启动eth0
ip link set eth0 down 关闭eth0
ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否允许此网络接口使用ARP协议;
ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改网络接口名称,需要将设备先down掉;设备启动时,所以不能这样做设定。
例如:ip link set eth0 name myeth
ip link set eth0 address aa:aa:aa:aa:aa:aa 修改MAC地址
ip link set [dev] IFACE_NAME [ mtu MTU ]:修改网络接口的MTU数值;
例如:ip link set eth0 mtu 1000 更改 MTU为1000 bytes,单位就是 bytes
ip link set [dev] IFACE_NAME [ netns PID ]
(2)、ip addr COMMAND
查看和设置逻辑网络地址,属于第三层。
ip addr add IFADDR dev IFACE_NAME:为指定的网络接口添加IP地址;
例如:ip addr add 192.168.50.50/24 broadcast + /
ip addr del IFADDR dev IFACE_NAME:将IP地址从指定的网络接口上删除;
例如:ip addr del 192.168.50.50/24 dev eth0
ip addr flush dev IFACE_NAME:将指定接口上配置的所有IP地址全部清除;
ip addr { show | list } [dev IFACE_NAME]:显示网络接口上配置的IP地址;
例如: ip addr show eth0
为网络接口增加【多个IP地址】,并能够使用ifconfig查看,设置卷标实现;
ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL
ifconfig IFACE_NAME_LABEL IFADDR
IFACE_NAME_LABEL : IFACE_NAME:#
(3)、ip route COMMAND
ip route查看和设置路由表信息,功能几乎与rout命令一样,但是,它还可以进行额外的参数设置,例如设置MTU。
ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IFACE_NAME]
例如:ip route add 192.168.5.0/24 dev eth0 增加内部路由
ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0 增加可以通往外部的路由
ip route del 192.168.10.0/24
ip route del 192.168.5.0/24
ip route list/show
例如:ip route show
(4)、ip netns COMMAND 设置内核中的网络名称空间
ip netns list:列表显示所有的自定义的名称空间;
ip netns add NS_NAME:创建名称空间;
ip netns exec NS_NAME cmd:在指定的名称空间中使用命令;
ip netns delete NS_NAME:删除指定的名称空间;
2、ss命令
ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
ss格式为:ss [options] [ FILTER ]
(1)、[options]
ss常用选项有:
-t:与TCP协议相关的连接状态;
-u:与UDP协议相关的连接;
-w:与裸套接字相关的连接;
-l:显示处于监听状态的连接;
-a:显示所有的状态的套接字连接;
-n:以数字化显示结果;
-p:显示相关的应用程序及PID;
-e:显示详细的扩展信息;
-m:显示内存使用量;
-o:计时器信息;
常用的选项组合为:-tan, -uan, -tnl, -unl, -tulp, -unlp。
(2)、[ FILTER ]
FILTER为:[ state TCP-STATE ] [ EXPRESSION ],其中TCP-STATETCP,表示协议有限状态机中的所有的可用状态;EXPRESSION,表示为dport= :port 或 sport= :port,例如:'( dport = :22 or sport = :22 )' ,注意EXPRESSION用单引号引出来。
三、nm家族
1、nmcli命令
nmcli是网络管理命令行工具,可以使用nmcli配置网络、实现网络组、设置主机名
nmcli格式为:nmcli [ OPTIONS ] OBJECT { COMMAND | help }
(1)、OBJECT主要包括两类,分别是connection和device
device:显示和配置网络接口信息
device后的COMMAND有7类:status、show、connect、disconnect、delete、wifi、wimax
connection:开始、停止、管理网络连接
connection后的COMMAND有9类:show、up、down、add、edit、modify、delete、reload、load
(2)、COMMAND
COMMAND的多类命令show、up、down、add、edit、modify、delete、reload、load解释如下:
show:显示网络连接的所有属性信息;
up|down:启用或禁用指定的网络连接;
add:用来添加新的网络连接。其后加以下4类:autoconnect yes|no:是否自动启动此连接,需在配置文件中添加ONBOOT=yes|no;ifname IF_NAME:指定要创建连接的目标网络接口设备名称;所有 con-name CON_NAME:为指定的网络接口设备创建一个连接名称; type TYPE:指定网络设备的接口类型。
例如:# nmcli connection add autoconnect yes ifname eno67109432 con-name eno666 type ethernet
delete:删除指定的网络连接
例如:# nmcli connection delete CON_NAME
# nmcli connection delete eno666
reload:不重启网络接口,但重新加载其配置文件中的配置信息;
modify:修改网络接口信息,格式为:modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value> ,其中,<setting>为以下5种:802-3-ethernet.mtu ;connection.autoconnect ;ipv4.addresses ;ipv4.dns ;ipv4.gateway ;ipv4.method。
例如:# nmcli connection modify "系统\ eno50332208" ipv4.addresses 1.2.3.4/8 ipv4.dns 202.202.222.222 ipv4.gateway 1.1.1.1
(3)、创建网络组
网络组,就是将多个【网络接口设备聚合】在一起的方法,其目的是实现冗余容错以及提高可用性和吞吐量;网络组与以往的Bonding技术相比,具有更好的性能以及更好的扩展性;在CentOS7中,网络组是由内核中的一个内核驱动和一个名为teamd的守护进程来实现的。网络组主要可以实现以下5种工作模式,工作模式也被称为“运行器(runner)”:broadcast、roundrobin、activebackup、loadbalance、lacp(链路聚合控制协议)。
网络组接口具有以下4个特点:1)、启动网络组接口并不会自动启动网络组中的其他port接口;2)、启动网络组终端port接口,也不会自动启动网络组接口;3)、禁用网络组接口,则会立即禁用网络组中的port接口;4)、对于没有port接口的网络组接口而言,只能配置静态IP地址,不能设置从DHCP获取;如果设置了,网络组接口就会一直等待port接口的加入。
创建网络组有两种方法,一种是通过nmcli命令来创建,另一种是修改对应连接的配置文件来创建。
方法一:通过nmcli命令来创建
nmcli创建网络组接口:nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON ;JSON是用来指定runner的方式,其格式为:'{"runner": {"name": "METHOD"}}',METHOD为broadcast、roundrobin、activebackup、loadbalance、lacp五种。
例如:# nmcli connection add type team con-name class17 ifname class17 config '{"runner": {"name": "loadbalance"}}'
# nmcli connection modify class17 ipv4.addresses 172.16.203.205/16
# nmcli connection modify class17 ipv4.method manual
nmcli创建port接口:nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME ;其中,如果不指定con-name,则默认的con-name为team-slave-IF_NAME。
例如:# nmcli connection add type team-slave con-name eno67109432 ifname eno67109432 master class17
# nmcli connection up class17
# nmcli connection up eno67109432
# nmcli device disconnect eno67109432
方法二:修改对应连接的配置文件来创建
例如:创建网络组接口:
DEVICE=class17
TEAM_CONFIG="{\"runner\": {\"name\": \"activebackup\"}}"
DEVICETYPE=Team
BOOTPROTO=none
NAME=class17
ONBOOT=yes
IPADDR=172.16.203.205
PREFIX=16
创建port接口:
NAME=team-slave-eno33554984
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=class17
DEVICETYPE=TeamPort
2、nmtui命令
nmtui是文本用户接口的网络控制连接。
四、Bonding
与网络组相似的操作时创建Bonding,也是将多块网卡,即多个网络接口设备绑定到同一IP地址,对外提供网络服务;这些网卡之间可以实现负载均衡或高可用技术;通过bonding,虚拟一个网卡对外提供服务及网络连接,所有的物理网卡都被修改为相同的MAC地址;但Bonding最好在CentOS6中实现,在CentOS7中使用nmcli创建的网络组来实现更加强大的容错。
Bonding主要有Mode 0、Mode 1和Mode 3这3种工作模式,具体解释如下:
Mode 0 :【负载均衡】的解决方案,其负载均衡的算法为balance-rr,其中rr即轮询round robin。轮询策略,就是按【从头到尾】顺序的在每个slave接口上面发送数据包;该模式可以提供负载均衡以及容错的能力;
Mode 1 :【主备】的解决方案,在此模式中,只有一个slave被激活,用于正常数据传输;而其他的接口都监视此接口的工作状态,当且仅当活动的slave接口失败的时候,才会从其他备份的接口中选择一个用于激活;该模式只能【实现容错】,无法进行负载均衡。
Mode 3 :【全广播】的解决方案,在所有的slave接口上传输全部报文。
使用Bonding的配置步骤如下:
1、创建虚拟接口;
例如:
可以在/etc/sysconfig/network-scripts/ifcfg-bond0文件中指定Bonding的特性:
DEVICE=bond0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=0"
IPADDR=172.16.100.135
PREFIX=16
2、选择miimon的监测时间及Bonding的工作模式;miimon用来进行链路监测。如果miimon=100,则系统每100ms监测一次链路连接的状态;如果某个网络接口在miimon监测的结果为不连通,则进行故障倒换;
例如:BONDING_OPTS="miimon=100 mode=0"
3、选择用于此次Bonding的物理接口;
修改物理网卡eth1的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
修改物理网卡eth2的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
五、配置文件
1、网络接口配置文件
在CentOS6中,主要有5类配置文件,即与IP、MASK、GATEWAY、DNS Server相关的配置文件。各个网络接口配置文件的存取位置为:/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME,其中的配置信息解释如下:
DEVICE:网络接口【名称】
TYPE:网络接口【类型】,常见的有Ethernet、Bridge、Token Ring等
HWADDR:此设备的【物理地址】,是在以太网中的MAC地址;
ONBOOT:在系统引导的过程中,是否【激活】此设备,yes/no;
NETBOOT:是否可以使用此设备进行【网络引导】,yes/no;
BOOTPROTO:接口【协议类型】;BOOTPROTO有动态配置和静态配置两类,动态配置即dhcp和bootp;静态配置即static和none。
IPV6INIT:是否在此接口上初始化【IPV6】协议;
USERCTL:是否【普通用户能够管理】此接口,推荐用no;
IPADDR:指定此接口的固定【IP地址】,但,其前提是BOOTPROTO应该是static或none;
NETMASK:设置IP地址对应的【子网掩码】;如:255.255.255.0
PREFIX:设置IP地址的【网络前缀】的位数,和子网掩码一个意思;如:24
GATEWAY:设置默认【网关】
DNS1:首选【DNS】服务器的地址指向;
DNS2:备用DNS服务器的地址指向;
DNS3:第三DNS服务器的地址指向;
PEERDNS:新的DNS服务器的地址是否能够指向替代的DNS服务器的地址指向,默认值为允许;
NM_CONTROLLED:是否允许【NetworkManager】服务管理网络接口,不建议使用。
在CentOS6中非常不完善,关闭NetworkManager的步骤如下:(1)、# service NetworkManager stop ;(2)、# chkconfig NetworkManager off
在CentOS7中,与IP、MASK、GATEWAY、DNS Server相关的配置文件位置为:/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME。与CentOS6相比,CentOS7主要多了三项,即UUID、NAME、DEFROUTE。DEFROUTE,用来设置是否允许此网络接口运行默认路由。
2、主机名称的配置文件
主机名称配置文件位置为:/etc/sysconfig/network。
对于主机名配置文件,HOSTNAME,是当前Linux系统使用的主机名称,使用 # hostname 查看当前系统的FQDN ;# hostname NEW_HOSTNAME 进行注销后重新登录。
例如:# hostnamectl set-hostname NEW_HOSTNAME 重新设置主机名
3、本地解析配置文件
本地解析配置文件位置为:/etc/hosts。格式为:IP地址 主机名
4、解析器文件
解析器文件的位置为:/etc/resolv.conf
search DOMAIN_NAME
nameserver DNS_SERVER_IP_ADDRESS
5、静态路由的配置文件
静态路由的配置文件位置为:/etc/sysconfig/network-scripts/route-IFACE_NAME。
IFACE_NAME 两种写法如下:
(1)、每条路由信息占用一行,格式为:TARGET via NEXT_HOP [dev IFACE_NAME]
例如:10.0.0.0/8 via 192.168.100.254。
(2)、每条路由信息占用多行,其格式为:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXT_HOP
例如:ADDRESS0=172.16.0.0
NETMASK0=255.255.0.0
GATEWAY0=192.168.10.254
六、网络接口命名
Linux的网络接口有两种命名方式,一种是传统的命名方式,其在CentOS6及之前的发行版本中使用;另一种是使用可预测的命名方式,其支持很多种命名机制,该方案从CentOS7开始使用。
1、传统的命名方式
以太网:【ethX】,其中X是自然数;例如:eth0、eth1
PPP网络:【pppX】,其中X是自然数;例如:ppp0、ppp1
环回接口:【lo】
2、可预测的命名方案
(1)、 根据Firmware命名
每一台计算机的网卡在其计算机的硬件固件中都有唯一的标识符,比如:MAC地址,厂商标识,电器编号等。
根据【集成设备】所提供的索引信息命名,例如:enoX, eno1,eno167777736,...
根据【MAC地址】进行命名;例如:enx000c290045b3
(2)、 根据物理拓扑结构命名
每一台计算机的主板上都有固定数量的插槽或接口,如主板上第二个插槽连接的网卡的第一个物理接口等。
根据【扩展插槽所提供】所提供的索引信息命名,如:ensX、ens0、ens2
根据硬件接口的【物理拓扑】的位置信息命名,例如:enp1s0
本文转自little_ding 51CTO博客,原文链接:http://blog.51cto.com/12496428/1949614,如需转载请自行联系原作者