ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Linux基础入门 - 网络

Linux基础入门 - 网络 MD原文档下载:百度网盘一、网络相关原理1.1 基础概念网络中的节点:主机节点和数据交换节点(交换机,路由器)数据传输链路:接入链路(access link),连接主机和数据交换节点骨干链路(backbone link),数据交换节点之间互联网主流协议TCP/IP网络概念说明IP地址标识一台计算机在网络中的完整位置数据包在网络中传输的数据MAC地址同一子网内标识具体设备交换机同一子网内根据 MAC地址 传输数据路由器连接不同子网网关子网连接外界的唯一出口同一子网直接通信(交换机),跨子网需经过网关(路由器)1.2 IP地址IP地址在网络中用于标识一个节点IP地址用于在网络中寻址,具有唯一性IP地址分为IPV4和IPV6,IPV4为主流地址1.2.1 IPV4地址表示IPv4地址由32个二进制数构成为了方便表示通常采用点分十进制IPv4地址范围: 0.0.0.0~255.255.255.2551.2.2 IP地址构成**网络部分**用来标识一个网络**主机部分**用来区分一个网络内的不同主机**子网掩码**区分一个IP地址中的网络部分及主机部分,帮助主机判断目标是否在同一子网本机IP和网关必须处于同一子网1.2.3 IP地址分类A类:0.0.0.0~127.255.255.255 单播地址 8位掩码B类:128.0.0.0~191.255.255.255 单播地址 16位掩码C类:192.0.0.0~223.255.255.255 单播地址 24位掩码D类: 224.0.0.0~239.255.255.255 组播(不能用于单个节点)E类: 240.0.0.0~255.255.255.255 研究1.2.4 网段一个网络号所定义的网络范围网络地址:用于标识一个网络,主机位全为0,表示网段/网络号广播地址:用于向该网络中的所有主机发送数据,主机位全为1可用地址:减去网络地址和广播地址即为可用地址一个网段可用地址计算方法:2ⁿ-2n为主机位数(32-掩码位数)1.2.5 私网IP地址私网IP供内网使用,连接互联网需要经过NAT转换为公网IPA,B,C类地址预留了私网地址A类:10.0.0.0~10.255.255.255B类:172.16.0.0~172.31.255.255C类:192.168.0.0~192.168.255.255连接互联网必须使用公网地址NAT 网络地址转换: 多个私网IP共享同一公网IP上网的技术1.2.6 特殊IP地址表示网段:主机位全为0,例如192.168.1.0/24广播地址:主机位全为1,例如192.168.1.255/24有限广播地址:IP地址全为1,255.255.255.255任意地址:IP地址全为0, 0.0.0.0**回环地址:**127.0.0.0/8,表示节点自身链路本地地址:169.254.0.0/16,APIPA地址,当开启自动获取IP,但DHCP不可用时,自动给自身分配一个该地址段IP,用于同一局域网通信1.2.7 IPV6由128个二进制数构成1.3 常见网络设备1.3.1 交换机二层(数据链路层)交换机实现同网段主机通信交换机根据MAC地址转发基于ARP协议主机不需要配置网关1.3.2 路由器工作在三层(网络层)主机配置网关跨网段通信通过网关转发多个路由器通过静态路由或动态路由实现数据转发1.3.3 网关工作在三层(网络层)子网的唯一出口1.3.4 防火墙工作在四层(传输层)及以上控制数据包进出1.4 VLAN同一交换机实现不同子网划分二、网络配置2.1ip a查看 IP地址输出字段解析:字段说明lo环回接口(inet 127.0.0.1),本机自用ens160/eth0物理网卡名称,可修改命名规则state UP网卡已启用(DOWN表示停用)inet 10.0.0.210/24IPv4 地址和子网掩码dynamicDHCP 获取的IP ( 静态IP 无此字段)valid_lftDHCP 获取IP 租约剩余时间,未续租可能重新分配给其他主机; 静态IP 显示为foreverlink/ether 00:0c:29:ea:7c:10MAC 地址BROADCAST广播NO-CARRIER没有信号 (例如网线断开)2.2 简洁查看IP地址# 只显示网卡名称,网卡状态, IPv4 地址和子网掩码ip-4-braddr# 查看指定网卡ip-4-braddr show eth02.3ip r查看路由表(网关)# ip route 可简写为 ip riproute输出字段解析:字段说明default via 10.0.0.2默认网关(所有外网流量走这个出口)dev eth0从 eth0 网卡出去10.0.0.0/24 dev eth0同一子网直接通信,无需经过网关如果没有default via行,说明未配置网关或没有获取到,无法实现跨网段通信路由分为: 直连路由,静态路由,缺省(默认)路由静态路由: 目的地 下一跳 IP 网卡2.4 查看设备和连接状态# 查看所有网络设备的状态nmcli device status# 查看所有网络连接,nmcli connection show 可简写为 nmcli c shownmcli c showSTATE:connected表示已连接,disconnected未连接查看连接时DEVICE为空表示该连接未绑定任何设备同一设备可配置多个连接,网络配置在连接上同一设备多个连接只能同时激活一个2.5nmcli命令行修改2.5.1 查看当前连接配置# 查看指定连接的完整配置nmcli c show eth02.5.2 修改为静态 IP# 设置 静态IP 地址nmcli c modify eth0 ipv4.addresses10.0.0.211/24# 设置 网关 ,必须使用真实网关nmcli c modify eth0 ipv4.gateway10.0.0.2# 设置 DNSnmcli c modify eth0 ipv4.dns223.5.5.5 114.114.114.114# 设置 网络配置方法 为 手动nmcli c modify eth0 ipv4.method manual# 设置开机自动连接nmcli c modify eth0 autoconnectyes# 一条命令修改 DHCP 为 静态 IPnmcli c modify eth0\ipv4.method manual\ipv4.addresses10.0.0.211/24\ipv4.gateway10.0.0.2\ipv4.dns223.5.5.5 114.114.114.114\autoconnectyes# 重新激活使配置生效nmcli connection up eth0# 验证# 查看ip 和 子网掩码ipa# 查看路由表ipr# 查看 DNS 服务器配置cat/etc/resolv.conf# ping 外网pingbaidu.com2.5.3 其他修改# 追加静态IPnmcli connection modify eth0 ipv4.addresses10.0.0.210/24# 追加 DNSnmcli connection modify eth0 ipv4.dns8.8.8.8# 设置 网络配置方法 为 DHCPnmcli connection modify eth0 ipv4.method auto# 重新激活使配置生效nmcli connection up eth02.5.4 添加新连接(不推荐)# 给网卡 eth0 添加一个新连接 eth0-2nmcli caddcon-name eth0-2\typeethernet\ifname eth0\ipv4.method manual\ipv4.addresses10.0.0.212/24\ipv4.gateway10.0.0.2\ipv4.dns223.5.5.5 114.114.114.114\# 使用连接名称激活nmcli connection up eth0-22.6 配置文件修改2.6.1 Rocky 10 配置文件# 编辑连接配置文件vim/etc/NetworkManager/system-connections/eth0.nmconnection[ipv4]address210.0.0.210/24dns223.5.5.5;114.114.114.114;gateway10.0.0.2methodmanual# 重新加载配置nmcli connection reload# 重新激活使配置生效nmcli connection up eth02.6.2 Ubuntu 24.04 配置文件# Ubunt 网卡配置文件使用 yaml 格式,注意缩进vim /etc/netplan/99_config.yamlnetwork:version:2renderer:networkdethernets:eth0:addresses:-10.0.0.240/24routes:-to:defaultvia:10.0.0.2nameservers:addresses:-223.5.5.5-114.114.114.114# 测试模式netplan try# 应用配置netplan apply# 验证# 查看ip 和 子网掩码ip a# 查看路由表ip r# 查看 DNS 配置resolvectl status# ping 外网ping baidu.com2.7nmtui交互式配置2.8 主机名管理# 查看主机名hostname# 持久修改主机名hostnameset-hostname ubuntu-240# 查看主机名配置文件cat/etc/hostname# /etc/host 文件添加 本机名称解析 为本机IPecho10.0.0.240 ubuntu-240/etc/hosts# 验证主机名解析pingubuntu-2402.9 DNS 解析# Rocky 10 查看当前 DNS 解析服务器配置cat/etc/resolv.conf# Ubuntu 24.04 查看当前 DNS 解析服务器配置resolvectl status# 验证 DNS 能否正常解析# nslookupnslookupbaidu.com# digdigbaidu.com# hosthostbaidu.com# getentgetent hosts baidu.com三、TCP/ IP 分层模型网络协议:网络上所有设备所使用的共同语言协议分层:OSI 七层模型 和 TCP/IP 四层模型3.1 OSI 七层参考模型层级层级名称层级功能常见协议传输数据名称应用7应用层为应用程序提供网络服务接口,直接与用户程序交互HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3、DNS、DHCP、TFTP、SNMP、MySQL、SSH、TLS/SSL数据/报文七层负载均衡、应用网关、WAF防火墙6表示层数据格式转换、加密解密、压缩解压、编码转换SSL/TLS、ASCII、JPEG、MPEG、加密协议数据加密设备、格式转换器5会话层建立、管理和终止通信会话,会话同步与恢复NetBIOS、RPC、PPTP、SDP、SQL会话数据会话控制器、会话网关4传输层端口寻址与端到端连接,首部包含源/目的端口,决定由哪个程序处理数据TCP、UDP数据段(Segment)四层负载均衡、传输层防火墙3网络层跨网段路由与IP寻址,首部包含源IP和目的IP地址IP、ICMP、OSPF、BGP、RIP、IGMP、ICMP数据包/分组(Packet)三层交换机、路由器2数据链路层同一局域网内点到点传输,首部包含源MAC和下一跳MAC地址LLC、MAC、PPP、以太网协议、Wi-Fi协议数据帧(Frame)二层交换机、网桥、网卡1物理层传输原始比特流,定义物理介质与电气/机械特性RS-232、RJ45规范、光纤、双绞线、蓝牙物理层比特流(Bit)网线、光纤、集线器、中继器3.2 TCP/IP 四层参考模型TCP/IP参考5层模型将OSI七层模型的应用层,表示层,会话层合并为应用层TCP/IP协议栈常见协议层级名称常见协议运维关注点应用层HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3、DNS、DHCP、TFTP、SNMP服务配置、日志、应用协议传输层TCP、UDP端口监听、连接状态、防火墙网络层IP、ICMP、IGMPIP地址、路由表、网关链路层MAC、PPPoE、PPP、以太网协议、Wi-Fi协议网卡状态、MAC地址、网线3.3 网络分层 与 网络排障一层: 检查 网线 / 光模块二层: 检查 网卡 / ARP三层: 检查 IP / 路由四层: 检查端口 / 防火墙七层: 检查服务日志3.4 数据封装和解封装3.4.1 数据封装过程发送方 TCP/IP 模型 由上而下逐层添加协议头部层级名称封装内容PDU(协议数据单元)说明应用层用户数据(HTTP请求,SSH命令等)Data (数据)业务数据传输层TCP/UDP 头部(源端口 目标端口)Sefment (数据段) / Datagram (数据报)TCP叫数据段,UDP叫数据报网络层IP 头部(源 IP 目标 IP)Packet (数据包/分组)跨网段寻址链路层以太网头部(源MAC 下一跳MAC)Frame (数据帧)同网段通信寻址3.4.2 数据解封装接收方 TCP/IP 模型 由下而上逐层去除协议头部3.5 Socket 套接字当数据通过网络传输时IP地址与服务端口的组合便是套接字每个网络数据包都包含源套接字用于识别发送方和目的地套接字用于标识接收方识别网络套接字信息对于有效监控和过滤流量至关重要3.5.1 常见端口端口服务传输层说明22SSHTCP远程登录53DNSUDP(解析) / TCP(主从同步)域名解析80HTTPTCP网页访问443HTTPSTCP加密网页访问3306MySQLTCP数据库6379RedisTCP缓存8080TomcatTCPJava 应用3.5.2 端口分类分类范围说明知名端口0-1023系统保留,需要 root 权限注册端口1024-49151应用程序使用动态端口49152-65535客户端临时使用客户端请求源端口使用动态端口,目标端口使用固定端口# 查看常见端口对应服务grep-E\b(22|53|80|443|3306|6379|8080)\b/etc/services3.6 传输层: TCP vs UDP对比项TCPUDP连接方式面向连接 (先建立连接)无需建立连接(直接发)可靠性可靠传输,确认,重传不可靠,忽略丢包速度较慢较快适用场景SSH,HTTP,MySQL,文件传输DNS,视频流,游戏类比打电话广播3.7 TCP协议3.7.1 TCP 的建立 - 三次握手基于TCP的应用,在发送数据之前,都需要由 TCP 进行“三次握手”建立连接客户端发送第一个 SYN(同步) 标志的 TCP 报文给服务端服务端接收报文后回复一个 SYN 和 ACK(确认) 标志的TCP报文给客户端客户端接收报文后回复一个 ACK 标志的 TCP 报文给服务端,服务端收到报文后,TCP 双向连接建立TCP 使用 序列号 和 确认序列号 字段实现数据的可靠和有序传输3.7.2 TCP 的关闭-四次挥手客户端和服务器端都可以发起连接断开客户端发起断开原因: 页面关闭、APP 退出、传输完成、客户端超时服务端发起断开原因: 空闲超时、服务重启、连接超限、非法请求、保活失效网站服务器大部分时候主动发起断开当数据传输完成,TCP需要通过“四次挥手”机制断开 TCP 连接数据传输完成后主动断开端发送一个 FIN(完成) 标志的 TCP 报文给被动断开端被动断开端接收报文后回复一 个 ACK 标志的 TCP 报文给主动断开端被动断开端数据传输完成后再发送一个 FIN 和 ACK 标志的 TCP 报文给主动断开端主动断开端接收报文后回复一个 ACK 标志的 TCP 报文给被动断开端,TCP 双向连接断开3.7.3 服务端常见连接状态状态含义说明LISTEN服务正在监听正常,服务已启动,等待连接SYN_RCVD连接建立等待如果大量出现,说明服务端被攻击,例如使用大量伪造地址建立连接ESTABLISHED连接已建立正常,正在通信TIME_WAIT连接关闭等待主动关闭方出现,等待2MSL;高并发场景常见CLOSE_WAIT对方已关闭,本机未关闭程序 BUG ,应用层代码没调用 close () 关闭 socket四、网络诊断工具4.1ip查看 IP 信息# 查看所有网卡信息ipa# 查看指定网卡信息ipa show eth0# 只显示网卡名称,网卡状态, IPv4 地址和子网掩码ip-4-braddr# 查看指定网卡ip-4-braddr show eth04.2ip link网卡管理# 查看网卡状态iplink# 启动网卡,使用 nmcli 激活连接不需要手动启动网卡iplinkseteth0 up# 关闭网卡iplinkseteth0 down# 查看网卡统计信息,RX 接受,TX 发送ip-slinkshow eth04.3ip r查看路由表(网关)# ip route 可简写为 ip riproute4.4ip n查看 ARP 缓存表APR 协议用于将 IP 地址解析为 MAC 地址子网内建立通信时,发起方不知道目标 MAC 地址时发起 ARP 广播请求目标 MAC 地址,目标主机发起 ARP 单播响应 MAC 地址,发起方缓存到 ARP 表,下次建立连接时查询 ARP 表,向目标主机发起单播即可# ip neighbo 可简写为 ip nipneighbo状态解析:状态含义REACHABLE可达,正常通信STALE过期,需要重新解析FAILED解析失败# 手动尝试获取目标 MACarping10.0.0.2# 删除单条 ARP 缓存,指定对端 IP 和 网卡名ipn del10.0.0.1 dev eth0# 清空单个网卡全部 ARP 缓存ipn flush dev eth0# 清空所有网卡全部 ARP 缓存ipn flush all4.5ss查看端口监听-n不解析域名 / 服务名,纯数字显示(速度快)-tTCP 连接-uUDP 连接-l仅监听状态端口-a所有连接(监听 已建立)-p显示进程 PID / 程序名(需 root)-4仅 IPv4-6仅 IPv6-s显示连接统计摘要-o显示计时器信息-i显示内部 TCP 信息(cwnd、rtt 等)# 查看所有 TCP 监听端口sudoss-ntlp# TCPUDP 监听(日常排查首选)ss-ntul# 带进程名/PIDsudoss-ntulp# 查看程序监听端口sudoss-ntlp|grepnginx# 查看 80 端口程序sudoss-ntulp|grep:80# 查看所有对外 443 连接ss-ntdport:443# 显示所有已建立的ssh连接ss-ostate established( dport :ssh or sport :ssh )# 显示所有已建立的HTTP连接ss-ostate established( dport :http or sport :http )# 状态筛选# 查看已建立的连接ss-tan|grepESTAB ss-tanstate established# 查看 TIME_WAIT 状态ss-tanstate time-wait4.6tcpdump抓包分析4.6.1 基本用法# 抓取指定网卡所有包tcpdump-ieth0# 限制抓包数量tcpdump-ieth0-c100# 不解析主机名和端口协议,推荐使用tcpdump-ieth0-nn# 按端口过滤,在4层传输层抓包tcpdump-ieth0-nnport80tcpdump-ieth0-nnport22# 按主机过滤,在3层网络层抓包tcpdump-ieth0-nnhost10.0.0.240# 组合过滤tcpdump-ieth0-nnhost10.0.0.240 and port80# 按协议过滤,在7层应用层抓包tcpdump-ieth0-nnicmp4.6.2 保存和读取# 保存为 .pcap 文件可用 Wireshark 打开tcpdump-ieth0-nn-wcapture.pcap# 限制抓包数量tcpdump-ieth0-nn-c1000-wcapture.pcap# 文件加时间戳tcpdump-ieth0-nnport80-w/tmp/http_$(date%Y%m%d_%H%M%S).pcap# 读取文件tcpdump-nn-rcapture.pcap# 读取文件并过滤tcpdump-nn-rcapture.pcap port804.6.3 生产环境抓包流程# 在服务器抓包tcpdump-ieth0-nnport80-c100-w/tmp/http.pcap tcpdump-ieth0-nnarp or icmp-w/tmp/ping_arp.pcap# sz 下载到 Windowssz /tmp/http.pcap# 用 Wireshark 打开分析4.7其他诊断工具4.7.1curlHTTP 验证curl 是命令行 HTTP 客户端,用于测试 Web 服务的连通性# 用法示例# GET 请求curllocalhost:80# 查看响应头curl-Ilocalhost:80# 详细模式(含请求/响应头及TLS握手细节)curl-Ivlocalhost:80# 测试接口响应时间curl-w%{http_code} %{time_total}\n-o/dev/null-slocalhost:804.7.2ping/traceroute/mtr4.7.2.1ping连通性和延迟测试# 基本使用ping10.0.0.240# 指定 ping 次数ping-c410.0.0.240# 指定 ping 间隔 (秒)ping-i0.510.0.0.240# 指定数据包大小ping-s102410.0.0.240输出字段解析字段说明icmp_seq序列号,连续递增说明没丢包ttl生存时间,没经过一个路由器 减 1time往返时间 (毫秒)0% packet loss丢包率4.7.2.2traceroute路由追踪追踪互联网域名意义不大,大部分中间路由都禁止 ICMP协议(ping) 响应,输出结果为* * *# 安装dnfinstall-ytraceroute# ICMP 模式traceroute-Ibaidu.com# 不解析主机名traceroute-nbaidu.com输出字段解析字段说明跳数经过的第 n 个路由器IP 地址路由器地址三次探测时间每次的往返时间*超时无响应 (可能被防火墙拦截)4.7.2.3mtr动态路由追踪结合了 ping 和 traceroute ,动态显示 丢包率 和 延迟# 安装dnfinstall-ymtr# 基本使用mtrbaidu.com输出字段解析字段说明Loss%丢包率 (关键指标)Snt发送包数LastAvgBestWrst延迟统计StDev标准差 (抖动)???该跳不响应4.7.3 firewalld 防火墙规则查看# 查看防火墙状态systemctl status firewalld.service# 查看当前区域配置firewall-cmd --list-all输出字段解析字段说明services放行的服务 (预定义端口)ports方向的自定义端口interfaces生效的网卡五、分层排障方法5.1 五层详解层级名称检查内容命令1物理层网线、网卡、云实例状态ip link, 云控制台2链路层MAC 地址、ARP、网卡状态ip n,arping3网络层IP 地址、路由表、网关ip a,ip r,ping4传输层端口监听、防火墙、连接状态ss -ntlp,firewall-cmd5应用层进程运行、配置错误、日志systemctl status,journalctl5.2 实战案例: SSH 无法连接排除步骤# 第一层 物理层iplink# 确认网卡 state UP# 第二层 链路层ipn# 状态为 REACHABLE 表示正常# 第三层 网络层ping10.0.0.210# 能通则网络正常# 不通检查 IP 配置# 第四层 传输层ss-ntlp|grepssh# 有输出,服务在监听# 无输出,服务未启动firewall-cmd --list-all# 确认 22 端口已放行# 客户端测试服务端对应端口nc-zv10.0.0.21022# 成功,端口通# 失败,防火墙拦截# 第五层 应用层systemctl status sshd# 状态为 running,服务正常运行tail-20/var/log/secure# 查看认证失败原因
返回列表