不联网的计算机就是废铁,管理 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 里面也有但是兼容性和稳定性不太好。
- top动态的查看网络状况htop比top更好看glances信息比较全的实时查看网络的工具dstat实时监控系统各种状况的总计等等
- 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 。。。 路由管理命令
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"了。
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,掩码,网关,路由。还有就是查看网络情况的命令,第一时间判断问题的出处。
来源: http://www.bubuko.com/infodetail-1855954.html