跳转至

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