网络排查工具MTR

常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。

traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况, 参数 -U 使用UDP数据包探测 。

安装方法

1.Windows系统可以直接在https://cdn.ipip.net/17mon/besttrace.exe下载BestTrace工具并安装。也可以在https://github.com/oott123/WinMTR/releases GitHub上下载MTR专用工具,该工具为免安装,下载后可以直接使用。

2.Linux可以直接运行命令进行安装。

1.# Debian/Ubuntu 系统
2.apt install mtr
3.
4.# RedHat/CentOS 系统
5.yum install mtr

3.Apple客户端可以在App store搜索Best NetTools下载安装

4.Android客户端:可以在Google Play上下载TracePing,但是由于国内Google Play无法访问,笔者自行下载下来,可以直接访问 https://dwz.cn/KCdNPH4c 下载TracePing。

使用

MTR使用非常简单,查看本机到 http://qq.com 的路由以及连接情况直接运行如下命令:

1.mtr qq.com

MTR http://qq.com 测试界面

具体输出的参数含义为:

  • 第一列是IP地址
  • 丢包率:Loss
  • 已发送的包数:Snt
  • 最后一个包的延时:Last
  • 平均延时:Avg
  • 最低延时:Best
  • 最差延时:Wrst
  • 方差(稳定性):StDev

参数说明

-r or –report

使用 mtr -r http://qq.com 来打印报告,如果不使用 -r or –report 参数 mtr 会不断动态运行。使用 report 选项, mtr 会向 http://qq.com 主机发送 10 个 ICMP 包,然后直接输出结果。通常情况下 mtr 需要几秒钟时间来输出报告。mtr 报告由一系列跳数组成,每一跳意味着数据包通过节点或者路由器来达到目的主机。

一般情况下 mtr 前几跳都是本地 ISP,后几跳属于服务商比如 腾讯数据中心,中间跳数则是中间节点,如果发现前几跳异常,需要联系本地 ISP 服务提供上,相反如果后几跳出现问题,则需要联系服务提供商,中间几跳出现问题,则需要联系运营商进行处理

默认使用 -r 参数来生成报告,只会发送10个数据包,如果想要自定义数据包数量,可以使用 -c 参数

-s or –packetsize

使用 -s 来指定ping数据包的大小

1.mtr -s 100 qq.com

100 bytes 数据包会用来发送,测试,如果设置为负数,则每一次发送的数据包的大小都会是一个随机数。

-c

指定发送数量

1.mtr -c 100 qq.com

-n

不进行主机解释

使用 -n 选项来让 mtr 只输出 IP,而不对主机 host name 进行解释

1.mtr -n qq.com

MTR结果分析

当我们分析 MTR 报告时候,最好找出每一跳的任何问题。除了可以查看两个服务器之间的路径之外,MTR 在它的七列数据中提供了很多有价值的数据统计报告。Loss% 列展示了数据包在每一跳的丢失率。Snt 列记录的多少个数据包被送出。使用 –report 参数默认会送出10个数据包。如果使用 –report-cycles=[number-of-packets] 选项,MTR 就会按照 [number-of-packets] 指定的数量发出 ICMP 数据包。

Last, Avg, Best 和 Wrst 列都标识数据包往返的时间,使用的是毫秒( ms )单位表示。Last 表示最后一个数据包所用的时间, Avg 表示评价时间, Best 和 Wrst 表示最小和最大时间。在大多数情况下,平均时间( Avg)列需要我们特别注意。

最后一列 StDev 提供了数据包在每个主机的标准偏差。如果标准偏差越高,说明数据包在这个节点的延时越不相同。标准偏差会让您了解到平均延时是否是真的延时时间的中心点,或者测量数据受到某些问题的干扰。

例如,如果标准偏差很大,说明数据包的延迟是不确定的。一些数据包延迟很小(例如:25ms),另一些数据包延迟很大(例如:350ms)。当10个数据包全部发出后,得到的平均延迟可能是正常的,但是平均延迟是不能很好的反应实际情况的。如果标准偏差很高,使用最好和最坏的延迟来确定平均延迟是一个较好的方案。

在大多数情况下,您可以把 MTR 的输出分成三大块。根据配置,第二或第三跳一般都是您的本地 ISP,倒数第二或第三跳一般为您目的主机的ISP。中间的节点是数据包经过的路由器。

