Linux之网络管理
一、网络基础
1)ISO/OSI七层模型简介
ISO:国际标准化组织
OSI:开放系统互联模型
IOS:苹果操作系统(在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统)
- 现在流行的网络协议是TCP/IP四层模型,是在ISO/OSI七层模型的基础上演变而来的,并做了优化。
- 最上层(应用层)最贴近用户,最下层(物理层)最贴近实际的数据传递。
- 数据是通过接口从上层传递到下层的(发数据),接数据反之。
- 分层即是便于管理。
- 数据传递通过的是真正的物理层在进行数据传递,其它的是逻辑对应。
- 上3层(应用、表示、回话层)是为用户提供服务的,下4层用来为实际数据传递提供服务。那他们就用传输单位如下:
1:比特(物理层)
2:帧(数据链路层)里面保存最主要的信息--硬件地址
在cmd中输入 ipconfig /all 意思是所有。物理地址;就是计算机MAC地址,也就是计算机网卡地址。每一台电脑都有一个网卡地址,MAC地址负责局域网通信,IP地址负责外网通信。
3:报文(网络层):IP地址是在网络层也就是报文层,
4:TPDU(传输层)是传输协议数据单元,
5:SPDU(会话层)是会话协议数据单元,
6:PPDU(表示层)是表示层协议数据单元,
7:APDU(应用层)是应用协议数据单元。
- 发送的时候是从上层往下层发送,接收的时候是从下层往上层接收。7—>1:发送的时候流程,1->7:接收的时候流程。这就是七层模型的特点。
- ISO/OSI七层模型详解
1、 物理层:设备之间的比特流(计算机语言0101)的传输、物理接口(网线RJ45接口、音频圆孔接口、视频9针RS232串口)、电气特性等。常见设备:网线、网卡。
电气特性:网线总共8跟线。超五类接口中只有1、3、2、6四根线用来传输数据。
2、 数据链路层:成帧,用MAC地址访问媒介,错误检测与修正。
成帧:在数据包写入自身MAC地址,源和目的地的MAC地址。
3、 网络层:提供逻辑地址,选路。
逻辑地址:写入IP地址,源和目的地IP
选路:选择经过哪些路径传输数据
4、 传输层:可靠与不可靠的传输、传输前的错误检测、流控(流量控制)
确定传输协议是否可靠
TCP:传输控制协议 可靠,传送的数据一定不丢
UDP:用户数据报协议 更快,但是可能会丢失数据
用来确定端口号 (IP门牌号,端口号收件人)
网页端口:80;邮件端口:25(发送端口),110(接受端口);FTP端口:21
每种传输协议,都有65536个端口
5、 会话层:对应用会话的管理、同步
6、 表示层:数据的表示形式,特定功能的实现如:加密、压缩。
翻译:将汉字或英文字母翻译成计算机语言(0101)。英文通过ASCII码翻译,汉字通过GB2312翻译成计算机语言,图片通过jpg翻译计算机语言等
7、 应用层:用户接口
举个例子:用户A给用户B发送邮件,应用层扮演的角色就是打开浏览器,输入邮箱网址;登录以后写文字内容,上传图片、音频,点发送数据就传递给表示层进行表示翻译成计算机语言(0101);数据传给会话层判断是否会进行网络传递,例如自己编写的PPT无需网络传递,放入硬盘保存,不传给传输层;判断是需要网络传递就会发给传输层,传输层接到数据之后,写入邮件端口号,确定协议;到网络层之后,写入自己的IP地址,目标IP地址即收件人;到数据链路层之后,导入源MAC地址和目的地的MAC地址(负责局域网里传输);以上完成之后,接下来就到物理层。
2)TCP/IP四层模型
- TCP/IP模型与OSI模型的对应
OSI七层模型相当于车的模型,TCP/IP四层模型相当于原型车,先有车的模型,才能生产原型车,然后进行批量生产。
OSI七层模型 |
TCP/IP四层模型 |
应用层 |
应用层 |
表示层 |
|
会话层 |
|
传输层 |
传输层 |
网络层 |
网际互联层 |
数据链路层 |
网络接口层 |
物理层 |
1、网络接口层
他负责监视数据在主机与网络之间的交换。事实上,TCP/IP本事并为定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)(就是将IP翻译成网卡物理地址)工作在此层,即OSI参考模型的数据链路层.
2、国际互联层
主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP:主要是ping命令在使用)
3、传输层
为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。
注:TCP协议与UDP协议最大的区别是:TCP协议是可靠的、面向连接到的协议;UDP协议是不可靠的、面向无连接的协议。TCP协议就像打电话,在数据传输时可时刻告诉传输方某个数据传输错误,要求重新传输。UDP协议就像发短信,只要发出去就好了,不管对方是否受到或者看见。平时浏览网页用的就是TCP,而Q Q用的则是UDP协议 。TCP有一个三次握手会话
4、应用层
为用户提供各种服务,如:FTP、Telnet、DNS、SMTP等
数据封装过程
- TCP/IP模型与OSI模型的比较
共同点:1、都采用了层次结构的概念
2、都能够提供面向连接和无连接两种通信服务机制
不同点:1、前者是四层结构,后者是七层模型
2、对可靠性要求不同(前者要求高)
3、OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。
4、实际市场应用不同(前者已经是国际标准,后者是理论模型,并未成熟的产品)
3)IP地址
- IP包头
0 15 16 31
版本(4) |
头部长度(4) |
优先级和服务类型(8) |
总长度(16) |
|
标识(16) |
标志(3) |
片偏移(13) |
||
生存时间(8) |
协议(8) |
头部校验和(16) |
||
源IP地址(32) |
||||
目的IP地址(32) |
||||
选项(如果有) |
||||
数据 |
注:字段后面括号中的数字是指该字段在IP数据包头部信息中所占的位(bit)数。
- IPv4和IPv6的区别:
IPv4包头的大小不固定(20字节+可选数据),造成接收端接收时都要检测包头大小,再进行处理,性能低。
IPv6改进了这点,采用了固定大小的包头。
- 一行32位,总共5行,32x5=160位,每8位一个字节,IP包头的固定长度是20字节(不固定,有可能也比20字节还要长,也正是IPV4协议没有IPV6协议传输速度那么快的主要原因)。IPV4类型的IP总IP数量是:2的32次方等于42亿9千4百9十67295个IP,部分IP不对民用组织开放。
00000000.00000000.00000000.00000000
11111111.11111111.11111111.11111111
换算成10进制,则
0.0.0.0~255.255.255.255(我们把IP地址分为ABCDE五大类,D、E类不对
民用组织开放)
网络类别 |
最大网络数 |
IP地址范围 |
最大主机数 |
私有IP地址范围 |
A |
126 (2^7-2) |
1.0.0.0—126.255.255.255 |
2^24-2 |
10.0.0.0—10.255.255.255 |
B |
16384(2^14) |
128.0.0.0—191.255.255.255 |
2^16-2 |
172.16.0.0—172.31.255.255 |
C |
2097152(2^21) |
192.0.0.0—223.255.255.255 |
2^8-2 |
192.168.0.0—192.168.255.255 |
A类用第一个数来表示不同的网段,也就是说1.0.0.0和2.0.0.0代表不同的网络,不同的网络如果要通信需要用路由器(路由器是用来跨网络通信的),同网络段里通信使用交换机。后三位代表不同的主机数,也就是2^24-2,减2是因为A类:1.0.0.0为网络本身(不能分配),1.255.255.255为广播地址(不能分配)。
B类用前两个数表示同一个网段,后二位代表不同的主机数。
C类用前三个数表示同一个网段,后一位代表不同的主机数。
4)子网掩码
子网掩码决定IP的网段个数和主机个数。子网掩码可以写成255.0.0.0、255.255.0.0和255.255.255.0这是标准的写法。子网掩码的特征是不能与IP地址分开使用,必须同时使用。
5)端口作用
IP相当于门牌号,端口号相当于收件人
TCP协议包头
UDP协议包头
0 15 16 31
源端口(16) |
目的端口(16) |
长度(16) |
校验和(16) |
数据 |
常见端口号
FTP(文件传输协议):端口号20(数据传递) 21(登录传输命令)
SSH(安全shell协议):端口号 22
telnet(远程登录协议):端口号 23(禁止开启,明文传递无需破解)
DNS(域名系统):端口号 53
http(超文本传输协议):端口号 80
SMTP(简单邮件传输协议):端口号 25(发送)
POP3(邮局协议3代):端口号 110(接收)
查看本机启用的端口
netstat -an
选项:
-a:查看所有连接和监听端口
-n:显示IP地址和端口号,而不显示域名和服务名
6)DNS作用
背景:在互联网中,通过IP地址来进行通信,IP地址用数字表示记忆起来困难,对域名比较好记,所以采用DNS(域名系统)的缩写,或名称解析。
Hosts是做静态IP和域名对应,并且hosts文件的优先级是高于DNS解析的。早期Hosts文件是解析域名的,但是效能低,主机维护困难,而DNS服务具有层次性和分布式的特点。
作用:将域名解析为IP地址。首先客户机向DNS服务器发送域名查询请求,DNS服务器告知客户机Web服务器的IP地址,客户机与Web服务器通信。
查询类型:从查询方式上,递归查询要么做出成功响应,要么作出查询失败的响应。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本事不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。迭代查询是服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址;从查询内容上,正向查询由域名查找IP地址,反向查询由IP地址查找域名。
7)网关作用
交换机(数据链路层)不认识IP,只认识mac 地址。局域网中交换数据。
路由器:不同网络中进行数据交换
网关:硬件设备,具有路由功能的机器,可以是路由器,也可以是服务器。
作用:
1.非本网段的数据包交由网关处理
2.网关负责将内网IP转换为公网IP,公网IP转换为内网IP。
二、Linux网络配置
1) Linux配置IP地址
1、 ifconfig命令临时配置IP地址(临时的,重启无效)
# 如果在局域网中有可自动分配IP的服务器(DHCP 服务器), 则可设置自动获取IP. 如果没有DHCP服务器则需要手动设置IP.
# 临时配置, 重启计算机或服务, 即失效.
# 一般用于做实验和测试.
# 主要用于查看网络状态
lo : Local Loopback 本地网卡
# 任何计算机都有
eth : 实际网卡
encap : 网卡类型
HWaddr : MAC地址
Bcast : 广播地址
UP BROADCAST... : 网卡参数
RX : 当前接收数据包数量
TX : 当前发送数据包数量
Base address : 网卡在内存中实际地址
# 有时, 通过配置修改后未必生效, 会有IP冲突, 网卡损坏等原因造成, 必须是在命令中可查看到的, 视为生效。
临时配置IP 和 子网掩码的命令:
# ifconfig eth0 192.168.0.200 netmask 255.255.255.0
2、 setup工具永久配置IP地址(RedHat专用)
# 属于radhat系列专有命令
# 配置成功后需重启服务 : service network restart
2) Linux网络配置文件
1、 网卡信息文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #网卡设备名称,此处的名称与文件名中的后半部分名字要相同
BOOTPROTO=none#是否自动获取IP(none不指定、static静态、dhcp动态)
HWADDR=00:23:54:68:84:DA #MAC地址
NM_CONTROLLED=yes #是否可以由Network Manager图形管理工具托管
ONBOOT=yes #是否随网络服务启动(即开机时自动激活此网络接口),eth0生效
TYPE=Ethernet #类型,类型为以太网
UUID=674a7aa6-8829-431b-84c8-b2daf6cfa7bc #唯一识别码
IPADDR=192.168.0.37 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.0.1 #网关
DNS1=202.168.0.20 #DNS
IPV6INIT=no #IPv6是否启用
USERCTL=no #不允许非root用户控制此网卡
PEERDNS={yes|no} #是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址
#不会立即生效,但重启网络服务或主机都会生效
2、 主机名文件
[root@localhost ~]# vi /etc/sysconfig/network #永久修改,重启生效
NETWORKING=yes #网络服务是否工作,如改no,IP地址不管怎么设置都不管用,是本机启动网络功能的总开关
HOSTNAME=localhost.localdomain
[root@localhost ~]# hostname 主机名 #临时修改,重启失效
3、 DNS配置文件
[root@localhost ~]# vi /etc/resolv.conf
nameserver 202.168.0.20 #名称服务器(DNS)
search localhost #默认域名
#如果没有DNS服务器,又想用主机名访问另一个主机,此时要用到指定本地解析
指定本地解析:
编辑/etc/hosts这个文件,例如:
主机IP 主机名 主机别名
本地DNS解析的时候,当用主机名访问某个主机时,先找本地的/etc/hosts文件,没有再找DNS缓存
DNS--->/etc/hosts--->DNS缓存
4、路由添加方法
在/etc/sysconfig/network-scripts/目录下创建一个route-ethx(后半部分名字与网卡名相同)文件
文件中的书写的格式有两种:
添加格式一:
DEST via NEXTHOP(下一跳)
例如:192.168.10.0/24 via 10.10.10.254
添加格式二:
#添加第一条
ADDRESS0=
NETMASK0=
GATEWAY0=
#添加第二条
ADDRESS1=
NETMASK1=
GATEWAY1=
5、比ifconfig功能更加强大的工具包iprouter2
格式:ip
link:网络接口属性
addr:协议地址
route:路由
例如:
[crm@localhost ~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:65:f0:20 brd ff:ff:ff:ff:ff:ff
[crm@localhost ~]$
#一个网卡可以使用多个地址,网络设备可以用别名设置
如下图,只有一个网卡eth0
设置一个别名:
格式:ifconfig ethx:x IP/NETMASK
[root@localhost ~]# ifconfig eth0:0 10.105.80.56/16,如下图:
#永久配置方法
在/etc/sysconfig/network-scripts/目录下创建一个ifcfg-ethx:x(后半部分名字与网卡名相同)文件
DEVICE=ethx:x
注:别名地址不能使用DHCP动态获取
3) 虚拟机网络参数配置
1、setup 修改IP地址
2、如果看不到eth0,启动网卡 配置文件改为ONBOOT=yes之后service network restart重启网络服务,如果还是看不到可能是Ip冲突
3、修改UUID
①vi /etc/sysconfig/network-scripts/ifcfg-eth0删除MAC地址行
②rm -rf /etc/udev/rules.d/70-persistent-net.rules删除网卡和MAC地址绑定文件
③重启系统
4、设置虚拟机网络连接方式
5、修改桥接网卡
三、Linux网络命令
1) 网络环境查看命令
- Ifconfig:查看和配置网络状态命令
Ifdown:网卡设备名 #禁用该网卡设备
Ifup:网卡设备名 #启动该网卡设备
- netstat 选项
选项:
-t:列出TCP协议端口
-u:列出UDP协议端口
-n:不使用域名与服务名,而使用IP地址和端口号
-l:仅列出在监听状态网络服务(等待访问的端口)
-a:列出所有的网络连接
例如:[root@localhost ~]#netstat -tuln 查看开了哪些端口,从而判断开了哪些服务,其中状态为LISTEN是监听,状态为ESTABLISHED代表连接已经存在,即已经和本机建立连接的主机。
例如:[root@localhost ~]#netstat -an | grep ESTABLISHED | wc -l
统计estabished状态的连接的行数(l是统计行数的)看有谁连接到我们的服务器上
注:远程管理连接后,一定要注意正确关闭远程链接,而不能直接把ssh关了,用logout关闭即可
netstat -rn (-r:列出路由列表,功能和route命令一致,可查看网关)
route -n #查看路由列表(可以看到网关)
route add default gw 192.168.1.1(一般不用)#临时设定网关
- ss
ss -nt | sed -rn '/^ESTAB/s#.*[[:space:]]+([0-9.]+):[0-9]+.*#\1#p' | sort |uniq -c |sort -nr | head -5(当前主机连接数最多的排名前5的IP)
注意:
①在一台服务器里,连内网的网卡是不能设置网关的,只有连接外网的网卡才能设置,而且这个网关是由运营商(网通、电信等)设置好,它会告诉我,我的下一级网关在哪。
②随便设置一个网关是不行的,因为与外网通信时,要把消息转发到网关,网关负责把内网IP转换成公网IP,随便设置则将找不到这个网关,导致呈现网络连接失败状态。
- 域名解析命令
nslookup [主机名或IP]
#进行域名与IP地址解析
[root@localhost ~]# nslookup
>server
#查看本机DNS服务器
2) 网络测试命令
1、 ping命令
ping [选项] ip或域名 #探测指定IP或域名的网络状况
运用ICMP(Internet控制报文协议)协议进行探测
选项:
-c次数:指定ping包的次数
2、 telnet命令
telnet [域名或IP] [端口] #远程管理与端口探测命令(明文传递、未加密)
因为远程管理不安全,所以很多计算机系统已经禁止使用telnet命令来进行远程管理,现在已经被linux中ssh安全带壳协议所取代,但是我们可以使用下面的工具来查看我们要访问的服务器的某个端口是不是开放的
#telnet 192.168.0.252 80
如果连接成功,将会进入连接状态,按ctrl+]退出到telnet,在输入quit返回命令行状态。
3、 traceroute命令
taceroute [选项] IP或域名 #路由跟踪命令
选项:
-n 使用IP,不使用域名,速度更快
预先记录路由路径,等无法访问时可以使用这个命令判断到底是哪一个节点出故障,这个traceroute利用的ICMP协议,和ping是一样的。
4、 wget命令
wget url地址(网址) #下载命令
5、 tcpdump命令(抓包命令)
tcpdump -i eth0 -nnx port 21
选项:
-i 指定网卡接口
-nn 将数据包中的域名与服务转为IP和端口
-X 以十六进制和ASCII码显示数据包内容
port 指定监听的端口
四、远程登录工具
1)SSH协议原理
1、对称加密算法
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密
2、非对称加密算法
非对称加密算法又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥和私有密钥
实现原理:
①首先屌丝和高富帅需要先生成公钥和私钥(分别为公钥A、私钥A和公钥B、私钥B)。
②屌丝要进行加密,对方高富帅需要将其公钥B先给屌丝用于加密。
③进行非对称加密要两把锁(公钥A和公钥B),对应着解密需要私钥A和私钥B。
④加密后的文件,屌丝需要用私钥A打开,而高富帅需要私钥B才能打开。
3、SSH安全外壳协议
# 在非对称加密算法之上演变而来
# 密码足够复杂强壮可降低暴力破解的成功性
# SSH 保护数据传递过程中的安全, 但若在传递之前中病毒则不可避免
# 通用的远程管理协议
3-1) 过程原理, A 需要发送数据包给 B
3-1-1) A 持有 公钥A 和 私钥A
3-1-2) B 持有 公钥B 和 私钥B
3-1-3) A 向 B 寻要公钥B, 再结合自身的公钥A 对数据包进行加密, 并发送给B
3-1-4) B 收到数据包之后, 可根据自身 私钥B 对数据包进行解密
4、SSH命令
- ssh 用户名@ip
#远程管理指定linux服务器(用户名可省略,省略即用当前用户登录)
4-1-1) 经过远程之后,公钥下载在家目录中的.ssh文件夹know_hosts文件中保存着 连接成功的目标信息
# 地址 加密算法 公钥
4-1-2) 若目计算机进行了重装系统, 或地址被另一台机器占用, 此时已下载的公钥无法使用,使用vi 对该行进行删除, 当再次连接时会再次提示是否进行下载公钥。
- scp [-r] 用户名@ip:文件路径 本地路径
#下载文件(网络复制命令, 下载文件无需加-r,下载目录需要加-r)
- scp [-r] 本地文件 用户名@ip:上传路径
#上传文件
# 网络复制命令, 上传文件无需加-r,上传文件夹(目录)就需要加-r。
# 此为linux 与 linux之间进行文件传输的最简单方式。
2)SecureCRT远程管理工具
SecureCRT连接Linux乱码的解决方法:
Session Option-Emulation-Font-选择中文字体-字符集(只有选择了中文字体才有中文字符集选项)
另外:Windows不支持SSH协议,SecureCRT是用于Windows下可支持SSH协议连接Linux的应用软件。
3)Xshell工具和WinSCP文件传输工具
Xshell是一个远程管理服务器的软件,主要是在Windows上操作远程的linux服务器;
winSCP是一个远程传输文件的软件,传输软件的工具。