linux 网络配置

248 阅读12分钟

1. 配置文件

1.1 目录说明

cat /etc/resolv.conf  # 查看 dns 配置
cat /etc/hosts # 主机相关配置
cat /etc/sysconfig/network-scripts/ifcfg-ens33 # 网络配置文件目录 ifcfg-ens33 为网卡配置文件

cat /etc/hostname # 查看 hostname,在配置文件中

cat /etc/nsswitch.conf # 查看域名解析顺序,默认是 files dns myhostname 如图 2-1-1 

1.2 网卡信息

# 网卡文件为主,所有的和网络相关的配置
YPE=Ethernet # 接口类型,常见有 Ethernet、Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp # dhcp->动态获取 ip 地址, satic->静态 ip, none->不指定,就是静态 ip
DEFROUTE=yes # yes->将该接口设置为默认路由, no->不要将该接口设置为默认路由
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33 # 网卡名称, 和设备保持一致, 可以更改
UUID=ed186548-518d-4d07-b1cb-f579e0c972fe # 网卡设备唯一标识
DEVICE=ens33 # 设备名称, 和网卡保持一致(内核自动识别)
ONBOOT=yes # 开机启动网卡,必须为 yes, 此网卡才可以使用
# DNS -> 144.144.144.144  8.8.8.8
# GATEWAY -> 自己的网关、默认网关
# IPADDR -> ip 地址
# PREFIX=24

⚠️ 在网卡配置文件中永久性修改系统 ip 地址(IPADDR)和网关(GETWAY)

参数描述
DEVICE应用到的设备
HWADDR对应的设备的 MAC 地址
BOOTPROTO激活此设备时使用的地址配置协议,常用的 dhcp、static、none
NM_CoNTROLLEDNM 是 NetworkManager 的简写,此网卡是否接受 NM 控制建议 CentOS6 为 'no'
ONBOOT在系统引导时是否激活此设备
UUID设备的惟一标识
TYPE接口类型;常见有的 Ethernet、Bridge
IPADDR指明 IP 地址
NETMASK子网掩码
GATEWAY默认网关
DNS1第一个 DNS 服务器指向
DNS2第二个 DNS 服务器指向
USERCTL普通用户是否可控制此设备

⚠️ 在网卡配置文件中,配置相关的参数,会被优先使用。如在网卡中配置 DNS 则在 DNS 配置文件中的配置无效(/etc/resolv.conf )

在配置网络时也可以使用图形化配置,在系统设置中通过图形化界面配置网络参数。如下图 1-2-1 所示:

2. 网络相关命令

2.1 设置主机

# host 设置相关命令
hostname # 查看主机
hostname host # 设置临时主机名
hostnamectl set-hostname yuque142.cn # 修改主机名(永久)

2.2 网络服务

systemctl status NetworkManager # 查看网络状态
systemctl restart NetworkManager # 重启网络
systemctl stop NetworkManager # 停止网络

# 配置好 DNS、GATEWAY、IPADDR 
service network restart # 重启网路服务 centOS6.x 版本
systemctl restart NetworkManager # centOS7 重启网路服务

# centOS8, centOS7 执行入一下命令
nmcli connection reload 
nmcli connection down ens33 && nmcli connection up ens33 # 修改网络配置文件后执行此命令

# 关闭和开启网卡
ifconfig -a # 查看网络信息  与 ipconfig /all 类似
ifconfig ens37 down # 关闭网卡
ifconfig ens37 up # 启用网卡

2.3 设置临时 IP

# 切换至 root, 修改 ip 地址
ifconfig ens33 192.168.132.10 netmask 255.255.255.0

# 临时 添加新的 ip 地址
# 添加多个 num 为 0, 1, 2, 对应不同的网卡块
ifconfig ens33:num 192.168.132.11 netmask 255.255.255.0 

# 删除临时 ip
ip addr delete 192.168.132.11 dev ens33:0 # dev -> device

# 查看 IP 地址
ip addr show 

⚠️ 一个网卡可以配置多个 ip,不在一个网段也可以, 在做测试、实验的时候经常使用到

2.4 ping

ping 192.168.31.129 # ping ip 地址
    -c # 数目,在发送指定数目的包后停止
    -i # 秒数,设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次,即默认是 1s
    -I # 指定从哪个端口出去,使用参数大写的 I
ping -i 0.01 192.168.31.129 # 0.01s 刷新一次
		 -I ens33 192.168.31.129 # 指定 ping ens33 网卡数据
		 -c 5 192.168.31.129 # 5 次之后停止

2.5 route

route -n # 查看网络路由
route add -net 192.168.2.0 netmask 255.255.255.0 dev ens37 # 添加路由条目
route del -net 192.168.2.0 netmask 255.255.255.0 # 删除路由条目

