网络概述
TCP/IP网络模型
TCP/IP模型是互联网使用的通信协议集合,它是一个由不同层级组成的网络模型,用于实现数据在网络中的传输。这个模型分为四个层级,分别是:
应用层(Application Layer):
这个层级包含了用户直接与之交互的应用程序,如HTTP、FTP、SMTP等。它提供了用户接口和网络服务之间的通信。
传输层(Transport Layer):
这一层级负责端到端的数据传输,提供了可靠的数据传输服务。最常见的传输协议是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。
网络层(Internet Layer):
这个层级处理数据包的路由和转发,其中最核心的协议是IP(Internet Protocol)。它负责确定数据传输的路径,确保数据能够从源到目的地。
链路层(Link Layer):
这一层级定义了通过单个链路(比如以太网)传输数据的细节和规则。它处理与物理介质的直接通信,确保数据在链路上传输的可靠性。
描述网络接口名称
旧版红帽linux系统以ethX来标识网络接口,此方法存在网卡名变化的问题。新版红帽linux系统采用全新的名名体系:
以太网接口以en开头
WLAN接口以wl开头
WWAN接口以ww开头
oN表示这是一个板载设备,N为设备的索引编号
sN表示该设备位于PCI热插拔插槽N中
pMsN表示该设备位于N插槽中总线为M的PCI设备
以此体系来持久命名系统中的网络接口。
IPV4,IPV4路由
IPv4是Internet Protocol version 4(互联网协议第四版)的简称。它是网络层协议,用于在网络中唯一标识和定位设备,以便数据包的传输和路由。以下是IPv4的一些关键特征和相关概念:
- 32位地址空间:
IPv4地址由32位二进制数字组成,通常用点分十进制表示(例如,192.168.1.1)。这些地址分为网络部分和主机部分。 - 子网掩码:
子网掩码用于划分IPv4地址的网络部分和主机部分。它指示哪些位是网络位,哪些是主机位。例如,255.255.255.0表示网络部分有24位,剩余8位用于主机。 - 公共IP地址和私有IP地址:
公共IP地址用于在互联网上唯一标识设备,而私有IP地址用于内部网络中。私有IP地址范围是指定的一组地址,不直接暴露在互联网中,而是通过网络地址转换(NAT)等技术与互联网通信。诸如192.168… - IP地址分配和路由:
IP地址由Internet Assigned Numbers Authority(IANA)分配给区域互联网注册管理机构(RIRs),然后由RIRs分配给互联网服务提供商和其他组织。路由器通过路由协议(如BGP、OSPF等)交换路由信息,决定最佳路径将数据包从源传送到目的地。
验证网络配置
识别网络接口
ip link
显示ip地址
link/ether行指定设备的硬件(MAC)地址
第一行尖括号中的UP:活动的接口显示为UP
inet行显示IPV4地址,其网络前缀和作用域
第一行inet6行显示IPV4地址,其网络前缀和全局作用域
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:04:2c:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.100.11/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::b017:1c6d:b1b:1823/64 scope link noprefixroute
valid_lft forever preferred_lft forever
显示性能统计信息
ip -s link RX:接收 TX:发送
[root@localhost ~]# ip -s link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:04:2c:ff brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
129396 1587 0 0 0 0
TX: bytes packets errors dropped carrier collsns
143038 1156 0 0 0 0
检查主机间的连接
ping ping6
路由故障排除
显示ipv4路由表:ip route 显示IPV6路由表:ip -6 route
[root@localhost ~]# ip route
default via 192.168.100.1 dev ens33 proto static metric 100
192.168.100.0/24 dev ens33 proto kernel scope link src 192.168.100.11 metric 100
解释:目标为192.168.100.0/24网络的数据包将通过设备ens33直接发送到目标设备。
其他数据包将通过ens33发送到位于192.168.100.1的默认路由器。
追踪流量采用的路由
追踪网络流量通过多个路由器到达远程主机而采用的路径:traceroute或者tracepath。这可以用来识别中间路由器是否存在问题。默认情况下,两个命令都使用UDP数据包来追踪路径:但是,不少网络阻止UDP和ICMP流量。为此traceroute命令提供 -I(ICMP) ,-T(TCP)选项。
[root@localhost ~]# traceroute -I www.baidu.com
traceroute to www.baidu.com (183.2.172.185), 30 hops max, 60 byte packets
1 gateway (192.168.100.1) 0.590 ms * *
2 * * *
3 192.168.252.254 (192.168.252.254) 67.191 ms 67.155 ms 67.114 ms
.............
端口和服务故障排除
TCP服务由ip地址,协议和端口号所组成。服务通常侦听标准端口,而客户端则随机使用可用的端口。/etc/services文件列出了标准端口的常用名称。
ss命令:可用与现实套接字统计信息。
[root@localhost ~]# ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
ESTAB 0 164 192.168.100.11:ssh 192.168.100.1:58569
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
解释??????
从命令行配置网络
NetworkManager
NetworkManager是系统用于监控和管理网络的守护进程。该进程与命令行网络管理相关命令或者GNOME管理网络的小程序进行通信。
设备是网络接口(网卡)
连接是可以被设备所应用的设置的集合
每个连接具有一个独属于自己的名称或ID
一个设备在一个时间只允许有一个连接处于活动状态
nmcli命令用于 创建和编辑 连接文件
查看联网信息
nmcli dev status 显示所有网络设备(网卡)的状态
[root@localhost ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
lo loopback 未托管 --
nmcli con show 显示所有连接的列表。- -active选项仅列出活动的连接
[root@localhost ~]# nmcli con show --active
NAME UUID TYPE DEVICE
ens33 438a6919-5126-4c8d-b934-b8d8bb404424 ethernet ens33
[root@localhost ~]# nmcli con
NAME UUID TYPE DEVICE
ens33 438a6919-5126-4c8d-b934-b8d8bb404424 ethernet ens33
添加网络连接
nmcli con add 用于添加新的连接
nmcli con add 是 NetworkManager 命令行工具中用于添加新连接配置的命令。
这个命令的基本语法是:
nmcli con add con-name <name> type <connection_type> ifname <interface_name>
其中:
是要创建的连接名
<connection_type> 是要创建的连接类型,比如 ethernet、wifi、vpn 等。
<interface_name> 是连接的接口名称,比如 eth0、wlan0 等。
示例:
创建一个名为eno2的类型为以太网的接口为ens33的连接。此连接将默认使用DHCP获取IPv4联网信息并在系统启动后自动连接。配置文件名称将基于con-name的值eno2,存放为/etc/sysconfig/network-scripts/ifcfg-eno2
nmcli con add con-name eno2 type ethernet ifname ens33
创建静态IPv4地址连接并设置网关(ipv6相同
nmcli con add con-name eno2 type ethernet ifname ens33 ipv4.address 192.168.100.11/24 ipv4.gateway 192.168.100.1
控制网络连接
启用连接:
nmcli con up 命令启动一个绑定在某个网络接口设备(网卡)的名为的连接。注意,是连接的名称,而非接口设备(网卡)的名称。nmcli con show 可以查询所有的连接。
[root@localhost ~]# nmcli con up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
断开连接:
nmcli dev disconnect <device-name>命令将断开与网络接口device-name的连接并将其关闭。命令可缩写为nmcli dev dis <devcive-name>
[root@localhost ~]# nmcli dev dis ens33
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.
为什么像启用连接一样nmcli con down name停用连接?
注意:nmcli con down <name>会停用连接,但是此时接口(网卡)仍然是可用状态,在绝大部分的有线连接系统中,均设置了autoconnect,在网络接口可用的情况下,会立即重新激活连接。
修改网络连接设置
NetwokManager网络有两种属性值,一种为静态属性,一种为活动属性。nmcli con show name命令列出某个连接的当前设置,小写的为静态属性,大写的为活动属性,活动属性来自DHCP服务器,不会持久存储。
[root@localhost ~]# nmcli con show ens33
.........................................
ipv6.dhcp-hostname: --
ipv6.token: --
proxy.method: none
proxy.browser-only: 否
proxy.pac-url: --
proxy.pac-script: --
GENERAL.NAME: ens33
GENERAL.UUID: 438a6919-5126-4c8d-b934-b8d8bb404424
GENERAL.DEVICES: ens33
GENERAL.STATE: 已激活
GENERAL.DEFAULT: 是
.........................................
nmcli con mod name 命令用于更改连接的设置。这些更改将保存在/etc/sysconfig/netwok-script/ifcfg-name中。更改ens33的的ipv4地址和网关,并设置为仅通过静态配置文件获取ipv4信息(manual)
[root@localhost ~]# nmcli con mod ens33 ipv4.address 192.168.100.10/24
ipv4.gateway 192.168.100.1 ipv4.method manual
删除网络连接:nmcli con del name,将删除名为name的连接,同时断开它与设备的连接并删除文件/etc/sysconfig/netwok-script/ifcfg-name。
[root@localhost ~]# nmcli con del eno1
成功删除连接 "eno1" (d8cf6ac4-6fcb-490f-ba02-0cfbb6483cbc)。
编辑网络配置文件
nmcli con mod name命令对连接的更改将会记录在上文所说的ifcfg-name文件中,处于兼容性的考虑,命令的参数设置与此文件存在映射关系。
了解有这样的规则,详情查阅并对比man
nmcli con mod | ifcfg-* | 影响 |
---|---|---|
ipv4.method manual/auto | BOOTPROTO=none/dhcp | ipv4以静态方式配置 |
… | … | … |
配置主机名和名称解析 DNS
更改系统主机名
hostnamectl set-name <name>
配置名称解析
根解析器用于将主机名称转换为IP地址,解析器根据/etc/nsswitch.conf文件确定查找位置。默认情况先查询本地系统中配置主机名到IP地址的解析,即/etc/hosts文件。
[root@guojie ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
在hosts文件未查找到,默认将会尝试使用DNS名称服务器进行查询,/etc/resolv.conf文件控制如何执行对DNS服务器的查询。nameserver 和 search 是 /etc/resolv.conf 文件中用于配置 DNS 的两种不同选项。
nameserver:这个选项用于指定 DNS 解析器的 IP 地址。每个 nameserver 行定义一个 DNS 服务器的地址,你可以列出多个 DNS 服务器以提高冗余性或负载均衡。例如:
nameserver 8.8.8.8
nameserver 8.8.4.4
在这,8.8.8.8 和 8.8.4.4 是两个 DNS 服务器的 IP 地址。
search: 这个选项用于指定默认的搜索域(Search Domain)。它允许在没有指定完整主机名的情况下进行名称解析。当你在系统中输入不完整的主机名时,系统会自动在 search 中指定的域中搜索。例如:
search example.com
这意味着如果你在系统中输入一个不完整的主机名(比如 hostname),系统会尝试解析为
hostname.example.com。
注意:按照上述格式添加或编辑 nameserver 行,并保存文件,而在某些 Linux 发行版(如 Ubuntu)使用 NetworkManager 来管理网络设置,直接编辑/etc/resolv.conf 可能不会永久保存设置。
注意:DHCP会在接口(网卡)启动时自动重写/etc/resolv.conf文件!