欢迎来到李洋的博客

回首境界: 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

网络

1:网络的重要性:

所有的系统都有网络!
我们的生活已经离不开网络。
运维生涯50%的生产故障都是网络故障!

2:教室这么多的电脑如何上网的?

网卡(mac地址)
有线(双绞线传播电信号)双向,同时收发
无线(无线电波) 发的时候,不能收

交换
傻瓜交换机(tplink/dlink/水星...)
程控交换机(配置管理,可控 思科、华为、华三)

路由(双网卡)
内网卡---交换机 192.168.11.0/24(192.168.11.1~192.168.11.254)
外网卡---运营商 122.71.227.79(铁通)

查公网ip的方法:
windows,打开浏览器,访问百度,搜IP即可
linux:curl ifconfig.me

扩展:高级路由器还有上网行为管理器和防火墙功能哦

论坛:鸿鹄论坛(网络工程师)

3:osi 7层模型

分层的作用: 复用

网络工程师:
物理层 1层,通信介质的信号到数字信号(二进制0101)转换
数据链接层 2层 局域网之间计算机通信 通过mac地址(物理网卡)通信
网络层 3层 IP地址,路由(通过公网ip来访问全世界)
公网ip 具体的门牌号(唯一)
私网ip 家里的房间号(想对唯一)
传输层 4层 tcp/udp tcp(可靠,速度慢) udp(不可靠,速度快)
端口(让不同的应用程序,同时使用网络)
服务端使用的固定端口号,客户端使用随机端口号(支持多开)

开发工程师:
会话层 5层 控制发包的数据
表示层 6层 文件格式
应用层 7层 应用程序使用

对运维来说,重中之重的协议:tcp协议

4:tcp/ip协议 5层

物理层
数据链接层
网络层
传输层
应用层

一个数据包分成2部分,一个控制层面的数据,一个是应用层面的数据:控制层面只占一小部分,数据层面才占用大部分!

5:数据封装,解封装,数据传输过程

应用层---》数据
传输层---》tcp报头+数据
网络层---》ip包+tcp报头+数据
数据链接层=》数据帧+ip包+tcp报头+数据
物理层
=》将完整的数据包,由二进制转换成电信号
封装

解封装

6:tcp三次握手,四次挥手

tcp协议在传输数据的时候,需要先进行三次握手,传输上三层数据,四次挥手

tcp的标识:
SYN:建立链接
ACK:回应标识
FIN 断开链接
PSH 数据包
URG 紧急指针
RST 重置(重传)

1.tcp的三次握手

1.TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;
2.TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。
3.TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。
4.TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。
5.当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

2.tcp的四次挥手

1.客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2.服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3.客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4.服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5.客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗ *∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6.服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

7:ip地址划分

ip地址:实际上是32位二进制数(01100100.00000100.00000101.00000110)100.4.5.6
0.0.0.0~255.255.255.255

a类  1.0.0.1~126.255.255.254
第一组:1-126开头的地址是A类
  0<A类<127     128

b类  128.0.0.1~191.255.255.254
 128<=B类<192    64

c类  192.0.0.1~223.255.255.254

d类  组播,VRRP协议,keepalive高可用

e类  科研

私有ip地址范围:

局域网地址:
A 10.0.0.0~10.255.255.255
65536*256 ==

B 172.16.0.0~172.31.255.255
65536*16

C 192.168.0.0~192.168.255.255
65536

127.0.0.0~127.255.255.255  本地回环地址,保留地址
0.0.0.0              === 任意的目的地
255.255.255.255      === 

为了缓解ipv4地址不够用的问题
1:ipv6 fe80::2e60:cff:fe9c:a4b3

2: NAT network address 转换
好处:
a:节约大量的公网ip地址
b:减少了网络攻击

8:子网掩码的作用:决定一个网段的大小(可用ip的数量)

192.168.11.0/24 === 192.168.11.0  netmask 255.255.255.0

11000000,10101000,00001011,00000000
11000000,10101000,00001011,11111111
11111111,11111111,11111111,00000000     255.255.255.0


192.168.11.0/24  === 192.168.11.0   netmask 255.255.255.0
192.168.11.0    网络号
192.168.11.1    起始地址
192.168.11.254  结束地址
192.168.11.255  广播地址

同一个网段的ip地址,才能直接相互通信,不同网段的ip地址,需要路由器才能相互通信!

