Linux网络管理

网络配置基础

网络接口查看

# 查看网络接口
ip addr                              # 显示所有接口地址
ip addr show eth0                    # 显示指定接口
ip link                              # 显示接口链路状态
ifconfig                             # 传统命令(已废弃)
 
# 查看网络统计
ip -s link                           # 显示接口统计信息
ip -s -s link show eth0              # 详细统计信息

IP地址配置

# 临时配置IP(重启失效)
ip addr add 192.168.1.100/24 dev eth0    # 添加IP地址
ip addr del 192.168.1.100/24 dev eth0    # 删除IP地址
 
# 启用/禁用接口
ip link set eth0 up                      # 启用接口
ip link set eth0 down                    # 禁用接口
 
# 添加虚拟IP
ip addr add 192.168.1.101/24 dev eth0 label eth0:1

网关和路由配置

# 查看路由表
ip route                              # 显示路由表
ip route show                         # 同上
route -n                              # 传统命令
 
# 添加默认网关
ip route add default via 192.168.1.1
 
# 添加静态路由
ip route add 10.0.0.0/8 via 192.168.1.254
 
# 删除路由
ip route del default
ip route del 10.0.0.0/8

DNS配置

# DNS配置文件
/etc/resolv.conf
 
# 查看DNS配置
cat /etc/resolv.conf
 
# 手动设置DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 114.114.114.114" | sudo tee -a /etc/resolv.conf

NetworkManager配置

nmcli命令

# 查看连接
nmcli connection show                # 显示所有连接
nmcli device status                  # 显示设备状态
 
# 创建连接
nmcli connection add type ethernet con-name "static" \
    ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
 
# 修改连接
nmcli connection modify "static" ipv4.dns "8.8.8.8,114.114.114.114"
nmcli connection modify "static" ipv4.method manual
 
# 启用/禁用连接
nmcli connection up "static"
nmcli connection down "static"
 
# 删除连接
nmcli connection delete "static"

nmtui图形界面

nmtui                                # 打开图形配置界面
nmtui edit                           # 编辑连接
nmtui connect                        # 激活连接

网络诊断工具

连通性测试

# ping测试
ping 8.8.8.8                         # 基本ping测试
ping -c 4 192.168.1.1                # 发送4个包后停止
ping -i 0.5 192.168.1.1              # 每0.5秒发送一次
 
# 路由追踪
traceroute 8.8.8.8                   # 追踪路由
tracepath 8.8.8.8                    # 不需要root权限的追踪
mtr 8.8.8.8                          # 实时路由追踪
 
# 端口连通性测试
nc -zv 192.168.1.1 22                # 测试TCP端口
nc -zvu 192.168.1.1 53               # 测试UDP端口

网络抓包

# tcpdump抓包
tcpdump -i eth0                      # 抓取eth0接口所有包
tcpdump -i eth0 port 80              # 抓取80端口
tcpdump -i eth0 host 192.168.1.1     # 抓取指定主机
tcpdump -i eth0 -w capture.pcap      # 保存到文件
tcpdump -i eth0 -r capture.pcap      # 读取抓包文件
 
# 常用过滤
tcpdump -i eth0 'tcp port 80 and host 192.168.1.1'
tcpdump -i eth0 'icmp'               # 抓取ICMP包
tcpdump -i eth0 'net 192.168.1.0/24' # 抓取网段

端口和连接查看

# netstat(传统命令)
netstat -an                          # 显示所有连接
netstat -tunlp                       # 显示TCP/UDP监听端口
netstat -rn                          # 显示路由表
 
# ss(推荐使用)
ss -an                               # 显示所有连接
ss -tunlp                            # 显示TCP/UDP监听端口
ss -s                                # 连接统计摘要
ss -l                                # 只显示监听端口

网络性能测试

# 带宽测试
iperf3 -s                            # 服务端
iperf3 -c 192.168.1.100              # 客户端测试
 
# 下载速度测试
curl -o /dev/null -w "Speed: %{speed_download}\n" http://example.com/file
 
# 网络延迟测试
hping3 -S -p 80 192.168.1.1          # TCP SYN包测试

防火墙配置

firewalld(CentOS/RHEL)

# 基本操作
systemctl start firewalld            # 启动防火墙
systemctl enable firewalld           # 开机自启
firewall-cmd --state                 # 查看状态
 
# 区域管理
firewall-cmd --get-zones             # 列出所有区域
firewall-cmd --get-active-zones      # 查看活动区域
firewall-cmd --set-default-zone=public  # 设置默认区域
 
