CentOS中的网络管理
为网卡设置网络属性:
自动获取: 在主机所在网络中,至少有一台DHCP服务器; 通过DHCP服务器进行地址租凭.
手动配置(静态指定):
a.使用命令:
net-tools家族(ifcfg家族):
ifconfig(ipconfig ------ Windows中)
查看网络接口的配置信息;
配置网络属性;
管理接口状态;
route:
查看路由信息;
配置路由信息(网关,静态路由,静态默认路由);
netstat:
状态及统计数据的查看;
iproute家族:
ip OBJECT
其中OBJECT可以是:
addr: IP地址和掩码的管理
link: 物理接口的管理
route: 路由管理
ss:
状态及统计数据的查看
注意: 以上命令,在任何的Linux发行版中都适用;
nm家族: Network Manager
nmcli: 命令行工具
nmtui: text-window的工具
nm家族只在CentOS7中能够使用,在CentOS6中可以使用一下工具:
system-config-network
system-config-network-cmd
system-config-network-tui
上述三个工具都是setup的子命令; 在CentOS6中可以使用上述命令;
2.网络接口的命名方式:
思科的交换机: FastEthernet0/1,GigabitEthernet0/1
思科的路由器: Ethernet0/0,FastEthernet0/0
Linux的接口命名的方式:
a.传统的命名方式:
以太网: ethX,X从0开始的整数; 如: eth0,eth1,......
PPP网络: PPPoE,PPP over Ethernet
pppx,x从0开始的整数; 如: ppp0,ppp1,......
环回接口: lo,loopback;
在CentOS6及之前的发行版本中使用;
b.可预测的命名方案(CentOS7开始)
可以支持很多中命名机制:
1)根据Firmware进行命令:
每一台计算机的网卡在起计算机的硬件固件中都有唯一的标识符,比如: MAC地址,厂商标识,电器编号等;
2)根据物理拓扑结构:
每一台计算机的主板上都有固定数量的插槽或接口,如主板上第二个插槽链接的网卡的第一个物理接口等;
根据不同的命名机制,可以有如下的命令标准:
1)如果Firmware或BIOS是主板上集成的设备提供的索引信息并且该信息可用,则根据此索引信息进行设备命名,如: enoX,eno1,eno167777736,......
2)如果Firmware或BIOS是主板上扩展插槽所提供的索引信息并且该信息可用,如: ensX,ens0,ens1,......
3)如果硬件接口的物理拓扑的位置信息存在并可用,则可以根据此信息进行设备命名,如: enp1s0
4)如果用户显示的定义,可以根据诸如MAC地址进行命名,如: enx000c290045b3
5)如果上述可预测命名皆不可用,则延用传统命名方式对网络设备进行命名;
命名的格式组成:
en: ethernet
wl: wlan
ww: wwan
名称的类型:
o<index>: 集成设备的索引编号
s<slot_num>: 扩展插槽的索引编号
x<MAC>: 基于MAC地址进行命名;
p<bus>s<slot>: 基于总线+扩展插槽的索引联合索引编号;
net-tools家族(ifcfg家族):
1.ifconfig命令:
ifconfig - configure a network interface
ifconfig [interface] : 用于查看网络接口的配置信息;
如果执行ifconfig命令,不带任何接口做参数,则显示所有处于激活状态的网络接口信息;
如果执行ifconfig命令,带有特定接口名称作为参数,则无论接口是否处于激活状态,都显示该网络接口的信息;
ifconfig interface address: 用于配置接口的网络参数;
ifconfig interface IP[/PREFIX_LEN] [up|down]
ifconfig interface IP netmask SUBNET_MASK [up|down]
实例:
# ifconfig eth1 172.16.100.105
# ifconfig eth1 172.16.100.105/24
# ifconfig eth1 172.16.100.105 netmask 255.255.255.192
# ifconfig eth1 up|down
常用选项:
-a: 显示所有的网络接口,无论其是否处于激活状态
实例:
# ifconfig -a
2.route命令: 查看和管理路由信息
路由表中的路由条目,可能包括下列几种类型;
1)主机路由: 目标地址是特定的单个IP地址;
2)网络路由: 子网路由: 主网路由,超网路由(CIDR);
3)默认路由: 目标地址为0.0.0.0/0的路由条目; 到达任意地址的路由;
常用选项:
-n: 以数字话显示主机名(IP地址)和端口
设置路由信息:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
route add [-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 eth1]
route del -net 10.0.0.0/8
route del -net 10.0.0.0/8 gw 192.168.220.100
netstat命令:
Print network connections,routing tables,interface statics,masquerade connections,and multicast menerships
Print network connections
[--tcp|-t]: 只显示与TCP协议相关的网络连接
[--udp|-u]: 只显示与UDP协议相关的网络连接
[--udplite|-U]: 只显示udplite协议相关的网络连接
[--listening|-l]: 显示处于LISTEN状态的TCP连接
[--all|-a]: 查看所有状态的任意连接
[--numeric|-n]: 数字化显示结果中的主机名,端口号,用户ID等信息;
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]
[--extend|-e[--extend|-e]]: 以扩展格式显示结果
[--program|-p]: 显示与该网络连接相关的应用程序及进程ID
TCP的有限状态机(TCP FSM):
State套接字状态
ESTABLISHED套接字有一个已建立的连接
SYN_SENT套接字正在积极尝试建立连接
SYN_RECV已从网络收到连接请求
TIME_WAIT套接字在等待处理网络中的数据包之后等待
CLOSE套接字未被使用
LISTEN套接字监听传入的连接,这样的套接字不包含在输出中,除非您指定侦听(-l)或全部(-a)选项
CLOSING两个套接字都关闭了,但我们仍然没有发送所有的数据
UNKNOWN套接字的状态未知
常用的选项组合:
-tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp
iproute家族:
ip: 显示/操作路由,设备,策略路由和隧道
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 IDACE_NEW_NAME: 更改网络接口名称,需要将设备先down掉;
ip link set [dev] IFACE_NAME [ mtu MTU ]: 修改网络接口的MTU数值;
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 IDADDR dev IFACE_NAME: 为指定的网络接口添加IP地址;
ip addr del IDADDR dev IFACE_NAME: 将IP地址从指定的网络接口上删除;
ip addr flush dev IDACE_NAME: 将指定接口上配置的所有IP地址全部清楚;
ip addr { show | list } [dev IFACE_NAME]: 显示网络接口上配置的IP地址;
为网络接口增加多个IP地址,并能够使用ifconfig查看:
ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL
ip route COMMAND - 查看和设置路由表信息
ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IDACE_NAME]
ip route list
net-tools
iproute
特点: 使用命令配置网络参数以后,网络参数会立即生效,但是,只要重新启动或重新激活网络接口,其配置的网络参数立即丢失;
配置文件:
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地址对应的子网掩码,
PREFIX: 设置IP地址的网络前缀的位数;
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注销后重新登录,即可生效
/etc/udev/rules.d/70-persistent-net.rules
重启网卡
service network restart
CentOS7中:
跟IP,DNS Server相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME
多数的配置语句与CentOS6相同,多出了下列几项;
UUID: 全局唯一标识符,用来唯一标识此网络接口;
DEFROUTE: 是否允许此网络接口运行默认路由;
主机名称的配置文件: /etc/sysconfig/network
# hostnamectl set-hostname NEW_HOSTNAME
本地解析配置文件: /etc/hosts
格式为: IP地址 主机名(多个主机名之间使用空白字符隔开)
解析器文件: /etc/resolv.conf
search DOMAIN_NAME
nameserver DNS_SERER_IP_ADDRESS
静态路由的配置文件: /etc/sysconfig/network-scripts/route-IFACE_NAME
IFACE_NAME: 必须为此次路由出站接口的名称;
两种风格的写法:
1.每条路由信息占用一行:
TARGET via NEXT_HOP [dev IFACE_NAME]
2.每条路由信息占用多行:
ADDRSS#=TARGET
NATMASK#=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的检测时间及Boding的工作模式
3.选择用于此次Bonding的物理接口