网络管理 网卡配置文件 网卡配置文件:/etc/sysconfig/network-scripts/ifconfig-eth0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 TYPE="Ethernet" # 网卡类型:以太网卡 PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" # IP获取方式,当前为动态获取IP地址,可配置为"static",比如: # BOOTPROTO="static" # IPADDR=192.168.110.135 # NETMASK=255.255.255.0 # GATEWAY=192.168.110.0 # 通过 route -n 获取网关地址 # DNS1=192.168.110.0 # 路由器的DNS # DNS1=8.8.8.8 # 谷歌的DNS,也可以指定其他DNS DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" # 网卡名字 UUID="4f1b1171-ea20-4dfc-b52e-d6f74dc00c1e" # UUID,每个设备都不一样 DEVICE="eth0" # 设备名称 ONBOOT="yes" # 随着网络服务启动而激活 # NM_CONTROLLED=no # 如果NetworkManager服务启用,该网卡配置文件也不受该服务管理
关于NetworkManager服务
1 2 3 4 NetworkManager是redhat6自带的检测网络、自动连接网络的图形化工具。NetworkManager 服务会干扰网络配置,如:DNS经常会被刷掉,所以通常关闭. systemctl stop NetworkManager systemctl disable NetworkManager
更改网卡名称 Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS 7 提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33 。但是真实的情况是我们在做一些操作的时候,往往需要进行批量处理,如果说每台主机的网卡名都是一样的,这就给我们提供了很大的便利,我们可以进行批处理操作。
1 2 3 4 5 6 7 8 9 10 11 12 #修改网卡配置文件 cd /etc/sysconfig/network-scripts/ # 进入网卡配置文件的目录 sed -i "s#ens33#eth0#g" ifcfg-eth0 # 把网卡配置文件设备名称和网卡名字都从 ens33 改成 eth0 mv ifcfg-ens33 ifcfg-eth0 # 再把配置文件改名 #GRUB添加kernel参数,让之后新加的网卡都采用传统命名方式 vim /etc/sysconfig/grub # 编辑grub文件 GRUB_CMDLINE_LINUX="rhgb quiet 'net.ifnames=0 biosdevname=0'" grub2-mkconfig -o /boot/grub2/grub.cfg # 加载到引导分区 #重启系统生效 reboot 0
更改MTU
网卡绑定
查看和配置网卡:ifconfig命令 ifconfig
是Linux中用于显示或配置网络设备的命令,英文全称是network interfaces configuring。它用于查看、配置、启用或禁用位于内核中的网络接口。
1 yum install net-tools -y # 安装软件包才能使用命令
ifconfig显示信息解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 # 从flags可知该接口已启用,支持广播、组播,MTU:1500(最大传输单元):1500字节 inet 192.168.12.42 netmask 255.255.255.0 broadcast 192.168.12.255 # IPv4地址 子网掩码 广播地址 inet6 fe80::499e:c2c1:f5ed:3900 prefixlen 64 scopeid 0x20<link> # IPv6地址 掩码长度 作用域,link表示仅该接口有效 ether 00:0c:29:86:f8:59 txqueuelen 1000 (Ethernet) #网卡接口的MAC地址 传输队列长度 接口类型为Ethernet RX packets 5708 bytes 1061424 (1.0 MiB) # 表示开机后此接口累积接收的报文个数,总字节数 RX errors 0 dropped 833 overruns 0 frame 0 # 表示开机后此接口累积接收报文错误数,丢弃数,溢出数(由于速度过快而丢失的数据包数),冲突的帧数 TX packets 102 bytes 16768 (16.3 KiB) # 表示开机后此接口累积发送的报文个数,总字节数 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # 表示开机后此接口累积发送报文错误数,丢弃数,溢出数(由于速度过快而丢失的数据包数), # carrier 载荷数(发生carrier错误而丢失的数据包数) # collisions 冲突数
查看网络接口
1 2 3 ifconfig # 查看已经开启的网卡信息 ifconfig -a # 查看所有网卡设备信息,包含已开启和未开启的 ifconfig [网卡名称] # 查看单个网卡信息
关闭和打开网卡
1 2 ifconfig [网卡名称] down # 关闭网卡 ifconfig [网卡名称] up # 开启网卡
临时配置IP地址
1 2 3 ifconfig [网卡名称] [IP地址] netmask [子网掩码] # 比如:ifconfig eth0 192.168.110.135 netmask 255.255.255.0 ifconfig [网卡名称] [IP地址/掩码位] # 比如 ifconfig eth0 192.168.110.135/24, 与上条命令效果相同
设置mtu(最大传输单元)
1 2 ifconfig [网卡名称] mtu [数值] # 此条命令是临时设置,如果想每次开机都设置一次,可以将此条命令加到 /etc/rc.local 文件中
基本网络配置
网卡工作原理
1 2 3 4 5 6 7 8 9 10 网卡发包: 1、ip包+14个字节的mac头变成数据帧frame 2、frame拷贝到网卡芯片内部的缓冲区,由网卡处理 3、网卡芯片为frame添加头部同步信息和CRC校验,此时才是真正可以发送的packet,然后发送该packet 网卡收包: 1、网络包packet到达网卡,网卡先检查包packet的CRC校验,保证其完整性和正确性,然后去掉它的头得到frame 2、网卡将frame拷贝到网卡内部的FIFO缓冲区 3、网卡驱动程序产生硬件中断,把frame从网卡拷贝到内存中,接下来就交给内核处理 网卡丢包: 内核通常需要快速拷贝网络数据包到系统内存,然而网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多。所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 - 进入的数据包占满了网卡的缓存,后续的包只能被丢弃,这也应该就是ifconfig里的overrun的来源。
丢包问题定位
1 2 3 4 5 6 7 8 9 10 1.排查硬件,查看网卡工作模式是否正常。网卡工作在数据链路层,数据在链路层会做一些校验,封装成帧。我们可以查看传输是否存在问题,校验是否出错。然后从软件层面,是否因为缓冲区太小丢包。 #查看mtu是否正常 ifconfig [网卡名称] # 查看mtu是否正常 #查看Speed是否和mtu匹配 ethtool [网卡名称] | grep 'Speed|Duplex' # 筛选有用信息,Speed查看网卡速度,Duplex查看是全双工还是半双工 #查看crc错误值 ethtool -S [网卡名称] | grep crc # -S 表示统计收发包信息,crc代表统计校验错误的数量,crc的值比较大可能是网络质量问题
1 2 3 2.通过 ifconfig 查看 overruns 是否一直增大,即数据包是否在网卡缓冲区中溢出 for i in `seq 1 100`; do ifconfig ens33 | grep RX | grep overruns; sleep 1; done
问题解决
1 1. 一般硬件较少出现故障,如果出现可以采用设置mtu,排查网络质量问题等方法
1 2 3 4 5 2. 如果是网卡缓冲区过小可以调整网卡缓冲区 ethtool -g [网卡名称] # 查看网卡缓冲区 ethtool -G [网卡名称] rx [缓冲区数值] # 调整接收缓冲区数值 ethtool -G [网卡名称] tx [缓冲区数值] # 调整发送缓冲区数值
路由管理 路由介绍 路由是分组从源到目的地时,决定端到端的路径,route
route -n
显示结果的解释
1 2 3 4 5 6 7 8 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.19.63.253 0.0.0.0 UG 100 0 0 eth0 172.19.0.0 0.0.0.0 255.255.192.0 U 100 0 0 eth0 解释: 目的地 网关 子网掩码 标志位 跳数 目标地址 下一跳往哪走 U:在生效up
一台Linux主机能够被当成路由器的三大前提
至少有两块网卡分别连接两个不同的网段
开启路由转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward
在该Linux主机上添加正确的路由规则/策略:通过route
命令配置
Linux中路由分为三种
主机路由:掩码位32位,Destination精确到某一台主机
1 主机路由是直接指明到具体的某台主机怎么走,主机路由也就是所谓的静态路由
网络路由:掩码小于32位,Destination精确到某一个网段的主机
默认路由:掩码通常为0
1 不走主机路由和网络路由的,全都走默认路由,操作系统上设置的默认路由一般也称为网关
主机路由的优先级最高,其次是网络路由,最后是默认路由。因为地址越精确,优先级越高,即子网掩码位数越多,优先级越高。在同样子网掩码的情况下,跳数越少,优先级越高。
路由相关命令
添加路由
添加主机路由:
1 route add -host [某台主机的IP地址]/32 dev [网卡名称] # 比如:route add -host 1.1.1.10/32 dev eth0
添加网络路由:
1 route add -net [某个网段的IP地址]/24 gw dev [网卡名称] # 比如:route add -net 192.168.110.0/24 gw dev eth0
添加默认路由:
1 route add default gw [指定网关] # 不走前两条路径的都走默认路由,此条命令相当于route add -net 0.0.0.0/0 gw 192.168.0.254
删除路由
删除主机路由
1 route del -host [IP地址]/32 # 根据配置的 [IP地址]/32 来删除,所以这个必须是已存在的路由
删除网络路由
1 route del -net [IP地址]/24 # 同样需要是已存在的路由
删除默认路由
永久配置路由 通过route命令配置路由只能暂时生效,如果需要永久生效,以eth0网卡为例,需要增加配置文件vim /etc/sysconfig/network-scripts/route-eth0
文件目录是在/etc/sysconfig/network-scripts/
,通过vim新增一个配置文件,内容中编辑要添加的路由,格式为:destination via nexthop
,比如:
1 2 3 4 5 6 7 vim /etc/sysconfig/network-scripts/route-eth0 default via 192.168.0.254 dev eth0 # 默认路由,指定网关为 192.168.0.254 1.1.1.0/24 via 0.0.0.0 dev eth0 # 网络路由,不指定下一跳 2.2.2.2/32 via 0.0.0.0 dev eth0 # 主机路由,不指定下一跳 wq
然后需要在网卡的配置文件中,更改一些内容
1 2 3 4 5 6 vim /ect/sysconfig/network-scripts/ifcfg-eth0 DEFROUTE="no" # 这个选项设置为no,表示不使用DHCP默认分配的路由 PEERROUTES="no" # 没有此条则增加上,表示覆盖DHCP的路由配置 wq