Linux19

您所在的位置:网站首页 激活网卡命令错误 Linux19

Linux19

2024-06-30 17:56| 来源: 网络整理| 查看: 265

1 网卡名称 # 1 传统命名 CentOS6之前采用的都是传统的命名方式,如以太网:eth1,eth0... # 2 可预知的命名方案 Centos7提供了不同的命名规则,默认是基于固件 拓扑 位置信息来分配。 优点是命名是全自动的 可预知的 缺点是比eth0更难读。eg: ens33 # 3 修改网卡名称: 回归传统命名 # 1.修改 网卡配置文件 名称 cd /etc/sysconfig/network-scripts/ mv ifcfg-ens33 ifcfg-eth0 # 2.修改 网卡配置文件 设备名称 sed -i "s#ens33#eth0#g" ifcfg-eth0 # 3.GRUB添加kernel参数 *** vim /etc/sysconfig/grub GRUB_CMDLINE_LINUX="rhgb quiet 'net.ifnames=0 biosdevname=0'" # 4.加载到引导分区 *** grub2-mkconfig -o /boot/grub2/grub.cfg # 5.重启系统生效 reboot 2 网卡管理 # 0 运维拓展:linux真机需要网卡绑定 ---> lacp协议 Link Aggregation Control Protocol,链路聚合控制协议 # 1 查看当前系统所连接的所有网卡 在Windows上就是网络适配器中的网卡 lspci lspci |grep -i eth # 查看以太网网卡 # 2 ethtool 查看网卡的网络接口信息 可以判断网卡是否连上网线 ethtool eth0 Settings for eth0: Link detected: yes # 链接检测 yes 表示网卡能被识别,且接了有效的网线 2.1 ifconfig命令 # 0 需要安装 net-tools yum install net-tools -y # 1 查看所有网卡信息 包括未激活的网卡 ifconfig -a ifconfig # 查看激活的网卡 # 2 查看单个网卡信息 ifconfig eth0 # 3 临时设定IP和掩码 重启服务或者系统都失效 ifconfig eth0 192.168.1.122 netmask 255.255.255.0 ifconfig eth0 192.168.1.122/24 # 4 临时配置子接口 也叫虚拟网卡,指的是将eth0网卡 再配置一个网段 # 了解 通常不用 因为一个网卡两个网段,若网卡坏了,两个网段都走不通了 ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0 # 5 删除网卡 ifconfig eth0:1 del 192.168.0.2 # 删除,不必加掩码 # 6 开启或关闭网卡 ifconfig eth0 down|up # 不加载网卡配置文件 ifdown eth0 | ifup eth0 # 加载网卡配置文件 # 7 临时设置网卡的最大传输单元 mtu 代表网卡的最大传输单元,千兆/万兆网卡 可修改 ifconfig eth0 mtu 1500 # mtu常用设置:千兆网卡 1500 万兆网卡 9000 # 永久设置: 1.可将该命令,放在开机自启动脚本文件中 /etc/rc.local 注:添加可执行权限 chmod +x /etc/rc.d/rc.local 2.修改网卡配置文件 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 增加如下内容 MTU="9000" # 启用IPv6地址的,修改IPv6 mtu的参数为 IPV6_MTU="1280" # 保存后,重启网卡生效 systemctl restart network # 8 开启关闭模式 (了解) ifconfig eth0 promisc # 开启繁杂模式 局域网中的数据包,不管目的主机是否为自身,都会收到显示出来 ifconfig eth0 -promisc # 关闭繁杂模式 ifconfig ens33 multicast # 开启多播 ifconfig ens33 -multicast # 关闭多播 ifconfig eth0 allmulti # 开启 ifconfig eth0 -allmulti # 关闭 # 9 添加或删除ipv6地址 (了解) ifconfig eth0 add 3ffe:3240:800:1005::2/64 ifconfig eth0 del 3ffe:3240:800:1005::2/64 # ifconfig命令 查询结果解释 ifconfig eth0 eth0: flags=4163 mtu 1500 # 从flags可知该接口已启用,支持广播、组播 MTU:1500(最大传输单元):1500字节 # 其他了解知识: UP :表示“接口已启用”。 BROADCAST :表示“主机支持广播” RUNNING :表示“接口在工作中” MULTICAST :表示“主机支持多播(组播)” # 可以了解一下繁杂模式:https://www.cnblogs.com/linhaifeng/articles/13949611.html 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 # 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 # 表示开机后此接口累积 接收报文错误数、丢弃数、溢出数(由于速度过快而丢失的数据包数)、冲突的帧数 重点是overruns 溢出数 指的是网卡数据包的丢包现象,是数据接受不全 !!! TX packets 102 bytes 16768 (16.3 KiB) # 表示开机后此接口累积 发送的报文个数,总字节数 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # 表示开机后此接口累积 发送报文错误数、丢弃数、溢出数(由于速度过快而丢失的数据包数) # carrier 载荷数(发生carrier错误而丢失的数据包数) # collisions 冲突数 2.2 网卡丢包问题 ### 1 网卡的储备知识 # 1 全双工与半双工 目前交换机、网卡都采用全双工模式 # 全双工传输英文写法是:Full-Duplex Transmissions 是指交换机在发送数据,同时也能够接收数据,两者同步进行 类似打电话一样,说话的同时,也能够听到对方的声音 全双工的好处: 迟延小、冲突少、速度快 # 半双工:就是指一个时间段内,只有一个动作发生 只接受数据或发送数据 早期的对讲机、以及早期集线器等设备都是实行半双工的产品。 # 详细全双工与半双工:https://www.cnblogs.com/linhaifeng/articles/13949762.html # 2 自动协商 自动协商是一种机制,允许网卡设备 自动选择最佳网速和工作模式(全双工或半双工模式) # 3 CRC (Cyclic Redundancy Check) 循环冗余检查 校验码 是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定 是一种数据传输检错功能,对数据进行多项式计算 并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性 # 详细:https://www.cnblogs.com/linhaifeng/articles/13949806.html # 4 网卡工作原理 # 网卡发包 1.ip数据包+14个字节的mac头,变成数据帧frame 2.frame拷贝到网卡芯片内部的缓冲区,由网卡处理 3.网卡芯片为frame添加头部同步信息和CRC校验 # 此时才是真正可以发送的packet 4.然后发送该packet # 网卡收包 1.网络包packet到达网卡,网卡先检查包packet的CRC校验(保证其完整性和正确性),然后去掉它的头得到frame 2.网卡将frame拷贝到网卡内部的FIFO缓冲区 # FIFO 先进先出 3.网卡驱动程序产生硬件中断,把frame从网卡拷贝到内存中 4.接下来就交给cpu内核处理 # 网卡丢包 !!! 内核通常需要快速地拷贝网络数据包到系统内存!!! 因为网卡上接收网络数据包的缓存区大小固定,而且相比系统内存也要小得多 所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 已进入的数据包占满了网卡的缓存,后续的包只能被丢弃 # ifconfig中 RX overrun的来源 # 详细: https://www.cnblogs.com/linhaifeng/articles/13949943.html ### 2 丢包问题的解决 # 查看网卡是否发生丢包 若网卡的overruns溢出数一直增大,说明发生丢包 for i in `seq 1 100`; do ifconfig eth0 | grep RX | grep overruns; sleep 1; done # 0 丢包排查思路 网卡工作在数据链路层,数据链路层会做一些校验,封装成帧 1.先查看CRC校验是否出错,确定传输物理层面是否存在问题 2.再从软件层面,是否因为网卡缓冲区太小而导致丢包 # 1 先查看硬件情况 若一台机器经常收到丢包的报警(),先看看最底层的有没有问题 # 1.1 查看网卡工作模式是否正常 ethtool eth0 | egrep 'Speed|Duplex' Speed: 1000Mb/s # 网卡传输速度 Duplex: Full # 双全工模式 # 1.2 查看CRC校验是否正常 ethtool -S 查看网络使用情况统计 ethtool -S eth0 | grep crc # crc错误值大,通常是因为服务器外部的网络环境有问题导致的 rx_crc_errors: 0 ----Speed、Duplex、CRC之类的都没问题,基本可以排除物理层面的干扰---- # 2 软件层面--调整网卡缓存大小、集群化水平拓展部署 # 2.1 先查看网卡的环形参数 Ring parameters ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: # 网卡Buffer size的最大值 RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: # 网卡当前 Buffer size的大小 RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256 # 2.2 再调整网卡的接受/发送 环形参数 ethtool -G ens33 rx 2048 # 接受调大 ethtool -G ens33 tx 2048 # 发送调大 2.3 ethtool命令 # 1 ethtool命令 用于查看和修改网络设备(尤其是有线以太网设备)的驱动参数和硬件设置 # 2 常见选项 ethtool eth0 # 查看网卡信息 ethtool -S eth0 # 查看网卡 网络使用情况统计信息 ethtool -s eth0 选项参数 # 更改网卡的通用设置 # 选项参数 speed 1000 # 设置网卡的传输速度 默认是以最大传输 单位是Mb/s duplex half | full # 工作模式: 半全工或双全工 autoneg on | off # 自动协商: 开启或关闭 # eg: ethtool –s eth0 speed 1000 duplex full autoneg off ethtool -g eth0 # 查看网卡 接受/发送的环形参数 ethtool -G eth0 [rx|tx] 参数值 # 设置网卡 接受/发送的环形参数 # 3 永久设置 方式一: 命令添加到 开机自启动脚本/etc/rc.local 方式二: 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ETHTOOL_OPTS="speed 1000 duplex full autoneg off" 3 路由route 3.1 交换与路由介绍 ### 1 交换 不考虑三层交换 指同网络访问 # 指的是二层交换机 处于第二层 数据链路层 两台机器连在同一个交换机上,配置同网段的不同ip就可以直接通迅 ### 2 路由 指跨网络访问的路径选择 # 指的是路由器 处于第三层 网络层 路由器 # 路由器至少有两个网段,一个是局域网内的网关,另一个是外网的地址 LAN交换机 LAN交换机 设备1 设备2 设备1 设备2 3.2 Linux处理数据包的过程

