网络管理
7. 网络管理
7.1 网络基础知识
7.1.1 TCP/IP协议
-
TCP/IP协议(Transmission Control Protocol/Internet Protocol):称为网络通讯协议,是Internet最基本的协议。
-
TCP协议(Transmission Control Protocol):称为传输控制协议,是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
-
IP协议(Internet Protocol):称为因特网互联协议,它负责把数据从源地址传送到目的地地址。
-
TCP/IP参考模型:是一种网络体系结构,它包含网络访问层、互联网层、传输层和应用层。
7.1.2 客户机、服务器、套接字
-
客户机称为用户工作站,是用户与网络打交道的设备,一般由用户PC担任。
- 每一个客户机都运行在它自己的、并为服务器所认可的操作系统环境中。
- 客户机主要通过服务器享受网络上提供的各种资源。
-
服务器是提供计算服务的设备。
- 由于服务器需要响应服务请求,并进行处理
- 因此一般来说服务器应具备承担服务并且保障服务的能力。
-
套接字是源IP地址、目的IP地址、源端口号、目的端口号的组合,它用于标识客户端请求的服务器和服务。
-
局域网和广域网
7.1.3 IP地址
IP地址(IP Address)是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
- IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
- IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
- 例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
IP地址分为A、B、C、D、E五类地址
- A类地址
- A类地址第1字节为网络地址,其它3个字节为主机地址。它的第1个字节的第一位固定为0.
- A类地址网络号范围:1.0.0.0---126.0.0.0
- B类地址
- B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。它的第1个字节的前两位固定为10.
- B类地址网络号范围:128.0.0.0---191.255.0.0。
- C类地址
- C类地址第1字节、第2字节和第3个字节为网络地址,第4个字节为主机地址。另外第1个字节的前三位固定为110。
- C类地址网络号范围:192.0.0.0---223.255.255.0。
- D类地址
- D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
- D类地址范围:224.0.0.0---239.255.255.255
- E类地址
- E类地址不分网络地址和主机地址,它的第1个字节的前五位固定为11110。
- E类地址范围:240.0.0.0---255.255.255.254
- 私有IP地址
- A类:10.0.0.0---10.255.255.255
- B类:172.16.0.0---172.31.255.255
- C类:192.168.0.0---192.168.255.255
- 127.X.X.X是保留地址,用做循环测试用的; 191.255.255.255是广播地址,不能分配。
7.1.4 默认网关
默认网关是一个用于 TCP/IP 协议的配置项,是一个可直接到达的IP路由器的IP 地址。配置默认网关可以在 IP 路由表中创建一个默认路径,一台主机可以有多个网关。
默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。
例子:
- 假设你的名字叫小不点(很小,这里你就是一个url地址,指向某个网页资源),你住在一个大院子里,你的邻居有很多小伙伴,父母是你的
网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 - 但是你家长不允许你走出大门,你想与外界发生的一切联系,都必须由父母(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家里也有父母(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的
DNS服务器。 - 于是你在家里和父母有了下面的对话:
- 小不点:妈妈(或爸爸),我想找班主任查一下小明的电话号码行吗?家长:好,你等着。(接着你家长给你的班主任拨了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99
- 小不点:太好了!妈(或爸),我想找小明,你再帮我联系一下小明吧。
- 家长:没问题。(接着家长向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家家长那里,然后他家长把电话给转到小明).
- 就这样你和小明取得了联系。
如果搞清了什么是网关,默认网关也就好理解了。
- 就好像一个房间可以有多扇门一样,一台主机可以有多个网关。
- 默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。
- 默认网关一般填写192.168.x.1
7.1.5 DNS服务器
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
域名:是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
7.1.6 端口
-
它是一个16位的整数,用于表示数据交给那个通信程序处理。因此,端口是应用程序与外界交流的出入口。
-
端口号从0-65535,分为三类:
- 公认端口:从0-1023,它们是紧密绑定一些特定服务
- 注册端口:从1024-49151,它们松散地绑定一些服务。应用程序应该使用这个范围内的端口
- 动态/或私有端口:从49152-65535,应用程序动态使用的端口
-
常用的保留TCP端口号有:
HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等。
7.2 网络诊断命令
7.2.1 ifconfig命令
ifconfig命令可以:显示或设置计算机网卡的IP地址,当网络环境发生改变时可通过此命令对网络进行相应的配置。
#命令语法:
ifconfig [网络设备] [参数]
常用选项:
- -a:显示全部接口信息
- up 启动指定网络设备/网卡。
- down 关闭指定网络设备/网卡。
-
例1:查看所有的网卡网络接口配置
ifconfig
- enp0s3 表示网卡名;
- inet用来表示网卡的IP地址,此网卡的 IP地址是 192.168.1.105,
- 广播地址,broadcast:192.168.1.255,掩码地址netmask:255.255.255.0
- MAC地址(ether):08:00:27:3e:35:d5
-
例2:查看网卡enp0s3网络接口的配置

-
例3:激活或禁用网卡enp0s3
#激活网卡enp0s3,打开浏览器可以上网 [root@localhost ~] ifconfig enp0s3 up #禁用网卡enp0s3,打开浏览器无法上网 [root@localhost ~] ifconfig enp0s3 down
7.2.2 route命令
route命令用于:显示和操作IP路由表。
要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。
要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
语法:
route [-CFvnee]
route [add|del] [-net|-host] [网络或主机] netmask [gw|dev]
route [-V] [--version] [-h] [--help]
描述:
- 此命令维护IP路由表,在设备通过ifconfig命令配置之后,主要用于建立静态路由到指定的主机或者网络。
- 当add或者del选项指定,route命令是修改路由表。
- 如果没有这些选项,route命令则显示路由表中的内容。
参数:
-
-n:不使用通信协议或者主机名称,直接使用IP或者端口号;
-
-e:使用netstat格式显示路由表, -ee会产生一个非常长的带所有路由表参数的行(更详细的信息显示)。
-
del:删除一个路由;
-
add:增加一个路由;
增加与删除路由的相关参数:
-
-net:表示后面接的路由为一个网络;
-
-host:表示后面接的为连接到单个主机的路由;
-
netmask NM 当增加一个网络路由,就开始使用网络掩码。
-
gw:gateway的简写,后面接的是IP值,与dev不同;
-
dev:通过网关的路由包,注意:指定的网关必须首先是可到达的,这通常意味着需要首先建立网关的静态路由。如果只是要指定由哪块网卡连线出去,则使用 这个设定,后面接eth0等。
-
常用命令如下:
-
例1:显示当前用户路由表,root用户
route

-
例2:服务器配置, route命令写在/etc/rc.local中,这样就设置了一条永久路由
[root@localhost ~]# grep route /etc/rc.local route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.10.1参数:
- -net:表示后面接的路由为一个网域
- netmask:与网域有关,可以设定netmask 决定网域的大小
- gw:gateway 的简写,接IP 的数值
-
例3:删除路由
[root@localhost ~]# route del -net 192.168.20.0 netmask 255.255.255.0
7.2.3 netstat命令
netstat 命令用于:显示各种网络相关信息,如网络连接,路由表,接口状态等等。
#命令语法:
netstat [参数]
常用参数:
- -i:显示网络界面信息表单
- -r:显示路由表
- -a:显示所有连线中的套接口(socket)
实例:
-
例1:显示所有端口
netstat -a
说明:
显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。
-
例2:显示网络接口状态信息
netstat -i
-
例3:显示内核路由表信息
netstat -r
7.2.4 ping命令
ping命令是常用的网络命令,它通常用来测试与目标主机的连通性。
#命令语法:
ping [参数] [主机名或IP地址]
例:测试与192.168.1.1的连通性
注:
- linux下的ping和windows下的ping稍有区别,
- linux下ping不会自动终止,需要按ctrl+c终止
7.2.5 traceroute命令
traceroute命令可以显示本地计算机到互联网另一端主机的传输路径信息。
#命令语法:
traceroute [参数] [主机]
常用参数:
- -m:设置检测数据包的最大存活数值TTL的大小。
- -n:直接使用IP地址而非主机名称。
例:跟踪从本地计算机到www.baidu.com网站的路径

说明:
- 119.75.218.70表示远程主机的IP地址
- 30 hops max表示允许经过的路由器上限为30
- 60 byte packets表示传送测试数据包的大小为60
- 每一行表示每一个经过的路由器记录(从1开始)
7.3 路由转发和多网卡配置
7.3.1 路由表
概念
- 交换是指:同网络访问(两台机器连在同一交换机上,配置同网段的不同IP就可以直接通讯)
- 路由就是:跨网络访问(路径选择)
- 路由表是:记录路由信息的表,在Linux中首先是一张可见的,可更改的表,它的作用就是当数据包发到Linux的时候,系统(或者说内核)就根据这张表中定义好的信息来决定这个数据包接下来该怎么走
操作
-
查看路由表信息
route -n #作用:用来查看和设置路由表信息
示例1:按照上面的路由表来看,如果我ping一个公网IP:14.200.149.30,应该怎么走?
- 先看目标ip是否为本地ip,如果是就直接访问本地IP;若果不存在。则去找路由表里是否有需要访问的网段
- 如果路由表有这个ip则从这个路由的表中的对应的网卡出去;如果路由表中没有要访问的网段,则会找默认路由,也就是网关;
- 如果网关也没有的话,则就会报错
示例2:按照上面的路由表来看,如果ping一个局域网ip:192.168.122.10,又会怎么走?
ping 192.168.122.10不会走网关,而是走本地路由从 eth0网卡出去,因为路由表有192.168.122.0的路由
-
临时删除网关
route del default gw [ip]
-
临时增加网关
注意:如果要添加一个网关那么,就要添加一个能够到达该网关的目标网络地址(要和网关在同一个网段)
route add default gw [ip] #使用命令:添加一条到达指定网关的路 route add -net [ip] dev [网卡名]没有一条到达该网关的路报错

-
删除目标网络
route del -net [ip] dev [网卡名]
-
永久增加网关
修改配置文件路径:/etc/sysconfig/network-scripts/ifcfg-[网卡名]

注意事项:
- 加网关只能加你已经有的路由网段里的一个IP才行(此IP不一定存在)
- 加网关可以不用指定子网掩码(因为是已有的一个网段的ip,所以掩码已经确认了)
-
多网卡配置(仅主机+NET模式)
添加一张NET模式下网卡

添加一张网卡后
创建一个配置文件,添加的新网卡名叫ens36
创建一个配置文件
修改ifcfg-ens36配置文件
保存退出,重启网卡systemctl restart network
双网卡注意事项
-
准确来说:一个路由表上可以加多个网关,但只有一个生效。
-
我一台linux上如果有双物理网卡,请问可不可以两个网卡配置同网段的不同IP呢?
eth0 10.1.1.1/24、eth1 10.1.1.2/24
如果两个网卡同网段,则会有下面两条路由
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eht1
结果:
它会实现从两张网卡进来的包,却从一张网卡出去,问题就产生了。假设eth0网卡有问题时,路由表里匹配到第一条后,依然会走eth0网卡,而不会走eth1。
也有解决方法(比如多路由表或者双网卡绑定),这里不涉及。
-
7.3.2 路由选择
环境准备:三台虚拟机的网络模式都为仅主机模式
- 主机1 ip:10.1.1.1/24 主机1作为网关服务器,开启路由转发功能
- 主机2 ip:192.168.0.254/24
- 主机3 ip:172.16.0.254/24
要求:实现不同网络(172.16.0.0/24和192.168.0.0/24)直间的互通,使用第三方主机1作为路由进行转发
步骤:
-
开启路由转发功能
主机1中间人完成一下任务
临时开启路由转发功能
命令:echo 1 > /proc/sys/net/ipv4/ip_forward
永久开启修改配置文件
vim /etc/sysctl.conf
添加 net.ipv4.ip_forward = 1
-
分别添加node2和node3两台主机所在的网络
在主机1中
添加到达主机2的路,命令:route add -net 192.168.0.0/24 dev ens33
添加到达主机3的路,命令:route add -net 172.16.0.0/24 ens33

-
分别配置主机2和主机3的ip和网关
把主机2和主机3的网关配置成主机1的ip
注意:在配置网关前,一定要先添加一条能到网关的路,也就是添加一个和网关在同一网段的目标网络IP
在主机2和主机3里都执行添加目标网络和默认网关的命令命令
注意:ens33是网卡名
route add -net 10.1.1.0/24 dev ens33
添加好到网关的路之后,再添加默认网关(也就是主机1的Ip,通过主机1来实现路由转发)
命令:route add default gw 10.1.1.1

-
测试
在主机1里分别ping主机2和主机3
接着测试主机3和主机2之间互相ping,看看是否联通
最后实现借助中间主机1路由转发,实现主机2和主机3之间通信
7.4 关键文件
7.3.1 /etc/hosts文件
当计算机启动时,在可以查询DNS以前,计算机需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。
在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。下面是/etc/hosts文件内容的示例:
- 最左边一列是计算机IP地址,
- 中间一列是主机名,
- 最右边的列都是该主机的别名。
- 一旦配置完计算机的网络配置文件,应该重新启动网络以使修改生效。

7.3.2 /etc/resolv.conf文件
文件/etc/resolv.conf是由域名解析器使用的配置文件,下面是/etc/resolv.conf文件内容的示例:
- nameserver:表示解析域名时使用该地址指定的主机为域名服务器,其中域名服务器是按照文件中出现的顺序来查询的。

7.5 远程登录ssh
ssh命令用于远程登录上Linux主机。
#常用格式:
ssh [-l login_name] [-p port] [user@]hostname
#不指定用户:
ssh 192.168.0.11
#指定用户:
ssh -l root 192.168.0.11
例如:指定用户名king,ssh远程登录192.168.1.105
ssh -l king 192.168.1.105

7.6 防火墙
7.6.1 防火墙
防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的[软件]和[硬件]设备,帮助[计算机网络]于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙技术的功能主要在于:
- 及时发现并处理计算机网络运行时可能存在的安全风险、[数据传输]等问题,
- 其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
7.5.2 iptables
iptables是集成在系统内核中的防火墙,因此效率会提高。
iptables是利用封包过滤的机制,它通过分析封包的表头数据,并根据表头数据与定义的“规则”来决定该封包是否可以进入主机或者是被丢弃。 封包过滤的规则动作及分析流程如下图:
- 当一个网络封包要进入到主机之前,会先经由Netfilter(数据包过滤机制)进行检查,这就是iptables的规则了。
- 如果数据包检查通过,则接受 (ACCEPT) 进入本机取得资源;如果检查不通过,则可能丢弃 (DROP)。
- 其中,当网络封包进入Rule 1进行比对时,如果比对结果符合Rule 1,此时这个网络封包就会进行 Action 1的动作,而不会进行后续的Rule 2,Rule 3…等规则的分析了。
防火墙软件里面有多个表格 (table) ,每个表格都定义出自己的默认政策与规则,且每个表格的用途都不相同。iptables至少就有三个表格:
- 包括管理本机进出的filter、
- 管理后端主机 (防火墙内部的其他计算机)的nat、
- 管理特殊标记使用的mangle。
例:查看本机关于IPTABLES的设置情况
iptables -L -n
#其中:
# -L:列出相关链及其规则的列表
# -n:数字格式显示IP
总结
浙公网安备 33010602011771号