不联网的计算机就是废铁,管理linux也必须懂得网络,但是网络是一门特别大的学科,其中的原理和规范可以编写三本书。学习linux之前总不能先去考个CCNA再学习吧!不学的话那必须对网络有一定的认识懂得linux中的网络管理,了解基本的网络运作原理。
一 物理设备
早期网络有多种拓扑结构,现在已经被淘汰了,只要了解它们的类型和大致的优缺点就好。星形拓扑,使用中间设备进行信号中继,中心节点单点故障对对全局影响明显;环形拓扑,使用令牌环,每个设备的损坏对全局都有特别大的影响;总线型拓扑,对中心线要求比较高;网状拓扑,特别耗费资源主要耗费线材;半网状拓扑,也就是当今世界使用的网络拓扑,不仅省了线材还最大程度上保证网络的联通性,当然这只是高层网络,底层大多是星形拓扑。
物理设备主要有三种
集线器hub:连接在集线器上的主机,在同一个冲突域,也在一个广播域内,其内部结构类似总线。冲突域:所有主机连接到一根网线上,这时在这个网线上只能有一个主机发信号,多个主机一起发信号就会导致这跟网线上的信息。一个主机发出信号,在这个网线上的所有主机都会收到,这就是广播。
交换机switch:连接在交换机上的主机,不在同一个冲突域,在一个广播域内。交换机内部很复杂,主要是功能是:主机把数据发送给交换机时,交换机会把数据先自己保存然后转发给所有主机。这时多个主机可以同时发送信息了,解决了冲突。
路由router:可以实现信息选择性的发送给其他设备,解决了广播。
二 网络协议
网络的协议有两个规范,为什么是两个?因为有一个国际规范osi参考模型,这个规范为了把多种网络同一起来设计了一个七层模型,但是实际生产中人们发现另一种四层模型不仅简单而且高效的利用网络,导致规范出了两个。
两个规范的对比情况:
这里只说四层网络协议:
网际层:这一层很基础,主要是实现电气信息和数字信息的转换和个主机识别,主机间识别主要是使用这一层的mac。
网络层:这一层有著名的ip协议实现主机通信。
传输层:tcp,udp。主要是实现进程间通信,这才是重点,真正需要通信的不是主机,而是运行在主机上的进程。tcp三次握手,seq作为发送,ack作为响应。四次断开,因为通信是全双工的。
应用层:http超文本传输协议,ftp等等。
判断网络的工具:
ping检测网络的连通性,使用的是icmp协议 -s 指定包的大小 -c 指定发送包的数量 -w 指定等待的时间 -I 指定发送包的接口 ping的结果中ttl=初始值-经过的路由数(linux的初始值是64,windows是128) tracepath可以查看包经过的路由。
ss命令: -t tcp协议的通信 -u udp协议的通信 -w raw socket通信 -x unix socket通信 -n 以数字的形式显示 -l listen状态的 -a 所有状态 -p 显示pid -e 显示扩展信息
三 linux网络管理命令
网络管理在centos6和7使用的工具不一样,在7里使用的工具虽然6里面也有但是兼容性和稳定性不太好。
1网络状况查看的命令
top动态的查看网络状况 htop比top更好看 glances信息比较全的实时查看网络的工具 dstat实时监控系统各种状况的总计 等等
2 centos临时管理网络命令
ifconfig IFACE IP/netmask [up] 给IFACE指定ip,也可以给IFACE的一个别名指定ip,这样一个网卡就可以拥有多个ip router add [-net|-host] target [netmask Nm][gw Gw] [[dev] If]
给某个ip增加路由示例:route add default gw 172.16.0.1
router –n 显示路由信息 以上是古老的网络查看管理命令,目前ip命令正在逐步取代上面这两个命令。 ip addr add|change|del|flush ip管理命令,使用tab补全,可以快速的管理| note:ip可以让一个网卡同时拥有多个ip并且不是有别名 ip router 。。。 路由管理命令
3 centos6的网络管理
NetworkManager可以直接更改配置文件,但centos6中的NetworkManager不是很稳定一般都是关掉。由此,更改网络后要想让网络永久生效就需要更改网卡的配置文件。
centos配置文件位于/etc/sysconfig/network-scripts/目录下,以ifcfg-开头。
配置文件格式
DEVICE 设备名 BOOTPROTO 获取ip的方式dhcp、static等等 ONBOOT 开机时启动 IPADDR ip地址 PREFIX|NETMASK 掩码位数或直接指定掩码 GATEWAY 指定网关 DNS1 指定dns服务器 等等
很多公司的服务都是很重要的必须保证99.9%的在线时间,这时一个网卡换掉导致服务挂掉将是一大笔损失。一个网卡不能满足需求,这时我们可以使用两个网卡同时工作甚至更多。这需要使用bongding。bongding机制是使用linux内的bongding模块实现的。bonding有多种工作模式:1,Mode 0 (balance-rr);2,Mode 1 (active-backup);3,Mode 3 (broadcast)。
导入bonding模块的 modprobe bonding
编辑配置文件/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 BOOTPROTO=none BONDING_OPTS= “miimon=100 mode=0”
编辑辅网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no
使bongding永久生效需要更改更改配置文件
vim /etc/modprobe.d/bond.conf alias bond0 bonding options bond0 miimon=100 mode=0 #使用这一行的时候就不用在bond0的配置文件中使用BONDING_OPTS= “miimon=100 mode=0”了。
4 centos7的网络管理
centos7里可以直接使用NetworkManager的管理命令nmcli,nmcli命令很简单,连击tab就可以补全和ip的使用类似。使用cmcli配置的网卡的信息,最好使用ip命令查看。nmcli可以支持多个配置文件同时存在,但是只能使用一个。它的配置文件和6的进本类似只是可以指定多个ip
IPADDR
IPADDR1
centos7使用网络组实现类似centos6的bonding。使用网络组的命令集合如下:
nmclicon add type team con-name team0 ifname team0 config ‘{"runner":{"name":"loadbalance"}}‘ ipv4.addresses 192.168.1.100/24 ipv4.methodmanual
这条是命令是生成team0网卡并配置网卡
nmcli con add con-name team0-eth1 typeteamslave ifname eth1 master team0
把eth1加入team0
nmcli con add con-name team0-eth2 typeteamslave ifname eth2 master team0
把eth2加入team0
nmcli con up team0 nmcli con up team0-eth1 nmcli con up team0-eth2
启动三个网卡
teamdctl team0 state 查看组情况 nmcli dev dis eth1 停止eth1测试
总结
网络知识虽然很多,但是运维人员需要接触的不是很多,bonding和网络组基本上是由机房人员实现的。机器网卡一旦出了问题,只能机房那一会的人员处理完问题后,才是运维上的时候。运维主要要了解网络的基本原理,了解网卡组网的原理。
真正需要熟练使用的是网络的配置,ip,掩码,网关,路由。还有就是查看网络情况的命令,第一时间判断问题的出处。