26、网络专题3

1.子网掩码

  • 理解子网掩码决定了可用地址的数量即可
  • 使用子网掩码计算器即可https://www.36130.com/subnetmask/

2.网关

2.1网关介绍,route -n 查看网关,路由表

网关(Gateway)又称网间连接器,就是一个网络连接到另一个网络的“关口”。

网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络B向网络A转发数据包的过程。

  所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

运维在企业中:
领导下发一组IP地址给到我们,由我们配置到不同的服务器上
116.63.0.10/29

打开网站计算获得子网IP
http://www.md5.cn/tools/subnetmask/

2.2linux中关于网络的命令

route -n   # 查看网关,路由表



#配置临时的网关:
[root@haoshuaicong ~]# ip route add 0/0 via 10.0.0.2
#临时删除网关:
[root@haoshuaicong ~]# ip route del 0/0 via 10.0.0.2


#直接配置一条默认的网关,临时
[root@haoshuaicong ~]# route add default gw 10.0.0.2
#删除默认的网关,临时:
[root@haoshuaicong ~]# route del default gw 10.0.0.2


#给网卡配置多个IP地址: 临时重启失效  笔记
[root@haoshuaicong ~]# ip add add 10.0.0.201/24 dev eth0
#删除临时IP:
[root@haoshuaicong ~]# ip address del 10.0.0.201/24 dev eth0





dig haoshuaicong.icu  +trace    #DNS解析流程

nslookup  haoshuaicong.icu       #返回域名的信息,包括ip和哪个DNS服务器给你解析的

traceroute  -n  haoshuaicong.icu    #查看跳数,中间经过了多少路由器

3. 抓包方式

*抓包方式:wireshark抓包软件在Windows中使用*

*Linux抓包命令tcpdump是一个抓包工具,用于抓取互联网上传输的数据包*

    tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
    tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

#常用选项
[root@haoshuaicong ~]#yum -y install tcpdump

-i       #监听哪一个网卡 
-n       #不把ip解析成主机名
-nn      #不把端口解析成应用层协议
-c       #指定抓包的数量
-S       #不把随机序列和确认序列解析成绝对值
-w       #将流量保存到文件中,文件中的信息是无法直接查看的
-r       #读取文件中的内容
-v          #输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。 
-vv      #输出详细的报文信息。
-nnvvi ens33

#实例 上家工作遇到过什么故障。    ·
企业中遇到无法远程连接拍错流程: IDC机房服务器 云服务器
1.ping通
2.通过页面或者机房插显示器连接服务器抓包
tcpdump -nni eth0 port 12345
3.在公司windows电脑使用telnet连接测试
cmd窗口-->telnet 服务器IP地址  12345

结果: 
1.如果服务端可以看到来源公网IP地址 说明服务端做的限制
2.如果服务端来源IP地址不是公司公网IP地址 则需要放行抓取到的公网(打电话解决)
3.如果服务端收不到任何信息,说明是公司网络问题

保存到文件中
[root@haoshuaicong:~]# tcpdump -w 1.txt -nnvvi ens33 dst www.baidu.com
查看文件中的内容
[root@haoshuaicong:~]# tcpdump -r 1.txt


1、默认启动

tcpdump -vv        #普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

2、过滤主机

tcpdump -i eth1 host 192.168.1.1        #抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据

tcpdump -i eth1 src host 192.168.1.1    #指定源地址,192.168.1.1

tcpdump -i eth1 dst host 192.168.1.1    #指定目的地址,192.168.1.1

3、过滤端口

tcpdump -i eth1 port 80            #抓取所有经过eth1,目的或源端口是80的网络数据

tcpdump -i eth1 src port 80        #指定源端口

tcpdump -i eth1 dst port 80        #指定目的端口

4、协议过滤

tcpdump -i eth1 arp

tcpdump -i eth1 ip

tcpdump -i eth1 tcp

tcpdump -i eth1 udp

tcpdump -i eth1 icmp

#抓tcp某端口的数据包

tcpdump -i eth0 tcp port 21 -nn

5、常用表达式

非 : ! or "not" (去掉双引号) 

且 : && or "and" 

或 : || or "or"

#抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

#抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据

tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

#抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

4. Linux常用网络命令

*1. 网卡命令规则*

CentOS-6之前基于传统的命名方式如:eth1,eth0....

Centos-7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名是全自动的、可预知的,缺点是比eth0、wlan0更难读。比如enp5s0
kylin系统 ens33
ubuntu系统 ens33
biosdevname和net.ifnames两种命名规范