192.168.11.0/25 === 192.168.11.0  netmask 255.255.255.128

11000000,10101000,00001011,0
11000000,10101000,00001011,00000000     192.168.11.0     网络号

11000000,10101000,00001011,01111111     192.168.11.127   广播地址
11111111,11111111,11111111,10000000     255.255.255.128

192.168.11.128/25 === 192.168.11.128  netmask 255.255.255.128
11000000,10101000,00001011,10000000
11111111,11111111,11111111,10000000
11000000,10101000,00001011,1
11000000,10101000,00001011,10000000  192.168.11.128   网络号

11000000,10101000,00001011,11111111  192.168.11.255   广播地址

a:红蜘蛛广播
b: 限制无线路由器的ip的数量
子网掩码的值
192.168.1.0/28

c: 运营商的固定ip数限制
电信给了我一个公网ip

9:dns解析流程

dns:domain name system域名系统

DNS服务器:

百度:111.13.100.92
腾讯:199.22.22.22
网易:123.55.22.66

dns服务器:把域名解析成ip地址

域名:baidu.com
dns服务器:baidu.com 119.22.22.22

描述:打开浏览器输入www.oldboyedu.com地址之后回车,网站的打开流程?
1)把www.oldboyedu.com解析成公网ip地址
2)浏览器使用它的公网ip访问www.oldboyedu.com的网站服务器

dns记录的类型:

qstack.com
A       ip地址
CNAME   把你的域名解析到另一个域名    为网站添加cdn
MX      解析邮箱地址
NS      dns.qstack.com   NS == name server 授权dns

dns的命令

dig
dig @223.5.5.5  www.baidu.com +trace
dig  www.baidu.com

nslookup
nslookup www.oldboyedu.com

host
host www.oldboyedu.com

10:arp协议

arp 数据链路层
ARP(Address Resolution Protocol)
把ip地址解析成mac地址

arp要注意的
a:arp欺骗
b:如果局域网规模太大,广播风暴

11:tcpdump抓包

tcpdump -i eth0 port 80 -nn -S
-i 指定网卡
port 指定端口号 http 80;ftp 21 ;ssh 22;telnet 23;smtp 25 ;dns udp53 ;ntp udp 123

抓icmp
tcpdump -i eth0 icmp -n

-n  不把ip解析成主机名
-nn 不把端口解析成应用层协议
-c  指定抓包的数量
-S  不把随机序列和确认序列解析成绝对值

tcpdump -i eth0 port 80 -c 10 -S

抓tcp某端口的数据包
tcpdump -i eth0 tcp port 21 -nn
抓udp某端口的数据包
tcpdump -i eth0 udp port 53 -nn
抓icmp的数据包
tcpdump -i eth0 icmp -nn

tcpdump抓的包,wireshark分析

12:linux的网络命令和固定网卡名称为eth0

配置静态ip

[root@edu ~]# 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"

[root@edu ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"        #以太网
BOOTPROTO="static"     #dhcp自动,还是手动静态ip
NAME="eth0"            #网卡的名字
DEVICE="eth0"          #设备名eth0
ONBOOT="yes"           #开启自动连接网络

IPADDR="192.168.11.88"
NETMASK="255.255.255.0"
GATEWAY="192.168.11.1"
DNS1="223.5.5.5"
DNS2="223.6.6.6"

ping:测试网络连通
-c 3

nc 网络的瑞士军刀

服务端:nc -u -l 10000
客户端:nc -u 192.168.11.88 10000

nmap 扫描端口,黑客喜欢用

nmap  192.168.11.88
nmap -p1-5000 192.168.11.88

iftop:监控网络流量

路由跟踪
traceroute  -n www.qq.com (linux)
tracert -d www.qq.com     (windows)

固定网卡名称为eth0:

1)grubby --update-kernel=ALL --args="net.ifnames=0 biosdevname=0"
2)修改网卡配置文件的名称
mv /etc/sysconfig/network-scripts/ifcfg-ens32  /etc/sysconfig/network-scripts/ifcfg-eth0

3)修改网卡配置文件中设备的名字
sed -i 's#ens32#eth0#g' /etc/sysconfig/network-scripts/ifcfg-eth0
 
4)重启 reboot  init6  shutdown -r now

13:网络问题如何排查?

