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/8DNS配置
# 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.confNetworkManager配置
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 # 拒绝IPiptables(底层工具)
# 查看规则
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.pubSSH服务端配置
# 配置文件
/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 bridgeVLAN配置
# 添加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服务部署