#net.ifnames的命名规范为:   

    设备类型+设备位置+数字

#设备类型:

    en 表示Ethernet

    wl 表示WLAN

    ww 表示无线广域网WWAN

#实际的例子:

    eno1    #板载网卡

    enp0s2  #pci网卡

    ens33   #pci网卡

    wlp3s0  #PCI无线网卡

    wwp0s29f7u2i2   #4G modem

    wlp0s2f1u4u1   #连接在USB Hub上的无线网卡

#biosdevname的命名规范为:

    根据系统BIOS提供的信息对网络接口进行重命名。

    em[1-N] #表示主板(嵌入式)NIC (对应机箱标签)

    pci     #表示PCI插槽中的卡,端口1至N

实际的例子:

    em1     #板载网卡

    p3p4    #pci网卡

    p3p4_1  #虚拟网卡

CentOS-7

默认内核参数(biosdevname=0(dell服务器默认是1),net.ifnames=1):  网卡名 "enp5s2"

biosdevname=1,net.ifnames=0:网卡名 "em1"

biosdevname=0,net.ifnames=0:网卡名 "eth0" (最传统的方式,eth0 eth1)

#定义网卡命令规则

在安装系统时,选择安装选项,按tab键,在跳出的一行内容后面添加net.ifnames=0 biosdevname=0

#命令行设置网卡名称规则

[root@qls ~]# cd /etc/sysconfig/network-scripts/  #修改网卡配置文件
[root@qls network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@qls network-scripts]# sed -i "s#ens33#eth0#g" ifcfg-eth0
[root@qls ~]# vim /etc/sysconfig/grub  #GRUB添加kernel参数
GRUB_CMDLINE_LINUX="...net.ifnames=0 biosdevname=0 quiet"
[root@qls ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@qls ~]# reboot   #重启系统生效

*2. 网卡配置文件详解*