### 0 处理数据包的过程 当外界主机发送数据时,在它从网卡流入后到本机内核空间,本机会对它做路由决策 根据其目标决定是流入本机的用户空间,还是在内核空间就直接转发给其他主机 # 1.若是流入本机用户空间的数据 则数据会从内核空间进入用户空间,被应用程序接收并处理 若本机用户空间的应用程序,不产生新的数据包对外发送,那不再涉及到从某个网卡流出数据 若本机应用程序产生新的数据包对外发送,会在流出之前 进入内核空间做路由决策,根据目标决定从哪个网卡流出 # 2.若是由本机把数据包转发给其他主机 数据包则必须从流入网卡,完整地转发给流出网卡,要求Linux主机能够完成这样的转发 但Linux主机默认未开启ip_forward功能,会使得数据包无法转发而被丢弃 ### 1 Linux主机和路由器的不同 路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包 而Linux主机默认,则不能转发。若要,则需开启linux主机的转发功能 3.3 linux开启路由转发功能 ### 0 查看路由转发是否开启 sysctl net.ipv4.ip_forward cat /proc/sys/net/ipv4/ip_forward sysctl -a | grep ip_forward ### 1 临时开启路由转发 重启网络服务则失效 # 方式1: echo 1 > /proc/sys/net/ipv4/ip_forward # 方式2: sysctl -w net.ipv4.ip_forward=1 ### 2 永久开启路由转发 # 在CentOS 6中: 将/etc/sysctl.conf文件中的"net.ipv4.ip_forward"值改为1即可 # 在CentOS 7中: systemd管理了太多的功能,sysctl的配置文件也分化为多个,包括 /etc/sysctl.conf、/etc/sysctl.d/*.conf、/usr/lib/sysctl.d/*.conf 建议写在/etc/sysctl.d/*.conf中,这是systemd提供自定义内核修改项的目录 echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf ### 3 一台Linux主机能被当成路由器使用的前提 主机1(网段1) 转发主机 主机2(网段2) 1.转发主机 至少有两块网卡 分别连接不同网段的主机 2.转发主机 开启路由转发功能 3.转发主机 添加上正确的路由规则/策略 4.转发主机 被主机1/2 写成网关路由 # 主机1/2的这条路由的gateway必须是转发主机ip ### 4 注意 1.若Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的 eg: 主机1 ---> eth0 -- 主机2 -- etht1 ---> 主机3 172.16.10.11/24 172.16.10.12/24 192.168.100.12/24 192.168.100.11/24 主机1到达该Linux主机2的数据包,无法从eth0交给eth1或者从eth1交给eth0,从而无法转发到主机3 2.IP地址是属于系统内核的 # 整个tcp/ip协议栈都属于内核,包括端口号 只要能和其中一个网卡地址通信,就能和另一个网卡地址通信,而不需要开启数据包转发功能 eg: 主机1 ---> eth0 -- 主机2 -- etht1 172.16.10.11/24 172.16.10.12/24 192.168.100.12/24 若主机1执行ping 192.168.100.12,结果将是通的 因为地址属于内核,从主机1的ens33进来的数据包,被内核分析时 主机2发现目标地址为本机地址,直接就回应172.16.10.11,回应数据包继续从eth0出去 3.4 网关/路由 3.4.1 路由种类与优先级 ### 1 路由的种类 主机路由:掩码位32位,Destination精确到某一台主机(指向单个IP地址或主机名) # Destination n. 目的地 所以主机路由是直接指明到某台具体的主机怎么走,也就是所谓的静态路由 网络路由:掩码小于32位,Destination精确到某一个网段的主机 所以网络路由指明到某类网络怎么走 默认路由:掩码通常为0,Destination为default或0,表示除主机路由和网络路由外 的所有网络,全部都走默认路由 操作系统上设置的默认路由,一般也称为网关 ### 2 路由的优先级 若Linux上到某主机有多条路由可以选择,这时候会挑选优先级高的路由 # 2.1 优先级大前提 主机范围越小、越精确、优先级越高 而缩小主机范围的恰恰就是子网掩码 故掩码越长,优先级越高 # 2.2 优先级区分 1.在Linux中,路由条目的优先级确定方式是先匹配掩码位长度,掩码越长的优先级高 所以主机路由的优先级最高,然后是直连网络的路由(即同网段网络路由)次之,最后是 默认路由即网关 2.若路由条目的掩码长度相同,则比较节点之间的管理距离(比如metric),管理距离短的 生效 ### 3 优先级案例 [root@egon ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 eth0 172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 192.168.0.0 192.168.100.70 255.255.0.0 UG 0 0 0 eth0 192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 192.168.100.78 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 # ping 192.168.5.20 会先检索掩码长的路由条件,即按照如下顺序 255.255.255.255 > 255.255.255.0 > 255.255.0.0 > 0.0.0.0 于是依次比对192.168.100.78、192.168.100.0、172.16.10.0发现也无法匹配 接着再匹配192.168.0.0这条网络路由条目,发现能匹配,所以选择该路由条目,从eth0发出数据包 [root@egon ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 eth0 192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 192.168.100.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1 # ping 192.168.100.20 由于两块网卡eth0和eth1都是192.168.100.0/24网段地址, 所以它们的路由条目在掩码长度的匹配上是相同的,选择Metric更小的,即eth0网卡 3.4.2 路由命令route 1 显示路由信息 # 0 route命令 用于显示和管理Linux内核的路由表。使用add或del选项时,route命令将设置路由条目 注:本机收到数据,会根据该路由表的路由策略,来判断数据通过哪个网卡及网关流出 # 1 显示路由表信息 route -n # 其中-n选项表示不解析主机名 [root@egon ~]# route -n Kernel IP routing table 内核IP路由表 Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 eth0 172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 192.168.0.0 192.168.100.70 255.255.0.0 UG 0 0 0 eth0 192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 192.168.100.78 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 # 路由表信息条目 默认有: 保留网关 169.254.0.0/24 eth0/eth1 # 根据网卡个数 网卡同段网络路由 172.16.10.0/24 192.168.100.0/24 # 解释:网卡IP为 172.16.10.1/24,默认就会产生一条网络路由条目 172.16.10.0/24这个网段 # 显示解析: Destination # 目标网络或目标主机 值为default(0.0.0.0)时,表示是默认网关,不走主机或网络路由的数据,会发送到该网关 Gateway # 网关地址,即该条路由 下一步给哪个地址再转发 值为0.0.0.0时,表示当前记录对应的Destination 跟本机在同一个网段,通信时不需要经过网关再转发 Genmask # 网络掩码 值为32位时,是主机路由;值为0位时,是默认路由(即网关) Flags # 标记位 U : route is up 路由是激活的 H : target is a host 目标是个主机 G : use gateway,需要经过网关 # 即设置了下一跳的路由条目 ! : 拒绝路由 Metric # 路由距离,到达指定网络所需的中转数 这三项不在Linux内核中使用 Ref # 路由项引用次数 Use # 此路由项被路由软件查找的次数 Iface # 网卡名字,即该路由是通过哪个网卡流出 2 添加、删除路由 route [add|del] [-host|-net|default] [目标IP/mask] [gw] [网关IP] [dev] [网卡名字] route [add|del] [-host|-net|default] [目标IP] [netmask] [网络掩码] [gw] [网关IP] [dev] [网卡名字] # 选项说明: add|del : 增加或删除 路由记录条目 -net : 增加或删除的是一条 网络路由 -host : 增加或删除的是一条 主机路由 default : 增加或删除的是一条 默认路由 netmask : 明确使用netmask关键字 指定掩码 # 也可以不使用该选项,直接在地址上使用cidr格式的掩码,即目标IP/MASK gw : 设置 网关 gateway dev : 设置网络接口(即网卡设备) # 一般内核会自动判断路由条目应该关联到哪个网络接口 # 1 添加|删除 主机路由 route add -host 172.16.10.55/32 gw 192.168.45.20 dev eth0 route add -host 172.16.10.55 gw 192.168.45.20 # 主机路由是32位,可直接省略掩码 route del -host 172.16.10.55 # 2 添加|删除 网络路由 route add -net 172.16.10.0/24 gw 192.168.45.70 route add -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.45.70 # 添加同一个局域网的主机 route add -net 172.16.10.0/24 dev eth0 # 则不需要指定下一跳网关,网卡可指向本机接口 route del -net 172.16.10.0/24 # 删除时,偷懒 指定ip/mask即可 # 3 添加|删除 默认路由 route add default gw 192.168.45.10 # 等于 route add -net 0.0.0.0/0 gw 192.168.45.10 route del default route del default gw 192.168.45.10 # 若有多条默认路由,则再加上gw即可唯一删除指定条目 3 永久配置路由信息 # 1 根据出去的网卡接口,就创建哪个网卡对应配置文件 /etc/syconfig/network-scripts/route-ethX # 2 配置格式 DEST via nexthop # 每一行,一个路由条目 要到达的目标 via关键字 下一跳地址(网关) # 要求下一跳必须能到达,且一般都和 ethX 同网段 eg: eth0网卡的IP地址是192.168.10.123,要通过网卡eth0出去到达10.0.0.10 10.0.0.0/24 via 192.168.10.222 # 那么网关要和eth0的地址在同网段 # 3 配置案例 其中dev 网卡可以省略的,因为配置在哪个eth文件中就会从哪个接口出去 # 默认路由 default via 192.168.45.1 1.1. 0.0.0.0/0 via 192.168.45.1 # 网段路由 192.168.10.0/24 via 0.0.0.0 # 主机路由 192.168.45.52/32 via 192.168.45.33 dev eth1 # 配置完后,重启network服务即可立即生效 systemctl restart network # 4 注意事项 1.route-ethX 对应的 网卡配置文件ifcfg-ethX必须存在,否则路由无效 注意:对于虚拟机,通常新添加的网卡都没有对应的ifcfg-ethX文件,但ifconfig却能找到该网卡 2.若在文件中配置永久默认路由,且该网卡使用了DHCP服务分配地址 则必须保证网卡配置文件ifcfg-ethX中的 DEFROUTE指令设置为"no",表示DHCP不设置默认路由 3.若在文件中配置永久路由,且该网卡使用了DHCP服务分配地址 则必须保证网卡配置文件ifcfg-ethX中的 PEERROUTES指令设置为"no",表示DHCP设置的路由允许被覆盖 3.5 路由实验

