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
过滤条件 | wireshark | tcpdump |
---|---|---|
抓出指定协议 | icmp/tcp/http | icmp/tcp/udp(不支持7层协议)需要通过指定端口方法 |
抓出指定端口 | tcp.port == 80 | port 80 |
过滤出源端口 | tcp.srcport == 80 | [tcp或udp] src port 80 |
过滤目标端口 | tcp.dstport == 80 | [TCP或udp] dst port 80 |
抓出指定ip的数据包 | ip.addr == 10.0.0.200 | host 10.0.0.200 |
过滤出源ip | ip.src == 10.0.0.200 | src host 10.0.0.200 |
过滤出目标ip | ip.dst == 10.0.0.200 | dst 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.静态路由动态路由理解