#动态ip
[root@qls ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
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="fb32c09d-5a9f-40b9-852b-0f44ff2202ed"
DEVICE="eth0"
ONBOOT="yes"

#静态ip
[root@qls ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"                
BOOTPROTO="static"             
NAME="eth0"                    
DEVICE="eth0"                  
ONBOOT="yes"                   
IPADDR="10.0.0.88"            
NETMASK="255.255.255.0"        
GATEWAY="10.0.0.254"        
DNS1="223.5.5.5"            
DNS2="223.6.6.6"            


#详解:

TYPE=Ethernet        #网卡类型,一般是Ethernet,还有其他的如bond,bridge

BOOTPROTO=dhcp        #获取IP地址的方式,启动的协议,获取配置的方式。
                        dhcp表示动态获取
                        static或none表示静态手工配置,若想使用本地配置好的IP则应该设置成这个

DEFROUTE=yes        #是否设置默认路由,若为yes则可以在该文件通过PREFIX这个参数来设置子网掩码       

PEERDNS=yes            #yes表示由DHCP来获取DNS, no表示/etc/resolv.conf来控制,默认为yes。
                        yes:如果DNS设置,修改/etc/resolv.conf中的DNS
                        no:不修改/etc/resolv.conf中的DNS

NAME=eth0            #这个参数对应的值是网卡名,是给用户看的

UUID=...            #通用唯一识别码,若vmware克隆的虚拟机无法启动网卡可以去除此项

DEVICE=eth0            #系统逻辑设备名

ONBOOT=yes            #开机启动时是否激活网卡设备,centos7装完网卡后默认设置成no

HWADDR=...            #以太网硬件地址,mac地址)。若是vmware克隆的虚拟机无法启动网卡,也要改这个。

NM_CONTROLLED=yes    #是否通过NetworkManager管理网卡设备

IPADDR=...            #设置网卡对应的IP地址,网络服务启动,网卡激活后会自动将该地址配置到网卡上
                    前提(BOOTPROTO=static)而不是dhcp

PREFIX=24            #子网掩码长度,不要这么写PREFIX=255.255.255.0

NETMASK=255.255.255.0    #生产环境中一般用这种方式指定子网掩码

GATEWAY=10.0.0.254    #该网卡配置的IP对应的网关(默认路由)
                    若主机是多网卡设备,该参数只能在一个网卡配置文件里面出现,一台主机只有一个默认路由

DNS1=...            #主DNS,若这里设置了值,则会优先于/etc/resolv.conf中设置的DNS服务器的地址
                    需要和“PEERDNS=no”配合使用

DNS2=...            #次dns

USERCTL=no            #USERCTL=yes/no是否允许非root用户控制该设备

IPV6INIT=no         #是否启用IPV6

BROADCAST=...        #广播地址

PROXY_METHOD=none    #代理方式,一般不用这个参数

BROWSER_ONLY=no        #没有什么用。

#修改网卡配置文件的方法

vim  /etc/sysconfig/network-scripts/ifcfg-eth0

nmtui    #需要开启NetworkManger

*3. 网络管理命令*

ping

ping命令主要的功能是用来检测网络的连通情况和分析网络速度。

#常用选项

    -t      #持续ping,不中断。不加该选项只ping4个包。
    -n      #ping的包数,默认是4个。 windows
    -c      #ping包的个数,默认持续ping,linux
    -W      #多长时间ping一次。linux 延时1s
    -f      #极速ping。

windows: ping不通不能表示服务器不能访问 可能服务器禁止了ICMP协议(禁ping)
C:\Users\haoshuaicong-haoshuaicong>ping -n 2 www.baidu.com

正在 Ping www.a.shifen.com [110.242.68.3] 具有 32 字节的数据:
来自 110.242.68.3 的回复: 字节=32 时间=11ms TTL=52
来自 110.242.68.3 的回复: 字节=32 时间=12ms TTL=52

110.242.68.3 的 Ping 统计信息:
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 11ms,最长 = 12ms,平均 = 11ms

centos:
[root@haoshuaicong ~]#ping -c2 -W1 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=128 time=16.3 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=128 time=11.1 ms

-c   ping的个数
-W1 延时1秒返回请求

nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

#常用选项

     -l     #用于指定nc将处于侦听模式。
     -u     #指定nc使用UDP协议,默认为TCP
     -v     #输出交互或出错信息,新手调试时尤为有用
     -w     #超时秒数,后面跟数字 
     -z     #表示zero,表示扫描时不发送任何数据     

nmap

Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。

#常用选项

    -p          #指定端口号
       -p22        #单个端口
       -p22,80     #多个端口
       -p1-1000    #1到1000之间的端口


企业案例:
写一个脚本 探测自己所有的服务器上开放的服务以及端口 并且计算一些每个服务占用所有服务的百分比

telnet

一种远程登录的工具。同样可以检查某个主机是否开启某个端口
默认端口23
#用法 主要功能链接路由器、交换机 telnet 192.168.13.1

[C:\~]$ telnet 10.0.0.99 22   


Connecting to 10.0.0.99:22...
Connection established.       # 连接成功 说明22端口开启
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4

netstat

打印网络连接、路由表、tcp11种状态。
查看当前系统中运行了哪些服务端口
#常用选项
    -l      #只显示监听套接字。
    -n      #不做名字解析
    -t      #显示tcp端口
    -u      #显示udp端口
    -p      #显示pid和程序名字
    -r      #显示路由表
    -a      #显示所有的套接字

netstat -tnulp

ss

跟netstat命令差不多。

#常用选项
    -l      #只显示监听套接字。
    -n      #不做名字解析
    -t      #显示tcp端口
    -u      #显示udp端口
    -p      #显示pid和程序名字
    -r      #解析主机名
    -a      #显示所有的套接字

tracert

(windows) 路由跟踪(检查你与目标之间每个路口是否畅通)

#常用选项

    -d   #禁止把IP解析为对应的域名(主机名)
C:\Users\haoshuaicong-haoshuaicong>tracert -d www.baidu.com

通过最多 30 个跃点跟踪
到 www.a.shifen.com [110.242.68.3] 的路由:

  1     1 ms     1 ms     2 ms  192.168.11.1
  2     2 ms    <1 毫秒    5 ms  192.168.1.1
  3     4 ms     3 ms     3 ms  221.218.208.1
  4     2 ms     8 ms     6 ms  61.148.162.57
  5     3 ms     7 ms     4 ms  202.106.34.1
  6     4 ms     3 ms     3 ms  202.96.12.1

 DNS流程:
 浏览器缓存-->HOSTS-->windows缓存-->LDNS-->根

 查看windows缓存:
 ipconfig/displaydns
C:\Users\haoshuaicong-haoshuaicong>ipconfig/flushdns

Windows IP 配置

已成功刷新 DNS 解析缓存。


cmd---->mstsc 调出远程桌面

traceroute

路由跟踪(检查你与目标之间每个路口是否畅通)

#常用选项

      -n   禁止把IP解析为对应的域名(主机名)
在Linux系统中使用:
[root@haoshuaicong ~]#traceroute -n -I www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets
 1  10.0.0.2  0.216 ms  0.176 ms  0.100 ms
 2  192.168.11.1  25.034 ms  24.795 ms  24.615 ms
 3  192.168.1.1  22.107 ms  21.941 ms  21.748 ms

iotop

查看磁盘io情况

iftop

iftop界面说明:

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

#常用选项

-i        #设定监测的网卡

-B         #以bytes为单位显示流量(默认是bits)

-n        #使host信息默认直接都显示IP

-P        #使host信息及端口信息默认就都显示

-m        #设置界面最上边的刻度的最大值,刻度分五个大段显示

按q退出监控。

5 抓包总结

2.1 抓包的目标

1.抓出指定协议        ##协议
2.抓出指定端口        ##端口
3.抓出指定ip         ##ip

1.抓出指定协议

icmp  #Ping 数据包
tcp   
udp
http
arp
过滤https的数据包:tls (加密)

2.抓出指定端口

tcp.port == xxx     ##表示过滤出源端口或者目标端口是xxx的数据包          
udp.port == xxx     ##表示过滤出源端口或者目标端口是xxx的数据包
            src=source      dst=destitation
tcp.srcport == xxx  ##表示过滤出源端口是xxx的数据包
tcp.dstport == xxx  ##表示过滤出目标端口是xxx的数据包

3.抓出指定ip

ip.addr == xxxxxx  ##表示过滤出源ip或者目标ip是xxx的数据包
ip.src  == xxxxxx  ##表示过滤出源ip是xxx的数据包
ip.dst  == xxxxxx  ##表示过滤出目标ip是xxx的数据包

4.不固定内容的过滤-比较大小

==    ##等于
>=    ##大于等于
<=    ##小于等于
>     ##大于
<     ##小于
!=    ##不等于

1)过滤出端口小于1024的数据包

tcp.dstport <= 1024

5.与或非

and ## 并且  &&
or  ## 或者  ||
!   ## 取反

1)过滤端口号大于20小于等于1024