a:xshell连不上的问题
第一步:检查网络适配器,是否禁用vmware的虚拟机网卡
第二步:检查vmware net8的地址是和虚拟机的ip处于同一网段。
第三步:检查系统的vmware服务是否启动
第四步:检查虚拟机的网络适配器是否连接
第五步:在vmware控制台登录linux,查看是否有ip地址

b:ping 不通百度的问题
第一步:是否能ping通外网ip,223.5.5.5,能ping通,说明是dns配置问题
第二步:是否能ping通网关,route -n去查网关,如果能ping通网关,你可能被上网行为管理器限制,还有一种可能,你配置了一个错误的网关!

c:ping 不通vmware网关的问题
第一步:重启vmware nat服务
第二步:把虚拟机的网络适配器,先断开,再连接
第三步:进入vmware linux系统,systemctl restart network(重复3次)

企业里面上不了网:
第一步:检查物理是否正常
第二步:ping网关
第三步: ping公网ip
第四步:ping www.baidu.com 

tracert -d www.qq.com 
第五步:ping 自己服务器

14:静态路由项目

a:手动配置ip
b:克隆虚拟机

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

15:使用iptables实现nat上网

network02:
a:添加网关10.0.0.254,使network02能够访问外网
GATEWAY=10.0.0.254
b:配置iptable转发规则
iptables -F
iptables -t nat -F 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
-t  nat 指定nat表
-A  POSTROUTING链  数据包离开的时候,做修改
I  INSERT  往前插入一条规则
A  APPEND  往后追加一条规则
D  DELETE  删除一条规则
-F 清空iptables规则
-s  源ip或者源ip段
-j  MASQUERADE 指定动作为,模拟路由器的外网ip 10.0.0.12

c:开启内核转发参考
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
sysctl -p

network03:
a:添加网关192.168.0.12,使network03能够访问外网

iptables 四表五链:

四表:  
filter 过滤 ,  input  forward  output
nat  转换  , PREROUTING input output POSTROUTIONG
mangle 修改数据包信息 
raw  追踪数据包

五链:  
PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARD:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发

POSTROUTIONG:发送到网卡接口之前

黑名单模式

默认策略:ACCEPT
iptables -P INPUT ACCEPT
iptables -D INPUT -p tcp  -s 10.0.0.1  --dport 22 -j DROP

白名单模式

默认策略: DROP
iptables -A INPUT -p tcp  -s 10.0.0.1  --dport 22 -j ACCEPT
iptables -P INPUT DROP

iptables规则,从上往下

16:把linux变成路由器(iptables + dhcp服务)

dhcp分配信息包括:
ip地址
子网掩码
网关
dns

dhcp服务安装:
yum install dhcp -y

vim /etc/dhcp/dhcpd.conf

subnet 192.168.0.0 netmask 255.255.255.0 {      #192.168.0.0网络号,255.255.255.0子网掩码
  range 192.168.0.26 192.168.0.200;             #ip地址分配范围
  option domain-name-servers 223.5.5.5;         #指定给客户端分配的dns地址
  option routers 192.168.0.12;                  #指定给客户端分配的网关ip
  option broadcast-address 192.168.0.255;       #指定广播地址
  default-lease-time 3600;                      #dhcp默认租约时间
  max-lease-time 7200;                          #dhcp最长租约时间
}

systemctl start  dhcpd
systemctl enable dhcpd

17:实现多层端口映射

iptables -t nat -A PREROUTING -d 10.0.0.12 -p tcp --dport 3022 -j DNAT --to-destination 192.168.0.2:22

iptables -t nat -A PREROUTING -d 10.0.0.12 -p tcp --dport 1022 -j DNAT --to-destination 192.168.0.50:22
-t nat表
-A PREROUTING链  数据包进来的时候做处理
-d 目的ip是10.0.0.12
-p tcp协议
-dport  目的端口
-j 指定动作  DNAT 
DNAT  做目的ip地址转换
--to-destination 192.168.0.2:22

iptables -t nat -A PREROUTING -d 10.0.0.12 -p tcp --dport 1080 -j DNAT --to-destination 192.168.0.50:80

18:上网行为管理器panabit(unix)FREEBSD

panabit 使用freebsd系统

posted on 2019-05-13 20:09  miss_xxy  阅读(326)  评论(0编辑  收藏  举报

导航

levels of contents