当分析 MTR 的输出时,您需要注意两点:loss 和 latency。

网络丢包

如果在任何一跳上看到 loss 的百分比,这就说明这一跳上可能有问题了。当然,很多服务提供商人为限制 ICMP 发送的速率,这也会导致此问题。那么如何才能指定是人为的限制 ICMP 传输 还是确定有丢包的现象?此时需要查看下一跳。如果下一跳没有丢包现象,说明上一条是人为限制的。如下示例:

人为限制MTR丢包

在此例中,第4跳发生了丢包现象,但是接下来几条都没任何丢包现象,说明第二跳的丢包是人为限制的。如果在接下来的几条中都有丢包,那就可能是第二跳有问题了。请记住,ICMP 包的速率限制和丢失可能会同时发生。

MTR丢包截图

从上面的图中,您可以看从第13跳和第17跳都有 10% 的丢包率,从接下来的几跳都有丢包现象,但是最后15,16跳都是100%的丢包率,我们可以猜测到100%的丢包率除了网络糟糕的原因之前还有人为限制 ICMP。所以,当我们看到不同的丢包率时,通常要以最后几跳为准

还有很多时候问题是在数据包返回途中发生的。数据包可以成功的到达目的主机,但是返回过程中遇到“困难”了。所以,当问题发生后,我们通常需要收集反方向的 MTR 报告。

此外,互联网设施的维护或短暂的网络拥挤可能会带来短暂的丢包率,当出现短暂的10%丢包率时候,不必担心,应用层的程序会弥补这点损失。

网络延迟

除了可以通过MTR报告查看丢包率,我们也还可以看到本地到目的之间的时延。因为是不通的位置,延迟通常会随着条数的增加而增加。所以,延迟通常取决于节点之间的物理距离和线路质量。

MTR查看网络延迟

从上面的MTR报告截图中,我们可以看到从第11跳到12跳的延迟猛增,直接导致了后面的延迟也很大,一般有可能是11跳到12跳属于不通地域,物理距离导致时延猛增,也有可能是第12条的路由器配置不当,或者是线路拥塞。需要具体问题进行具体的分析。

然而,高延迟并不一定意味着当前路由器有问题。延迟很大的原因也有可能是在返回过程中引发的。从这份报告的截图看不到返回的路径,返回的路径可能是完全不同的线路,所以一般需要进行双向MTR测试。

注:ICMP 速率限制也可能会增加延迟,但是一般可以查看最后一条的时间延迟来判断是否是上述情况。

根据MTR结果解决网络问题

MTR 报告显示的路由问题大都是暂时性的。很多问题在24小时内都被解决了。大多数情况下,如果您发现了路由问题,ISP 提供商已经监视到并且正在解决中了。当您经历网络问题后,可以选择提醒您的 ISP 提供商。当联系您的提供商时,需要发送一下 MTR 报告和相关的数据。没有有用的数据,提供商是没有办法去解决问题的。

然而大多数情况下,路由问题是比较少见的。比较常见的是因为物理距离太长,或者上网高峰,导致网络变的很慢。尤其是跨越大西洋和太平洋的时候,网络有时候会变的很慢。这种情况下,建议就近接入客户的节点。

centos网络命令

在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。

目前在CentOS上的NetworkManager版本比较低,而且比较适合有桌面环境的系统,所以服务器上保留network服务即可,将NetworkManager关闭,并且禁止开机启动。

systemd管理上:

systemctl status NetworkManager #查看状态

systemctl stop NetworkManager

systemctl disable NetworkManager #enable 表示开机自启 disable 表示开启不启动

如果NetworkManager没有运行,则可以通过简单运行来启动它。

# systemctl start NetworkManager

停止NetworkManager

要出于某种原因停止或停用NetworkManager,请发出以下命令。

# systemctl stop NetworkManager

启用NetworkManager后我们可以用以下图形命令来配置网络

nmtui

ifconfig -a 查处网络情况

查看网关和路由表(路由就是选路)
命令:route

跟踪数据包的转发路径
命令:traceroute

查看网络连接状态
命令:netstat
选项: -t tcp
-u udp
-p 进程
-a 所有
-n 数字形式显示

重启网络服务的方法
service network restart

