跳转至

Linux网络管理

概述

网络配置和管理是 Linux 系统管理的重要部分,也是安全测试中进行网络侦察和信息收集的基础。本文从网络基本概念出发,系统介绍了 Linux 网络配置、连通性探测、连接查看、DNS 查询和防火墙设置等内容。

网络基本概念

物理地址与逻辑地址

地址类型 英文 说明 类比
MAC地址 Media Access Control 网卡的物理地址,烧录在硬件中,全球唯一 身份证号
IP地址 Internet Protocol Address 逻辑地址,可配置、可变化,用于网络寻址 家庭住址

查看MAC地址

ip link show
ifconfig

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 baidu.com                 # 测试到百度的网络连通性
ping 192.168.1.100           # 测试到指定IP的连通性
ping -c 4 baidu.com            # 只发送4个包(默认持续发送)

专业解读: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

nslookup baidu.com             # 查询域名对应的IP地址

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

host baidu.com                 # 查询域名IP
host -t MX www.baidu.com       # 查询MX记录

下载传输

常规传输方式

方式 方向 特点
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)、监控异常流量模式、限制不必要的出站连接。