# 端口管理
firewall-cmd --add-port=80/tcp --permanent     # 添加端口
firewall-cmd --remove-port=80/tcp --permanent  # 删除端口
firewall-cmd --list-ports                       # 列出开放端口
 
# 服务管理
firewall-cmd --add-service=http --permanent     # 添加服务
firewall-cmd --remove-service=http --permanent  # 删除服务
firewall-cmd --list-services                    # 列出服务
 
# 重载配置
firewall-cmd --reload                # 重载永久配置

ufw(Ubuntu/Debian)

# 基本操作
ufw enable                           # 启用防火墙
ufw disable                          # 禁用防火墙
ufw status                           # 查看状态
 
# 端口管理
ufw allow 80                         # 允许80端口
ufw allow 22/tcp                     # 允许22端口TCP
ufw deny 80                          # 拒绝80端口
ufw delete allow 80                  # 删除规则
 
# 服务管理
ufw allow ssh                        # 允许ssh服务
ufw allow http                       # 允许http服务
 
# 按IP限制
ufw allow from 192.168.1.0/24        # 允许网段
ufw deny from 10.0.0.1               # 拒绝IP

iptables(底层工具)

# 查看规则
iptables -L                          # 列出所有规则
iptables -L -n -v                    # 详细列出规则
iptables -t nat -L                   # 查看NAT表
 
# 添加规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    # 允许SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    # 允许HTTP
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT    # 允许网段
 
# 删除规则
iptables -D INPUT 1                  # 删除第一条规则
iptables -F                          # 清空所有规则
 
# 保存规则
iptables-save > /etc/iptables/rules.v4  # 保存规则
iptables-restore < /etc/iptables/rules.v4  # 恢复规则

SSH远程连接

SSH客户端

# 基本连接
ssh user@host                        # 连接远程主机
ssh -p 2222 user@host                # 指定端口
ssh -i ~/.ssh/id_rsa user@host       # 指定密钥文件
 
# SSH配置文件 (~/.ssh/config)
Host myserver
    HostName 192.168.1.100
    User admin
    Port 22
    IdentityFile ~/.ssh/id_rsa
 
# 使用配置连接
ssh myserver
 
# 文件传输
scp file.txt user@host:/path/        # 上传文件
scp user@host:/path/file.txt ./      # 下载文件
scp -r folder/ user@host:/path/      # 上传目录
 
rsync -avz source/ user@host:dest/   # 同步目录
rsync -avz --delete source/ user@host:dest/  # 完全同步

SSH密钥管理

# 生成密钥对
ssh-keygen -t rsa -b 4096            # 生成RSA密钥
ssh-keygen -t ed25519                # 生成Ed25519密钥(推荐)
 
# 复制公钥到远程主机
ssh-copy-id user@host                # 复制公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host  # 指定公钥
 
# 查看公钥指纹
ssh-keygen -lf ~/.ssh/id_rsa.pub

SSH服务端配置

# 配置文件
/etc/ssh/sshd_config
 
# 常用配置项
Port 22                              # 监听端口
PermitRootLogin no                   # 禁止root登录
PasswordAuthentication no            # 禁用密码认证
PubkeyAuthentication yes             # 启用密钥认证
MaxAuthTries 3                       # 最大认证尝试次数
ClientAliveInterval 300              # 保持连接
 
# 重启SSH服务
systemctl restart sshd
systemctl reload sshd

网络高级配置

网络桥接

# 创建网桥
ip link add name br0 type bridge
ip link set br0 up
 
# 添加接口到网桥
ip link set eth0 master br0
 
# 删除网桥
ip link set eth0 nomaster
ip link delete br0 type bridge

VLAN配置

# 添加VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100
ip addr add 192.168.100.1/24 dev eth0.100
ip link set eth0.100 up

网络命名空间

# 创建命名空间
ip netns add ns1
 
# 在命名空间中执行命令
ip netns exec ns1 bash
 
# 将接口移动到命名空间
ip link set eth1 netns ns1
 
# 列出命名空间
ip netns list
 
# 删除命名空间
ip netns delete ns1

💡 网络管理建议:

  • 使用ip命令替代已废弃的ifconfig
  • 配置防火墙规则时要小心,避免锁定自己
  • 使用SSH密钥认证,禁用密码登录
  • 定期检查网络连接和异常流量

🔗 相关笔记: 02.03_系统管理 06.02_网络安全 08.01_Web服务部署