ifconfig eth0 up (启用网卡) 或者ifup eth0

ifconfig eth0 down (禁用网卡) 或者 ifdown eth0

	同一个网络接口可以使用子接口的方式设置多个IP地址
	[root@centos ~]#  ifconfig eno33554984:2 192.168.146.152 netmask 255.255.255.0 up

	当服务器重启或网络服务重启后,子接口配置将消失,如需重启后依然生效,可以将配置子接口命令加入开机自动执行文件/etc/rc.local文件中。

(如果设置后还没有开机自动执行,是因为有的centos版本/etc/rc.d/rc.local没有执行权限,于是执行    chmod +x /etc/rc.d/rc.local就可以了)

以下看下如何配置网卡固定IP等

例如网卡设备名称为eth0, 用vi命令编辑网卡配置文件, 设置IP,掩码,网关,DNS。其中NAME和DEVICE 后面的名字按实际的网卡名字填写。

# cd /etc/sysconfig/network-scripts

然后ls 看到里面有网卡配置文件 ifcfg-eth0

# vi ifcfg-eth0

打开文件后按“i”键切换至编辑模式,修改以下相关内容,标颜色的部分按实际情况修改。编辑完成后,按”Esc”退出编辑模式,输入“: wq” 保存退出。

TYPE=Ethernet

DEVICE=eth0

NAME=eth0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.1.200

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=114.114.114.114

修改完成后重启网络服务

# systemctl restart network

Centos7中利用docker搭建openwrt旁路由

https://blog.csdn.net/ndd1996/article/details/109185747

1.查询当前网卡名称(以下均以网卡名eth0为例,请注意替换)

2.打开网卡混杂模式

3.创建虚拟网络

4.拉取openwrt镜像(以lean大神的openwrt为例)

拉取完毕之后查看一下拉取结果

5.创建并运行openwrt容器

6.查看openwrt容器运行状态,如果STATUS是UP则说明运行成功

7.进入openwrt容器

8.编辑配置文件

修改lan口内容

9.重启网络

docker中搭建openwrt到此结束,具体openwrt旁路由配置请参照百度或者google

CentOS7系统配置firewalld使用NAT方法将网络共享给内部局域网机器

1,用 Linux 打造路由器 zebra,

2,Linux系统下安装Vmware

3,linux+openwrt

4,firewalld+nat

5,iptables

自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源。
而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个公网 IP 使用,所以更加坚定了让负载均衡后端服务器释放公网 IP 的想法。
可是,后端服务器也不是简单释放公网 IP 就能正常工作的,正在运行的系统很多模块依然需要具有连接外网获取数据的能力。

所以就想到了用 CentOS 做一个软路由(内网 NAT 转发),如果能实现的话,就满足了我的需求。
搜索并试验了一番,目前发现用 iptables 是可行的,而且已经被我验证有效的方案。

由于用到了 iptables,需要停止并禁用内置的 firewalld 防火墙服务。

☼ 停止内置的 firewalld

systemctl stop firewalld
systemctl disable firewalld

☼ 打开系统的 IP 转发功能

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

☼ 安装 iptables 服务

yum -y install iptables-services
# 移除 iptables 服务
#yum -y remove iptables-services

☼ 查看 iptables 规则

iptables -L

☼ 清空默认的 filter 表

iptables -F

☼ 清空默认的 nat 表

iptables -t nat -F

☼ 默认规则,禁止所有入站,允许所有出站

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

☼ 默认规则,允许所有本地环回通信,出入站

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

☼ 重点,开启 NAT 功能

iptables -t nat -A POSTROUTING -j MASQUERADE

☼ 完整的命令

可以在命令行下粘贴批量执行

systemctl stop firewalld
systemctl disable firewalld


yum -y install iptables-services


iptables -F
iptables -t nat -F
iptables -P INPUT  DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.66.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 你的可信任远程管理IP -j ACCEPT


iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables-save > /etc/sysconfig/iptables
systemctl restart iptables



☼ 其他

# 允许已建立的传入连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许DHCP传入连接
iptables -A INPUT -i eth1 -p udp --dport 67:68 -j ACCEPT

# 默认禁止路由转发
iptables -P FORWARD DROP

# 允许内网路由转发
iptables -A FORWARD -s 192.168.66.0/24 -j ACCEPT