tcp.port >=20 && tcp.port <=1024
tcp.port >=20 and tcp.port <=1024

2)过滤出udp协议53端口的数据表

udp && udp.port == 53
##测试语句: dig www.baidu.com

2.2 抓包工具

抓包工具特点
==wire shark==可视化抓包,适用于win/mac/linux
==fiddler==代理,相当于途径,所有流量走fiddler,然后出去,抓取==app==数据表
科来
==tcpdump==linux自带,yum安装,抓四层
burp suite抓包,修改数据包,一般安全去使用()

2.3 tcpdump 过滤

首先需要安装

yum -y install tcpdump
过滤条件wiresharktcpdump
抓出指定协议icmp/tcp/httpicmp/tcp/udp(不支持7层协议)需要通过指定端口方法
抓出指定端口tcp.port == 80port 80
过滤出源端口tcp.srcport == 80[tcp或udp] src port 80
过滤目标端口tcp.dstport == 80[TCP或udp] dst port 80
抓出指定ip的数据包ip.addr == 10.0.0.200host 10.0.0.200
过滤出源ipip.src == 10.0.0.200src host 10.0.0.200
过滤出目标ipip.dst == 10.0.0.200dst host 10.0.0.200

2.4 分析与定位问题

linux ping你的云服务器公网IP
wireshark 抓取 vmnet8网卡数据包 过滤 icmp      
云服务器通过tcpdump过滤 icmp数据包  
## 这样做的目的相当于俩头抓包,看那一头有数据那一头没数据,从而分析到底是由于什么原因导致ping不同

环境准备:检查wireshark,tcpdump数据包是否正常

案例1:云服务器禁止ping命令,查看数据包情况

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all  ##禁止ping命令
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all  ##开启ping命令

案例2: 配置云服务器安全组,屏蔽icmp协议

6.网络篇重点总结

网络重点:

1.网络常用命令
ping
ip add 
route -n
ifconfig
nslookup
tcpdump
iotop
netstat -tnulp
telnet

ss -an|grep tcp
tracert
iftop
nmap
windows
ping
nslookup 
mstsc
cmd
ipconfig/all
ipconfig/flushdns
ipconfig/displaydns

2.OSI七层模型

3.TCP三次握手

4.TCP四次挥手

5.DNS解析流程

6.子网掩码决定IP可用数量

7.静态路由动态路由理解
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