Linux网络管理¶
概述¶
网络配置和管理是 Linux 系统管理的重要部分,也是安全测试中进行网络侦察和信息收集的基础。本文从网络基本概念出发,系统介绍了 Linux 网络配置、连通性探测、连接查看、DNS 查询和防火墙设置等内容。
网络基本概念¶
物理地址与逻辑地址¶
| 地址类型 | 英文 | 说明 | 类比 |
|---|---|---|---|
| MAC地址 | Media Access Control | 网卡的物理地址,烧录在硬件中,全球唯一 | 身份证号 |
| IP地址 | Internet Protocol Address | 逻辑地址,可配置、可变化,用于网络寻址 | 家庭住址 |
查看MAC地址:
IP地址分类:公有IP与私有IP¶
IP地址分为公有IP和私有IP,私有IP仅在局域网内使用,不能直接访问互联网。
公有IP地址范围:
| 类别 | 公有IP范围 |
|---|---|
| A类 | 1.0.0.0 - 9.255.255.255 和 11.0.0.0 - 126.255.255.255 |
| B类 | 128.0.0.0 - 172.15.255.255 和 172.32.0.0 - 191.255.255.255 |
| C类 | 192.0.0.0 - 192.168.255.255 和 192.169.0.0 - 223.255.255.255 |
私有IP地址范围(RFC 1918规定):
| 类别 | 私有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 | 家庭/小型网络 |
专业解读:我们常用的
192.168.x.x就是C类私有IP。家庭路由器会给连接的设备分配这个网段的IP。私有IP要访问互联网,必须通过NAT(网络地址转换)转换为公有IP。
NAT(网络地址转换)¶
NAT:Network Address Translation,将私有IP地址转换为公有IP地址的技术。
工作原理: 1. 内网设备发送数据包到路由器(源IP是私有IP,如192.168.1.100) 2. 路由器将源IP替换为自己的公有IP,并记录映射关系 3. 服务器响应后,路由器根据映射关系将目标IP改回私有IP 4. 内网设备收到响应
专业解读:NAT不仅解决了IPv4地址不足的问题,还起到了隔离内网、隐藏内部拓扑的安全作用。家用路由器、公司防火墙都使用NAT。
IPv4 与 IPv6¶
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位(4个8位二进制) | 128位 |
| 地址数量 | 约42亿个(2^32) | 约3.4×10^38个(2^128) |
| 实际可用 | 约25.68亿个 | 几乎无限 |
| 表示方式 | 点分十进制,如192.168.1.1 | 冒分十六进制,如2001:0db8:85a3::8a2e:0370:7334 |
| 安全性 | IPsec可选 | IPsec内置 |
IP地址计算工具:https://tool.520101.com/wangluo/ipjisuan/
专业解读:IPv4地址枯竭是推动IPv6发展的核心原因。中国是全球推进IPv6最积极的国家之一,目前主要网站和应用已基本支持IPv6。
动态IP与静态IP¶
| 类型 | 英文 | 说明 |
|---|---|---|
| 动态IP | DHCP | 由DHCP服务器自动分配,每次连接可能不同 |
| 静态IP | Static | 手动配置,固定不变 |
DHCP:Dynamic Host Configuration Protocol(动态主机配置协议) - 路由器或DHCP服务器自动为接入网络的设备分配IP、子网掩码、网关、DNS - 租期到期后会续租或重新分配
专业解读:服务器通常必须使用静态IP,因为客户端需要通过固定地址访问。个人电脑和手机通常使用DHCP获取动态IP。
127.0.0.1 与 localhost¶
| 名称 | 说明 |
|---|---|
| 127.0.0.1 | 环回地址(loop back),指向本机。可以ping通代表网卡安装正常 |
| localhost | 本地主机的域名,默认解析为127.0.0.1(IPv6为::1) |
专业解读:环回地址的数据包不经过物理网卡,直接在操作系统内部回路。因此即使断网,ping 127.0.0.1 也能通。它是测试本地TCP/IP协议栈是否正常的最简单方法。
端口 (Port)¶
作用:区分同一台主机上不同的网络程序/服务。
端口范围:0 - 65535(16位无符号整数)
| 范围 | 名称 | 说明 |
|---|---|---|
| 0 - 1023 | 系统端口(Well-known ports) | 由IANA统一分配,如HTTP(80)、HTTPS(443)、SSH(22) |
| 1024 - 49151 | 用户端口(Registered ports) | 需要向IANA注册,如MySQL(3306)、Redis(6379) |
| 49152 - 65535 | 动态端口(Private/Ephemeral ports) | 客户端程序临时使用,由操作系统动态分配 |
专业解读:1024以下的端口需要root权限才能绑定,这是安全设计。运行Web服务器监听80端口时,通常需要root启动或配置端口转发(如非root程序监听8080,再由root权限的进程转发80到8080)。
域名 (Domain Name)¶
作用:用人类易记的字符串替代数字IP地址。
域名解析:通过 DNS(Domain Name System)将域名转换为IP地址。
域名与IP的数量关系:多对一 - 一个域名可以解析到多个IP(负载均衡) - 多个域名可以解析到同一个IP(虚拟主机)
子域名:
- www.baidu.com — 百度主站
- map.baidu.com — 百度地图
- tieba.baidu.com — 百度贴吧
网络配置文件¶
| 文件路径 | 作用 |
|---|---|
/etc/sysconfig/network-scripts/ifcfg-ens33 |
网卡配置文件(CentOS 7,网卡名可能不同) |
/etc/sysconfig/network-scripts/ifcfg-lo |
环回地址配置文件 |
/etc/hosts |
本地主机名与IP的映射(优先级高于DNS) |
/etc/resolv.conf |
DNS服务器配置(通常由NetworkManager自动管理) |
专业解读:CentOS 7中网卡命名采用 predictable network interface names,如ens33、eno1、enp0s3等,而不是传统的eth0。如果习惯旧名称,可在安装时传递内核参数
net.ifnames=0 biosdevname=0恢复eth0命名。
查看及配置网络¶
ifconfig¶
全称:network interfaces configuring
ifconfig # 显示所有网卡信息
ifconfig ens33 # 显示指定网卡信息
ifconfig ens33 192.168.1.100 netmask 255.255.255.0 # 临时配置IP
专业解读:
ifconfig属于net-tools工具包,在CentOS 7中已逐渐被ip命令取代,默认可能未安装。可用yum install net-tools安装。
ip 命令¶
ip 命令属于iproute2工具包,是现代Linux推荐的网络配置工具,功能比ifconfig更强大。
ip addr show # 显示IP地址(简写:ip a)
ip addr add 192.168.1.100/24 dev ens33 # 给ens33添加IP
ip link set ens33 up # 启用网卡
ip link set ens33 down # 禁用网卡
ip route show # 显示路由表
ip route add default via 192.168.1.1 # 添加默认网关
专业解读:
ip命令的配置是临时的,重启后失效。要永久生效,需修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33。
连通性探测¶
ping¶
全称:Packet Internet Groper(因特网包探索器)
专业解读:ping使用ICMP协议(Internet Control Message Protocol)。如果对方防火墙禁用了ICMP回应,即使网络通畅,ping也会显示超时。此时需要用telnet或curl测试具体端口。
telnet¶
作用:远程登录、探测端口是否开放。
# 远程登录(传统用法,现已很少用,因不安全)
telnet bbs.newsmth.net
# 探测端口(现代主要用法)
telnet 192.168.1.132 80 # 测试对方80端口是否开放
telnet 192.168.1.132 22 # 测试对方22(SSH)端口是否开放
专业解读:telnet协议以明文传输数据,存在严重安全隐患,远程登录已被SSH全面取代。但
telnet IP 端口作为端口连通性测试工具仍然非常实用。如果提示command not found,需安装:yum install telnet。
查看网络连接¶
netstat / ss¶
全称:network statistics
netstat -ap | grep ssh # 查看ssh相关的网络连接
netstat -ap | grep 3306 # 查看3306端口的连接情况
netstat -tlnp # 显示所有监听的TCP端口及对应进程
常用选项:
| 选项 | 说明 |
|---|---|
-a |
显示所有连线中的Socket |
-p |
显示正在使用Socket的程序识别码(PID)和程序名称 |
-l |
仅列出在监听(listen)的服务状态 |
-t |
显示TCP传输协议的连线状况 |
-u |
显示UDP传输协议的连线状况 |
-n |
直接使用IP地址和端口号,不通过域名和服务名解析(加快显示速度) |
专业解读:
ss命令是iproute2工具包中的新工具,用于替代netstat,速度更快、信息更详细。用法与netstat类似:ss -tlnp。
域名相关¶
nslookup¶
DNS记录类型:
| 类型 | 说明 |
|---|---|
| A记录 | 域名 → IPv4地址 |
| AAAA记录 | 域名 → IPv6地址 |
| CNAME | 域名别名,指向另一个域名 |
| MX | 邮件交换记录,指定邮件服务器 |
| NS | 域名服务器记录,指定DNS服务器 |
| TXT | 文本记录,常用于验证域名所有权、SPF反垃圾邮件 |
dig¶
全称:domain information groper,功能比nslookup更强大的DNS查询工具。
dig baidu.com # 查询baidu.com的A记录
dig www.xtu.edu.cn A +noall +answer # 只显示A记录结果
dig www.xtu.edu.cn MX +noall +answer # 只显示MX记录
dig www.xtu.edu.cn NS +noall +answer # 只显示NS记录
host¶
下载传输¶
常规传输方式¶
| 方式 | 方向 | 特点 |
|---|---|---|
| Xshell拖曳 | 上传 | 直接将文件拖入Xshell窗口 |
| xftp / FileZilla | 双向 | 图形化SFTP客户端,拖拽传输 |
| sz / rz | 下载/上传 | Zmodem协议,需在服务器安装lrzsz |
| VMware Tools | 传入 | 安装后可在VMware中直接拖拽 |
| wget | 下载 | 命令行下载工具,支持断点续传 |
| scp | 双向 | 基于SSH的安全复制 |
| curl | 双向 | 功能强大的数据传输工具,支持多种协议 |
wget¶
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
wget -O redis.tar.gz https://download.redis.io/releases/redis-6.0.9.tar.gz # 指定保存文件名
wget -c https://example.com/bigfile.zip # 断点续传
wget -b https://example.com/bigfile.zip # 后台下载
tail -f wget-log # 查看后台下载进度
wget -i filelist.txt # 批量下载(文件内含多个URL)
专业解读:wget是下载文件的首选工具,支持HTTP、HTTPS、FTP协议,自动处理重定向,断点续传功能对大文件下载非常实用。
scp¶
全称:Secure Copy,基于SSH协议的安全文件传输。
# 上传本地文件到远程
scp 1.txt root@192.168.1.66:/tmp
# 上传本地目录到远程(-r递归)
scp -r folder root@192.168.1.66:/tmp
# 从远程下载到本地
scp root@192.168.1.66:/tmp/1.txt ./
# 指定端口(非默认22端口)
scp -P 2222 1.txt root@192.168.1.66:/tmp
专业解读:scp简单直接,但不支持断点续传。对于大文件或不稳定的网络,推荐使用
rsync(支持增量传输和断点续传)。
curl¶
全称:Client URL,功能极为强大的数据传输工具,支持HTTP、HTTPS、FTP、SFTP、SMTP等多种协议。
# 读取网页内容
curl https://www.baidu.com
# 保存网页到文件
curl https://www.baidu.com > page.html
# 发送POST请求
curl -X POST -d 'a=1&b=nihao' URL
# 发送JSON请求(REST API常用)
curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' URL
# 上传文件到FTP
curl -T dodo1.JPG -u 用户名:密码 ftp://www.aaa.com/img/
# 下载文件并跟随重定向
curl -L -O https://example.com/file.zip
专业解读:curl是开发人员和运维人员调试API、测试Web服务的利器。Postman等GUI工具的底层原理与curl类似。
curl -v可以显示详细的请求和响应头信息,方便排查问题。
防火墙设置¶
firewalld(CentOS 7默认防火墙)¶
CentOS 7使用firewalld作为动态防火墙管理工具,替代了旧版的iptables。
| 操作 | 命令 |
|---|---|
| 查看已开放的端口 | firewall-cmd --list-ports |
| 开启80端口 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
| 重启防火墙(使配置生效) | firewall-cmd --reload |
| 停止防火墙 | systemctl stop firewalld.service |
| 禁止防火墙开机启动 | systemctl disable firewalld.service |
| 删除规则 | firewall-cmd --zone=public --remove-port=80/tcp --permanent |
专业解读: -
--permanent表示永久生效(写入配置文件),否则仅当前会话有效 ---reload必须执行,否则--permanent的变更不会立即生效 - firewalld使用"区域(zone)"概念管理不同信任级别的网络,public是最常用的公共区域 - 要开放服务而不是端口:firewall-cmd --add-service=http --permanent
安全测试视角:网络信息收集 在渗透测试的信息收集阶段,网络相关命令是最基础的工具:
# 快速扫描局域网存活主机 nmap -sn 192.168.1.0/24 # 扫描目标开放端口 nmap -sV -O 192.168.1.100 # 使用 netcat 进行端口扫描 nc -zv 192.168.1.100 1-65535 # 查看当前网络连接(发现可疑外连) ss -tulnp | grep ESTAB lsof -i | grep -v "localhost\|127.0.0.1"安全测试视角:DNS 安全 DNS 是网络攻击的常见目标: - DNS 劫持:篡改 DNS 解析结果,将用户导向钓鱼网站 - DNS 隧道:利用 DNS 查询和响应传输数据,绕过防火墙。检测方法:监控异常高频的 DNS 查询、过长的子域名 - DNS 泛洪攻击:大量 DNS 查询导致 DNS 服务器瘫痪 在安全测试中,检查目标系统的 DNS 配置(
/etc/resolv.conf)和 DNS 流量特征是威胁检测的重要环节。安全测试视角:防火墙绕过 攻击者可能使用多种技术绕过防火墙限制: - 端口转发 / 隧道:利用已开放的端口转发流量到目标端口 - ICMP 隧道:通过 ICMP 报文(如 ping)封装数据,绕过基于端口的防火墙规则 - DNS 隧道:如上文所述,利用 DNS 协议传输数据 - HTTP/HTTPS 隧道:将恶意流量封装在正常的 Web 流量中 防御方法:实施深度包检测(DPI)、监控异常流量模式、限制不必要的出站连接。