☼ 后记,补充 2017-12-13 20:28

捣鼓了一下午,NAT 转发当路由器供内网服务器上网终于搞定了,结果CentOS重启后,发现 iptables 的配置丢失,竟然没有永久保存?
太扯淡!

网上说这个问题的还很多,有人说可以制作自启动脚本,在启动时自动将 iptables 的规则重新注册一次,
也算是一个解决办法。

不过,思来想起,既然 CentOS 已经抛弃了 iptables ,那肯定是有一定道理的,firewalld 一定也有办法实现同样的功能吧!


firewall-cmd --permanent --zone=public --add-masquerade

# 调整防火墙策略,开放 vrrp 协议,给 Keepalived 使用
# 否则可能导致【脑裂】问题,争抢VIP,或者master挂掉之后backup无法正常工作
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --protocol vrrp -j ACCEPT
firewall-cmd --reload
#

搞定了。

当然其他功能端口的开放,这里就不啰嗦了 (0^0)。

other page1

环境介绍:

一台CentOS6 主机,双网卡,两网段

网口设定如下:

[root@CentOS ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
[root@CentOS ~]# 

[root@CentOS ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static

IPADDR=192.168.66.1
NETMASK=255.255.255.0

[root@CentOS ~]# service network restart


[root@CentOS ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:37:00:93  
          inet addr:172.16.20.183  Bcast:172.16.255.255  Mask:255.255.0.0

		  
eth1      Link encap:Ethernet  HWaddr 00:0C:29:37:00:9D  
          inet addr:192.168.66.1  Bcast:192.168.66.255  Mask:255.255.255.0		

打开网卡转发

[root@CentOS ~]# vim /etc/sysctl.conf  
net.ipv4.ip_forward = 1

立即生效

[root@CentOS ~]# sysctl -p

转发规则:

[root@CentOS ~]# iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -j SNAT --to 172.16.20.183 #出口为静态IP选这个
[root@CentOS ~]# iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth0 -j MASQUERADE #出口为动态IP选这个

查看/保存转发规则

[root@CentOS ~]# iptables -t nat -nL
[root@CentOS ~]# service iptables save

other page2

学校实验室有台服务器申请了固定的公网IP,能连接外部网络,同时该机器和其它几台内部服务器连接在一个路由器上。需要将该服务器的网络共享给其它内网服务器。进行如下设置即可。

首先,外网服务器有两根网线连接,一根和外网相连,一根和内网路由器相连。在外网服务器进行NAT转发设置:

第一种方法:
开启NAT转发
# firewall-cmd --permanent --zone=public --add-masquerade
开放DNS使用的53端口,否则可能导致内网服务器虽然设置正确的DNS,但是依然无法进行域名解析。
# firewall-cmd --zone=public --add-port=53/tcp --permanent
重启防火墙
# systemctl restart firewalld.service
# 检查是否允许NAT转发
firewall-cmd --query-masquerade
# 关闭NAT转发
firewall-cmd --remove-masquerade

第二种方法:
开启ip_forward转发
在/etc/sysctl.conf配置文件尾部添加
net.ipv4.ip_forward=1
然后让其生效
# sysctl -p
执行firewalld命令进行转发:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o enoxxxxxx -j MASQUERADE -s 192.168.1.0/24
注意enoxxxxxx对应外网网口名称。
重启防火墙
# systemctl restart firewalld.service

设置外网服务器的IP地址为192.168.1.1,然后,在内网服务器中对配置文件/etc/sysconfig/network-scripts/ifcfg-enxxxxxx进行修改,设置网卡的网关为外网服务器的IP地址:

ONBOOT=yes
IPADDR=192.168.1.2
PREFIX=24
GATEWAY=192.168.1.1
DNS1=119.29.29.29

重启内网服务器的网络服务,即可访问外网了。

# systemctl restart network.service

M.2固态硬盘

M.2是固态硬盘的接口类型,PCI-e是通道类别,两者概念不同。
目前市面上的SSD主要分为三种规格(ngff接口就是M.2接口):
① 2.5英寸SATA接口SSD;
② M.2接口SSD(走SATA通道);
③ M.2接口SSD(走PCI-E通道且支持NVMe协议)
第一种2.5英寸SATA接口的SSD只要是主板上有SATA接口的都可以使用,优点就是兼容性较强,而且普遍比NVME SSD便宜些,缺点就是速度相对较慢(但比机械快很多),最快连续读写一般也无法超过550MB/s。
第二种M.2接口SSD(走SATA通道)是最具迷惑性的,很多人误以为M.2接口的SSD就是走PCI-E通道,性能很强,但事实上绝大部分M.2接口的SSD除非标注PCI-E通道(或者NVMe标志),否则肯定是SATA通道产品,本质性能上和第一种完全一致,很多奸商(尤其是整机)很喜欢用这种SSD来迷惑消费者。最具代表性的产品就是三星CM871/PM871之类的产品,还有浦科特M7VG(人傻钱多浦科特)等,非常不建议购买这一类!
第三种M.2接口SSD(走PCI-E通道且支持NVMe协议)是高性能的代表,也是未来的主流,因为现在主板上的M.2接口一般都可以支持NVMe协议,所以想买M.2接口SSD的用户务必购买这一类,这一类产品读写速度很容易达到1000MB/s甚至3000MB/s以上,比如三星PM961/SM961等,价格也不贵。购买的SSD只要有NVMe标志,就说明一定是PCI-E通道的,但是走PCI-E通道的产品未必支持NVMe协议(早期的M.2 PCI-E SSD一般都不支持)。

都是走pcie通道,支持nvme协议,只有接口不一样。

pcie的ssd拆开之后里面就是一张m.2的ssd,只不过是用了转接卡而已,贵出的价钱就是转接卡了,除了带灯,就没什么优点了。

就是改善一下适配而已,一个专门给台式机用,一个笔记本台式机都可以用,速度差不多。PCIE的是给无M2接口的老机子上的主板用的,通常是用在服务器上。

写入性能和读取性能:两个接口,分一二代,以前的m2走的是sata3标准路线,理论峰值6g 速度为六七百兆,最新的的m2走的是pcle3.0×4路线峰值是老款的五倍,旧款的pcle走的是2.0路线比老款的m2快,反正两个接口最新款的都是一条路线,pcle的理论上散热好些

M2好像除了是新东西外,实际使用好像没见得比PCIE快了什么。而M2有很多麻烦,首先装系统,我必须要把U盘弄成光驱,然后把ISO写入假光驱,然后安装系统,然后我发现居然还装不了,后来才发现我不能事先分区,而是必须在ISO的镜像引导里分区才可以装系统。
以前那种GHOST装系统的基本装不了,因为没有M2驱动,而有M2驱动的特制系统盘我网上找来找去都没有找到真的。pcie固态反而没这问题。
另外一个问题就是只能用WIN10或者WIN8.1。用WIN7会读不到系统,PCIE也没这问题。
所以M2如果你会装系统而且习惯用WIN10,那就用也无所谓,对于小白可能PCIE方便些。

详细介绍

PCI-E

如果说sata固态硬盘是固态硬盘中的老大哥,PCI-E接口就是固态硬盘接口中的贵族。

而PCI Express的接口根据总线位宽不同,还可分为X1、X4、X8和X16。目前使用较多的是PCIe X4,市面上流通较多的是PCI-E 2.0版本和3.0版本,对应的X4带宽为16Gbps/32Gbps,折算成传输速率约为2GB/s和3.93GB/s,相比SATA接口,这已经是非常恐怖的速率了。

M.2

M.2原名为NGFF接口,标准名称为PCI Express M.2 Specification。它是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来基于mini PCIe改良而来的msata固态硬盘。无论是更小巧的规格尺寸还是更高的传输性能M.2都远胜于mSATA。随着SATA接口瓶颈不断凸显,越来越多的主板厂商也开始在自家产品线上预留M.2接口,主流的M.2接口有三种尺寸,分别是M.2 2242、2260、2280。

另外通常我们把支持NVMe协议的高性能SSD叫做NVMe M.2 SSD。NVM Express(NVMe),或称非易失性内存主机控制器接口规范(Non-Volatile Memory express),,是一个逻辑设备接口规范,通常是指使用PCI-E通道的SSD的一种协议规范,此规范目的在于充分利用PCI-E通道的低延时以及并行性,还有当代处理器、平台与应用的并行性,在可控制的存储成本下,极大的提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时。

Centos开ssh

在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS7

1、  首先,要确保CentOS7安装了  openssh-server,在终端中输入  yum list installed | grep openssh-server

此处显示已经安装了  openssh-server,如果又没任何输出显示表示没有安装  openssh-server,通过输入  yum install openssh-server

来进行安装openssh-server

2、  找到了  /etc/ssh/  目录下的sshd服务配置文件 sshd_config,用Vim编辑器打开

将文件中,关于监听端口、监听地址前的 # 号去除

然后开启允许远程登录

最后,开启使用用户名密码来作为连接验证

保存文件,退出

3、  开启  sshd  服务,输入 sudo service sshd start

检查  sshd  服务是否已经开启,输入ps -e | grep sshd

或者输入netstat -an | grep 22  检查  22 号端口是否开启监听

4、  在Vmware Workstation中,查看CentOS7的属性,发现网络连接方式是采用的  NAT  方式连接的

5、 在Vmware Workstation中,点击编辑=》虚拟网络编辑器,进入虚拟网络编辑器,查看发现 NAT 模式的连接采用的网络适配器名称为VMnet8

6、在 windows 主机中,在命令行中输入ipconfig 查看主机IP,找到 VMnet8 的连接信息,此处 ip 为192.168.30.1

7、在CentOS中,输入ifconfig查看网络连接地址,发现CentOS的网络地址为192.168.112.128

8、在CentOS中,输入ping 192.168.30.1 测试是否能连通主机,发现可以连通

9、在主机中,输入 ping 192.168.112.128,测试主机是否能连通CentOS,发现连不通

如果可以连得通,可以直接跳至第12 步

10、在主机,打开网络配置,选择网络适配器 VMnet8 的  TCP/IPv4   的属性,进行一下网络配置

要求子网掩码、默认网关均和CentOS一致,并将IP地址修改为 192.168.112.1,即保证主机的  IP  和  CentOS  的  IP  在同一网络区段中

11、再在主机中,输入 ping 192.168.112.128,已经可以连接得通了

12、在SSH工具(此处使用的XShell)中,新建连接,输入  CentOS   的  IP  地址、用户名、密码即可连接成功

连接成功

13、为了免去每次开启 CentOS 时,都要手动开启  sshd 服务,可以将 sshd 服务添加至自启动列表中,输入systemctl enable sshd.service

可以通过输入systemctl list-unit-files | grep sshd,查看是否开启了sshd 服务自启动

CentOS 7.6 网络配置

1、进入网络配置文件目录

查看网卡信息

ip addr

网络配置文件目录下的文件

cd /etc/sysconfig/network-scripts/

ls 找到网卡文件,比如这个是ifcfg-ens33,然后用VI命令编辑这个文件,进VI后用 i 表示编辑状态

vim ifcfg-ens33

1.1、编辑配置文件

TYPE=Ethernet
BOOTPROTO=static #启用静态IP地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=030344c0-c51d-4b0d-85a1-7277154a93df
DEVICE=eno16777736
ONBOOT=yes #开启自动启用网络连接
IPADDR0=192.168.72.141 #设置IP地址
PREFIXO0=255.255.255.0 #设置子网掩码
GATEWAY0=192.168.72.203 #设置网关
DNS1=192.168.99.100 #设置主DNS
DNS2=192.168.100.125 #设置备DNS
1.2 保存并退出

:wq! #保存退出
1.3 重启网卡

service network restart #重启网络

ping www.baidu.com #测试网络是否正常

ip addr #查看IP地址

UltraISO刻录U盘安装centos7.6报错

我第一次的时候用UltraISO刻录到我闲置的U盘上,跟着网上的教程修改了路径,并且坚信没问题可以安装的上…查阅很多资料,都看了很多,也分析了很多,有很多繁琐的解决方法,尝试了很多,但安装时还是报错! 提示 cut:/

第二天早上起来,我觉得我要不重新刻录下吧,说不定是我路径设置问题,实际证明了

这个问题因为路径错误,找不到正确的安装文件造成的…

正式教程

1、查看UltraISO 刻录好的 U 盘,先查看 U 盘的盘符名称

这里正常应该是 CentOS 7 x86-64,但是却命名成-CentOS 7 x8,这是因为超过了 Windows 10 系统的盘符命名长度

2、通过U 盘启动,到了选择安装界面(如下)时

按E键进行修改(系统版本问题有的是TAB键)

然后,你可以清晰的看到选择界面下面出现

vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
U 盘的名字是 CentOS 7 x8,但这里指向了 CentOS\x207\x20x86_64 ,所以出错的地方就在这里~

3、开始修改路径并且进行安装

既然我们知道了问题出在哪里了,那解决不就是洒洒水了吗?删除该条命令中路径后面的 6_64 就行了嘛~

将:

 > vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
修改为:

 > vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x8 rd.live.check quiet
(PS:路径中的 x20 就是空格)

修改完后,按Ctrl+X键进行执行就可以了正常进入 CentOS 的安装界面啦

Wireshark分析网页视频,写ROS的L7正则表达式

Wireshark是非常著名的数据分析软件,我们首先需要下载安装wireshark并安装。下面介绍wireshark如何抓包分析网页视频特征,并写出L7的代码。

操作流程:

1.      启动wireshark,并找到需要抓取数据包的网卡,准备抓取;

2.      启动浏览器,并打开浏览视频的网页;

3.      在wireshark capture interface点击start开始抓取;

4.      视频浏览一定时间后,停止wireshark抓取,并分析数据,输入http.request get查找请求获取的链接,一般都是以.swf结尾

5.      分析类型链接的数据,多次对比,找到共同点,并编写L7正则表达式

一、启用wireshark。

2013-12-12 10:06 上传

下载附件 (67.54 KB) 

通过列表可以选择我们需要抓取的数据包的网卡

2013-12-12 10:06 上传

下载附件 (22.55 KB) 

二、开启浏览器,但不要播放视频。这里以www.qiyi.com为例

三、点击start按钮开始抓取,然后点击播放网页视频。

四、视频播放一段时间后,我们可以停止抓取数据包,分析数据包最重要的是刚开始向视频服务器申请获取视频的get或post参数,我们可以使用http.request get来查找,如下图

2013-12-12 10:06 上传

下载附件 (66.72 KB) 

我们分析L7数据是从应用层开始,不管是游戏、还是视频,都不用考虑他们的frame、Ethernet、internet protocol和传输方式(TCP或者UDP),只从传输协议后分析,如视频,我们分析的是http传输协议

当然我们要找到的是视频文件,如.swf结尾的内容(有可能是mp4之类),其他jpg、js、png这些都不用考虑。上图中我们找到了一个相关匹配的GET值,我们可以看到主机向220.118.109.158的服务器获取一个.swf的flash视频文件,

2013-12-12 10:07 上传

下载附件 (92.41 KB) 

内容如下:

http://www.iqiyi.com/player/20131210153552/Player.swf/[[DYNAMIC]]/2/[[DYNAMIC]]/6

继续找到相关内容:

2013-12-12 10:07 上传

下载附件 (92.03 KB) 

这次我们获取到的有所不同

http://www.iqiyi.com/player/20131210153552/Player.swf/[[DYNAMIC]]/2/[[DYNAMIC]]/6

我们在用这样的方法对比多次这种视频的GET信息,几乎他们的连接内容都有以上的共同点

这样我们就可以开始抓取关键字,www.qiyi.com/player这些自动是固定的,然后是adplayer.swf或者qiyi_player.swf,这里我们只取.swf,那我们要包含的关键字有

GET + www.qiyi.com/player + .swf

最后我们写出以下L7的正则表达式代码

^(get|post) .+\www\ . \qiyi\ . \com\ / \player. +\ .swf

代码分析:

^ : 表示内容的起始

(get|post):中间的“|”标识get或者post

.+ :中间任意字符

\ : 将内容转换为字符

最后我们将代码简化为:

^(get|post) . +\qiyi\ . \com\ / \player. +\ .swf

这里没有包含www是因为可能服务器会更换其他的二级域名的可能,我们将代码添加入/ip firewall layer7-protocol

2013-12-12 10:08 上传

下载附件 (120.81 KB) 

后面的就是你需要在iP firewall filter里做防火墙过滤,还是在iP firewall mangle里做流控等操作了

下面是几个视频网页的L7正则表达式

2013-12-12 10:06 上传

下载附件 (122.19 KB)