参数描述
Destination目标网络或目标主机
Gateway网关,网关地址,如果是本地网段IP,就显示 0.0.0.0
Genmask子网掩码

2.6 arping

# 查看 IP 地址是否有冲 
arping -I ens33 192.168.2.1 # 查看网关 192.168.2.1 是否有冲突

⚠️ 如果一个IP,得到两个 MAC,那么就有冒充网关了

2.7 watch

实时监测命今的运行结果,可以看到所有变化数据包的大小,如执行watch -d -n 1 'ifconfig ens33',按 ctrl + c 退出监控。

watch -d -n 1 'ifconfig ens33' # 每隔 1s 高亮差异显示 ens33 相关信息 
	-d # --differences,高亮显示指令输出信息不同之处
	-n # --interval seconds,指定指今执行的间隔时间(秒)

3. 网卡说明

3.1 命名规则

centOS6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在centOS6之前,网络接口使用连续号码命名:etho、ethl 等,当增加或删除网卡时,名称可能会发生变化。centOS7采用dmidecode采集命名方案,以此来得到主板信息,它可以实现网卡名字永久唯一(dmidecode 这个命令可以采集有关硬件方面的信息)。

3.2 设备命名

  1. 如果Firmware(固件)或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,例如:ifcfg-ens33
  2. 如果Firmware(固件)或BIOSPCI-E扩展槽所提供的索引信息可用,则根据此索引进行命名,例命名,例如: ifcfg-enp33
  3. 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如 enp2s0 上述均不可用时,则使用传统命名机制。
  4. centOS7中, en 表示 ethernet 以太网,我们常说的局域网。enX(X常见有下面3种类型)
常见类型说明
s热插拔网卡,usb 之类,扩展槽的索引号
o主板板载网卡,集成设备的设备索引号
p独立网卡,PCI 网卡
nnn(数字)MAC 地址 + 主板信息计算得出唯一的序列在 CentOS8 当中网卡名称延续了 ens 的格式。

3.3 网卡信息说明

在终端中输入 ifconfig 输出结果如图 3-3-1 所示:

****ens33 块参数解释说明:

行号参数说明
1up网卡开启状态
RUNNING网线处理连接状态
MULTICAST支持组播
mtu 1500(Maximum Transmission Unit)最大传输单元大小为1500字节
2inet该网卡的 ip 地址
netmask子网掩码
broadcast广播地址
3inet6IPV6 的配置信息
4ether连接类型为以太网
txqueuelen 1000传输队列的长度
5、6网卡接收数据包的统计信息和接收错误的统计信息
7、8网卡发送数据包的统计信息和发送错误的统计信息

4. ip 地址分类

IP 地址分 5类:ABCDE,常见的地址是 A、B、C 三类。

A 类: 范围从 0 - 127,0 是保留的并且表示所有 IP 地址,而 127 也是保留的地址,并且是用于测试环回口用的。因此 A类地址的可用的范围其实是从 1-126 之间。以子网掩码:255.0.0.0

B 类: 范围从 128-191,如 172.168.11,以子网码来进行区别:255.255.0.0

C 类: 范围从 192-223,以子网掩码来进行区别:255.255.255.0

D 类: 范围从 224-239,被用在多点广播(Multicast)中,多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

E 类: 范围从 240-254,为将来使用保留。

5. 网络协议

5.1. 网络模型(ISO)

5.1.1 描述

名称作用常用协议
应用层(七层)(Application Layer)为应用程序或用户请求挺高各种请求服务HTTP/FTP/SMTP/POP3/TELNET/NNTP/IMAP4/FINGER
表示层(六层)(Presentation Layer)文件传输、电子邮件、文件服务器、虚拟终端LPP/NBSSP
会话层(五层)(Session Layer)创建、管理和维护会话建立或解除与其他节点的联系SSL/TLS/LDAP/DAP
传输层(四层)(Transport Layer)提供端对端对接,数据通信TCP/UDP
网络层(三层)(Network Layer)为数据包选择路由,IP 地址及路由选择IP/ICMP/RIP/IGMP/OSPF
数据链路层(二层)(data Link Layer)提供介质访问和链路管理,传输有地址的帧,错误检测功能以太网/网卡/交换机/PPTP/L2TP/ARP/ATMP
物理层(一层)(Physical Layer)管理通信设备和网络媒体之间的互联互通以二进制数据形式在物理媒体上传输数据物理线路/光纤/中继器/集线器/双绞线

5.1.2 图解网络层

5.1.3 优点

