CentOS中的网络管理:
我们在为网卡设置网络属性时一般有自动获取和手动配置两种方法。但自动获取要求主机所在的网络中,至少有一台DHCP服务器,要求较高。所以一般我们使用手动配置的方法来学习linux网络配置。
手动配置又称为静态指定。它也分为两种方法:
a.使用命令
b.修改配置文件
linux(CentOS 6)接口的命名方式:
a.传统的命名方式:
以太网:ethX,X从0开始的整数;如:eth0,eth1,...
PPP网络:PPPoE,PPP over Ethernet
pppX,X从0开始的整数;如:ppp0,ppp1,...
环回接口:lo,loopback;
b.可预测的命名方式(CentOS 7开始):
可以支持很多种命名机制:
1) 根据Firmware进行命名:
每一台计算机的网卡在其计算机的硬件固件中都有唯一的标识符,比如:MAC地址,厂商标识,电器编号等;
2) 根据物理拓扑结构:
每一台计算机的主板上都有固定数量的插槽或接口,如主板上第二个插槽连接的网卡的第一个物理接口等;
根据不同的命名机制,可以有如下的命名标准:
1) 如果Firmware或BIOS是主板上集成的设备提供的索引信息并且该信息可用,则根据此索引信息进行设备命名,如:enoX, eno1,eno167777736,...
2) 如果Firmware或BIOS是主板上扩展插槽所提供的索引信息并且该信息可用,则根据此索引信息进行设备命名,如:ensX, ens0,ens2,...
3) 如果硬件接口的物理拓扑的位置信息存在并可用,则可以根据此信息进行设备命名,如:enp1s0
4) 如果用户显式的定义,可以根据诸如MAC地址进行命名;如:enx000c290045b3
5) 如果上述可预测命名皆不可用,则延用传统命名方式对网络设备进行命名;
下面我们来介绍linux中用于网络配置的一些命令
1)net-tools家族(ifcfg家族):
1.ifconfig命令:
a.ifconfig [interface] :用于常看网络接口的配合信息;
注意:ifconfig命令后面的选项可加可不加
如果不带接口选项作为参数,则显示所有处于激活状态的网络接口信息;
如果带有网络接口作为参数,都显示该网络接口的信息,无论该接口是否处于激活状态;
b.ifconfig interface address:用于配置指定接口的网络参数;
ifconfig interface IP[/PREFIX_LEN] [up|down]
ifconfig interface IP netmask SUBNET_MASK [up|down]
常用选项:
ifconfig -a :显示 所有的网络接口,无论其是否处于激活状态;
2)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]
设置默认网关的方法:default === -net 0.0.0.0 netmask 0.0.0.0
route add default gw 192.168.100.1
route add default gw 192.168.220.1 dev eth2
删除默认网关的方法:
route del default
route del default gw 172.16.0.1
添加静态路由的方法:
route add -net 10.0.0.0/8 gw 192.168.220.100 [dev eth2]
删除静态路由的方法:
route del -net 10.0.0.0/8
route del -net 10.0.0.0/8 gw 192.168.220.100
3)netstat命令:显示网络连接,路由表,伪装链接,接口类型统计和组播通信
a.Print network connections
[--tcp|-t]:只显示与TCP协议相关的网络连接
[--udp|-u]:只显示与UDP协议相关的网络连接
[--udplite|-U]:只显示udplite协议相关的网络连接
[--sctp|-S]:
[--raw|-w]:显示与裸套接字相关的网络连接
[--listening|-l]:显示处于LISTEN状态的TCP连接
[--all|-a]:查看所有状态的任意连接
[--numeric|-n]:数字化显示结果中的主机名、端口号、用户ID等信息;
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]
[--extend|-e[--extend|-e]]:以扩展格式显示结果
[--program|-p]:显示与该网络连接相关的应用程序及进程ID
注意:
常用的选项组合:-tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp
b.Print routing tables
{--route|-r}:显示路由表信息
[--numeric|-n]:数字化信息
[--extend|-e]:显示扩展信息
常用的选项组合:
-rn, -rne
c.Print interface statistics:
{--interfaces|-I|-i}
[--all|-a]
[--extend|-e]
[--verbose|-v]
[--program|-p]
[--numeric|-n]
d.Print Protocol statistics:
{--statistics|-s}:显示详细的各个协议的统计信息;
[--tcp|-t]
[--udp|-u]
[--udplite|-U]
[--sctp|-S]
[--raw|-w]
iproute家族:
ip:show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
ip link COMMAND
COMMAND: add, delete, set, show, help
ip link set - 修改网络设备的配置参数
ip link set [dev] IFACE_NAME { up | down }:激活或禁用网络接口;
ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否允许此网络接口使用ARP协议;
ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改网络接口名称,需要将设备先down掉;
ip link set [dev] IFACE_NAME [ mtu MTU ]:修改网络接口的MTU数值;
ip link set [dev] IFACE_NAME [ netns PID ]:
ip link set [dev] IFACE_NAME [ netns NAME ]:将指定的网络接口加入到指定的网络名称空间中;
ip link { show | list }:列表显示所有的链路接口;只显示链路层信息;
ip link help:获得简短的帮助信息
ip netns COMMAND - 设置内核中的网络名称空间;
ip netns list:列表显示所有的自定义的名称空间;
ip netns add NS_NAME:创建名称空间;
ip netns exec NS_NAME cmd:在指定的名称空间中使用命令;
ip netns delete NS_NAME:删除指定的名称空间;
ip addr COMMAND - 查看和设置三层逻辑网络地址;
ip addr add IFADDR dev IFACE_NAME:为指定的网络接口添加IP地址;
ip addr del IFADDR dev IFACE_NAME:将IP地址从指定的网络接口上删除;
ip addr flush dev IFACE_NAME:将指定接口上配置的所有IP地址全部清除;
ip addr { show | list } [dev IFACE_NAME]:显示网络接口上配置的IP地址;
为网络接口增加多个IP地址,并能够使用ifconfig查看;
ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL
ifconfig IFACE_NAME_LABEL IFADDR
IFACE_NAME_LABEL : IFACE_NAME:#
ip route COMMAND - 查看和设置路由表信息
ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IFACE_NAME]
ip route list
ss - another utility to investigate sockets
ss [options] [ FILTER ]
常用选项:
-t:TCP协议相关的连接状态
-u:UDP协议相关的连接
-w:raw socket相关的连接
-l:处于监听状态的连接
-a:所有的状态的套接字连接
-n:数字化显示结果
-p:显示相关的应用程序及PID
-e:显示详细的扩展信息
-m:显示内存使用量
-o:计时器信息
常用的选项组合:
-tan, -uan, -tnl, -unl, -tulp, -unlp
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP-STATE:TCP协议有限状态机中的所有可用状态;
EXPRESSION:
dport= :port
sport= :port
EXPRESSION示例:
'( dport = :22 or sport = :22 )'
net-tools
iproute
特点:使用命令配置网络参数以后,网络参数会立即生效;但是,只要重新启动或重新激活网络接口,其配置的网络参数立即丢失;
上述命令的配置结果,并没有影响或修改网络设备的配置文件;
linux中另外一种手动配置的方法
配置文件:
CentOS6中:
跟IP、MASK、GATEWAY、DNS Server相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME
DEVICE:此网络接口的名称
TYPE:此网络接口的类型,比较常见的是Ethernet,Bridge,Token Ring,...
HWADDR:此设备的物理地址,在以太网中是MAC地址;
ONBOOT:在系统引导的过程中,是否激活此设备;
NETBOOT:是否可以使用此设备进行网络引导;
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:是否允许从DHCP服务器获得的DNS服务器的地址指向替代此配置文件中的DNS服务器的地址指向;默认值为允许;
NM_CONTROLLED:是否允许NetworkManager服务管理网络接口;此服务在CentOS6中非常不完善,所以建议不使用此服务进行网络接口的管理;而且最好将此服务永久关闭,执行下列两条命令即可;
# service NetworkManager stop
# chkconfig NetworkManager off
主机名称的配置文件:/etc/sysconfig/network
HOSTNAME:当前Linux系统使用的主机名称
# hostname 查看当前系统的FQDN
# hostname NEW_HOSTNAME
注销后重新登录,即可生效
CentOS7中:
跟IP、MASK、GATEWAY、DNS Server相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME
多数的配置语句与Center6相同,多出了下列几项:
UUID:全局唯一标识符,用来唯一标识此网络接口;
NAME:此网络接口的显示名称;
DEFROUTE:是否允许此网络接口运行默认路由;
主机名称的配置文件:/etc/sysconfig/network
# hostnamectl set-hostname NEW_HOSTNAME
本地解析配置文件:/etc/hosts
格式为:IP地址 主机名(多个主机名之间使用空白字符隔开)
解析器文件:/etc/resolv.conf
search DOMAIN_NAME
nameserver DNS_SERVER_IP_ADDRESS
静态路由的配置文件:/etc/sysconfig/network-scripts/route-IFACE_NAME
IFACE_NAME:必须为此次路由出站接口的名称;
两种风格的写法:
1.每条路由信息占用一行;
TARGET via NEXT_HOP [dev IFACE_NAME]
2.每条路由信息占用多行;
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXT_HOP
Bonding —— 绑定
就是将多块网卡(多个网络接口设备)绑定同一IP地址,对外提供网络服务;这些网卡之间可以实现负载均衡或高可用技术;
通过bonding,虚拟一个网卡对外提供服务及网络连接,所有的物理网卡都被修改为相同的MAC地址;
Bonding的工作模式:
Mode 0——负载均衡解决方案,其负载均衡的算法为balance-rr(round robin, 轮询);轮询策略意味着:从头到尾顺序的在每个slave接口上面发送数据包;该模式可以提供负载均衡以及容错的能力;
Mode 1——主备解决方案,(active-backup, master-backup),在此模式中,只有一个slave被激活,用于正常数据传输;而其他的接口都监视此接口的工作状态;当且仅当活动的slave接口失败的时候,才会从其他备份的接口中选择一个用于激活;该模式只能实现容错,无法进行负载均衡;
Mode 3——全广播解决方案,在所有的slave接口上传输全部报文;
miimon用来进行链路监测。如果miimon=100,则系统每100ms监测一次链路连接的状态;如果某个网络接口在miimon监测的结果为不连通,则进行故障倒换;
使用Bonding的时候,我们需要配置:
1.创建虚拟接口
2.选择miimon的监测时间及Bonding的工作模式;
3.选择用于此次Bonding的物理接口;
在/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
修改物理网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
修改物理网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no