实验网络拓扑图

3.5.1 实验准备:虚拟机及交换机 ### 实验准备 1.4台虚拟机,分别有1台-1网卡 3台-2网卡 内存256m 2.4台交换机 依次创建仅主机模式的四个"交换机":vmnet1、vmnet2、vmnet3、vmnet4 下图1 # 解释 为防止Vm网络模式的干扰,都设置为仅主机模式,虚拟机默认都只能与宿主机通信 vm虚拟机,是通过虚拟网卡vmnet来通信 # 实验这里作为交换机来使用 3.注意虚拟机2/3/4的 两个网卡,需要分别连不同的交换机(vmnet) 下图2

3.5.2 实验准备:虚拟机网卡设置 ### 1 命令初始化 iptables -F # 清空防火墙规则 setenforce 0 # 关闭selinux systemctl stop NetworkManager # 禁用NetworkManager ### 2 分别配置静态IP 注意子网掩码一定要与vmnet的配置保持一致 [root@egon ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=static IPADDR=1.1.1.8 NETMASK=255.255.255.0 NAME=eth0 DEVICE=eth0 ONBOOT=yes NM_CONTROLLED=no # 注:不确定哪个网卡连接的 交换机X 先配置为dhcp动态获取看看IP地址,再进行静态配置 TYPE=Ethernet BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes NM_CONTROLLED=no 3.5.3 实验问题 问题1:虚拟机1上ping 1.1.1.2 是否能通? # 分析 可通 因为本机1.1.1.8与目标主机1.1.1.2 两台机器处于一个LAN中 并且两台机器上的路由表里具有Destination指向对方的网段路由条目 # ping 1.1.1.2的过程 虚拟机1:1.1.1.8 Vmnet1 虚拟机2:1.1.1.2 [root@linux01 ~]# route -n Destination Gateway Genmask Flags Metric Ref Use Iface 1.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 1. 虚拟机1,根据虚拟机1的路由表策略第一条,从网卡eth0出去 2. 网卡eth0连接到交换机1,交换机1会把该数据包在该网段内进行广播 # 广播内机器都会收到,拆包后发现不是自己的,都会丢掉 3. 虚拟机2,收到数据包后进行拆包,内核发现目标ip是自己,就不会丢弃包 4. 且gateway没有指向下一跳,虚拟机2 就不会进行 再一次的转发数据包 # ping 回包过程也是如此,根据虚拟机2的路由表 问题2:虚拟机1上ping 2.2.2.2 是否能通? # 分析 不通 因为本机1.1.1.8与目标主机1.1.1.2 两台机器处于一个LAN中 但虚拟机1的路由表里没有Destination指向2.2.2.0/24网段的路由条目 # 解决: 虚拟机1上 添加到达2.2.2.0/24的网段路由 # 主机、默认路由也都可 route add -net 2.2.2.0/24 dev eth0 # ping 2.2.2.2的过程 虚拟机1:1.1.1.8 Vmnet1 虚拟机2:1.1.1.2 整体过程 同 问题1 一样 虽然此时,虚拟机2用来收包的网卡是1.1.1.0段的网卡 但虚拟机2在做内核分析时,会发现目标ip:2.2.2.2就是自己机器上的 压根不会搭理是哪个网卡的,所以会正常接收和处理该包 # ping 回包过程也是如此,根据虚拟机2的路由表 默认有1.1.1.0的网段路由,不需要额外添加 问题3:虚拟机1上ping 2.2.2.3 是否能通? # 分析 不通,虚拟机1的数据包,需要经过虚拟机2来转发 虽然在问题2,为虚拟机1添加了到达2.2.2.0/24段的路由 数据包沿着虚拟机1的eth0网卡,发送到虚拟机2同网段的网卡 但虚拟机2发现不是自己,会直接丢掉,压根都不会帮你转发 因为虚拟机1根本没有将网关指向虚拟机2,且虚拟机2需要开启路由转发 # 解决: 1.虚拟机1上 添加到达2.2.2.0/24的网段路由,且将网关写成虚拟机2的网卡1地址 # 网关的地址,必须是跟本机是同段的地址 route add -net 2.2.2.0/24 gw 1.1.1.2 dev eth0 2.虚拟机2上 开启路由转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 也需要正确来往的路由策略,默认有,无需额外处理 3.虚拟机3上 添加到达1.1.1.0/24的网段路由 # 回包需要 route add -net 1.1.1.0/24 gw 2.2.2.2 dev eth0 # ping 2.2.2.3的过程 虚拟机1:1.1.1.8 Vmnet1 1.1.1.2:虚拟机2:2.2.2.2 Vmnet2 虚拟机3:2.2.2.3 问题4:虚拟机1上ping 3.3.3.3 是否能通? # 分析 不通,虚拟机1的数据包,需要经过虚拟机2来转发 # 理由基本同问题3一致 # 解决 1.虚拟机1上 并不能直接到达3.3.3.0/24段的网络,需要虚拟机2转发,所以要添加虚拟机2的网关 route add -net 3.3.3.0/24 gw 1.1.1.2 dev eth0 2.虚拟机2上 开启路由转发 # 问题3中 已开启 3.虚拟机2上 需要添加到达3.3.3.0/24段的网络,但不需要再转发,故可不用添加网关 route add -net 3.3.3.0/24 dev eth1 # 需要从交换机2出去,需要选择eth1网卡 4.虚拟机3上 回包需要添加到达1.1.1.0/24段的网络,需要虚拟机2转发,故要添加虚拟机2的网关 # 问题3 已添加 问题4/5:后面继续ping 3.3.3.4 和4.4.4.4 # 原则 1.一层一层的往下,route -n 看是否有能到达的路由 2.看是否需要转发,需要转发的就需要 添加转发机的网关 和 开启路由转发 3.5.4 路由优化 # 以虚拟机1为例,除了第一个路由条目外,其他的路由条目(包括第三条在内),其实都是要送给1.1.1.2的 [root@egon ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 1.1.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 2.2.2.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0 2.2.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 3.3.3.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0 4.4.4.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0 # 故可以统一用一条即可,这就是默认路由的来历 route del -net 2.2.2.0/24 route del -net 2.2.2.0/24 # 两条,要再删一次 route del -net 3.3.3.0/24 route del -net 4.4.4.0/24 route add default gw 1.1.1.2 # 其他虚拟机类似


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3