1、把复杂的网络划分成为更客易管理的层(将整个庞大而复杂的问题划分为若干个客易处理的小问题

2、没有一个厂家能完整的提供整赛解决方案和所有的设备,协议

3、独立完成各自该做的任务,互不影响,分工明确,上层不关心下层具体细节,分层同样有益于网络排错

为什么现代网络通信过程中用 TCP/IP 四层模型,而不是用 OSI 七层模型呢? OSI 七层横型是理论横型,一般用于理论研究,他的分层有些冗余,实际应用选择 TCP/IP 四层模型,而且 OSI 自身也有缺陷。大多数人都认为 OSI 模型的层次数量与内容可能是最佳的选择,其实并非如此,其中会话层和表示层几乎是空的,而数据链路层和网络层包含内容太多,有很多的子层插入,每个子层都有不同的功能。

5.2 常见网络相关的协议

协议描述
ARP(Address Resolution Protocol)地址解折协议,将IP 解析成MAC地址
DNS域名解析协议 www.baidu.com.
SNMP(Simple Network Management Protocol)简单网络管理协议
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议它是在 TCP/IP 网络上使客户机获得配置信息的协议
FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法
HTTP(Hypertext Transfer Protocol)超文本传输协议
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,它是由 Netscape 开发并内置于其浏览器中,用于对数据进行压缩和解压操作
ICMP(Internet Control Message Protocol)Internet 控制信息协议互联网控制报文协议 ping ip 定义消息类型有TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达
SMTP(simple Mail Transfer Protocol)简单邮件传送协议
TELNET Protocol虚拟终端协议
TFTP(Trivial File Transfer Protocol)小文件传输协议
UDP(User Datagram Protocol)用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议
TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 log 转发:开启一个协议:tcp(三次握手和四次挥手)

5.2.1 UDP 与 TCP 协议的区别

TCP(Transmission Control Protocol,传输控制协议)是面连接的协议,在收发数据前,必须和对方建立可靠的连接。

UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

区别,(1)TCP 基于连接更可靠、UDP 无连接;(2)对系统资源的要求(TCP 较多,UDP 少);(3)UDP 程序结构较简单,UDP 信息包的标题很短,只有8 个字节,相对于 TCP 的 20个字节信息包的额外开销很小。所以 UDP 传输速度可更快。(4)TCP 保证数据正确性,UDP 可能丢包;TCP 保证数据顺序;UDP 不保证, 可以在应用层使用软件校对数据。

使用场景,视频、语音通讯使用 UDP, 或者网络环境更好,如局域网中通讯可以使用 UDP。TCP 传输文件,数据完整性要求高采用 TCP。

6. 端口

端口查询,相关端口服务在配置文件 /etc/services 中, 使用 vim 打开文件,搜索相关端口号。

此文件可以查看常用端口对应的名字。iptables 或 netstat 要把端口解析成协议名时,都需要使用到这个文件,另外后期 xinetd 服务管理一些小服务时,也会使用到此文件来查询对应的小服务端口号。另外有的服务是 UDP 和 TCP 端口都会监听的。

6.1 查看端口号

netstat 命令,查看系统中网络连接状态信息,常用的参数格式, netstat -anutp

netstat -antup | grep 22 # 查看端口号对应的服务
      	-a # --all 显示本机所有连接和监听的端口
      	-n # --numeric don't resolve names 以网络 IP 地址形式显示当前建立的有效连接和端口
      	-u # 显示 udp 协议连接
      	-t # 显示 tdp 协议连接
      	-p # --pregrams 显示连接对应的 PID 与程序名

参数描述说明
Proto连接协议的种类
Recv-Q接收到字节数
Send-Q从本服务器,发出去的字节数
Local Address本地的 IP 地址,IP 或 主机名
Foreign Address远程主机的IP 地址
state网络连接状态LISTEN: 侦听状态,等待远程机器的连接请求。ESTABLISHED: 完成 TCP 三次握手后,主动连接端进入 ESTABLISHED 状态。此时,TCP 连接已经建立,可以进行通信。TIME_WAIT: 在 TCP 四次挥手时,主动关闭端发送了 ACK 包之后,进入 TIME_WAIT 状态,等待最多 MSL 时间,让被动关闭端收到 ACK 包。扩展: MSL,即 Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间在 RFC793 中定义 MSL 通常为 2 分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一个 TCP 连接,在双方进入 TIME_WAIT 后,通常会等待 2 倍 MSL 时间后,再关闭掉接,作用是为了防止由于 FIN 报文丢包,对端重发导致与后续的 TCP 连接请求产生顺序混乱。

在 linux 中默认的 MSL 等待时间是 60s, 通过缩短时间 time_wait 时间来快速释放链接。

cat /proc/sys/net/ipv4/tcp_fin_timeout # 默认 60s

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout # 修改 time_wait 默认参数为 30s 

7. 网络不能连接

如果在配置好网络后无法连接,只能在本机才能 ping 通, 请检查相关配置连接方式、虚拟机虚拟网络配置,详情请参照虚拟机安装时网络设置相关流程和操作,编辑虚拟网络