Linux网络管理
网络基础概念
Linux系统提供了强大的网络功能,支持各种网络协议和服务。理解Linux网络管理对于系统管理员和开发人员至关重要。
网络接口
网络接口是系统与网络通信的通道,可以是有线网卡、无线网卡、虚拟网卡等。
IP地址
IP地址是网络设备的唯一标识符,分为IPv4和IPv6两种格式。
网络服务
Linux系统可以运行各种网络服务,如Web服务器、FTP服务器、SSH服务器等。
网络接口配置
查看网络接口
# 查看所有网络接口
ip addr show
# 或简写为
ip a
# 查看特定网络接口
ip addr show eth0
# 使用传统命令查看网络接口
ifconfig
配置网络接口
# 启用网络接口
sudo ip link set eth0 up
# 禁用网络接口
sudo ip link set eth0 down
# 为接口分配IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
# 删除接口的IP地址
sudo ip addr del 192.168.1.100/24 dev eth0
# 查看网络接口统计信息
ip -s link show eth0
使用传统ifconfig命令
# 查看网络接口
ifconfig
# 启用网络接口
sudo ifconfig eth0 up
# 禁用网络接口
sudo ifconfig eth0 down
# 为接口分配IP地址
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 设置接口MTU
sudo ifconfig eth0 mtu 1500
网络连接测试
ping命令
ping命令用于测试网络连通性。
# 测试到目标主机的连通性
ping google.com
# 发送指定数量的数据包
ping -c 4 google.com
# 设置数据包大小
ping -s 1024 google.com
# 设置超时时间
ping -W 5 google.com
# 持续ping直到手动停止
ping google.com
# Ctrl+C 停止
traceroute命令
traceroute命令用于跟踪数据包到达目标主机的路径。
# 跟踪到目标主机的路由
traceroute google.com
# 使用IPv6跟踪路由
traceroute6 google.com
# 设置最大跳数
traceroute -m 20 google.com
# 使用TCP跟踪路由
tcptraceroute google.com
telnet和nc命令
# 测试TCP端口连通性
telnet host port
# 使用nc测试端口
nc -zv host port
# 使用nc测试端口范围
nc -zv host 80-90
网络统计和监控
netstat命令
netstat命令用于显示网络连接、路由表、接口统计等信息。
# 查看所有网络连接
netstat -a
# 查看TCP连接
netstat -t
# 查看UDP连接
netstat -u
# 查看监听端口
netstat -tuln
# 查看网络统计信息
netstat -i
# 查看路由表
netstat -r
ss命令
ss是netstat的现代替代品,性能更好。
# 查看所有连接
ss -a
# 查看TCP连接
ss -t
# 查看UDP连接
ss -u
# 查看监听端口
ss -tuln
# 查看进程信息
ss -p
# 查看内存使用情况
ss -m
网络流量监控
# 实时监控网络流量
iftop
# 查看网络接口流量统计
iftop -i eth0
# 查看进程网络使用情况
nethogs
# 监控特定主机的流量
iftop -f "host 192.168.1.100"
路由配置
查看路由表
# 查看路由表
ip route show
# 或简写为
ip route
# 查看特定目标的路由
ip route get 8.8.8.8
# 使用传统命令查看路由
route -n
添加和删除路由
# 添加默认路由
sudo ip route add default via 192.168.1.1
# 添加特定网络路由
sudo ip route add 10.0.0.0/8 via 192.168.1.1
# 删除默认路由
sudo ip route del default
# 删除特定路由
sudo ip route del 10.0.0.0/8
# 添加路由并指定接口
sudo ip route add 172.16.0.0/16 dev eth1
使用传统route命令
# 添加默认路由
sudo route add default gw 192.168.1.1
# 添加特定网络路由
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1
# 删除路由
sudo route del default
DNS配置
配置DNS服务器
# 查看DNS配置
cat /etc/resolv.conf
# 临时修改DNS服务器
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 永久修改DNS服务器(Ubuntu/Debian)
# 编辑 /etc/netplan/*.yaml 文件
# 永久修改DNS服务器(CentOS/RHEL 7)
# 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件
DNS查询工具
# 查询域名IP地址
nslookup google.com
# 使用dig查询DNS信息
dig google.com
# 查询MX记录
dig mx google.com
# 反向DNS查询
dig -x 8.8.8.8
# 查询特定DNS服务器
dig @8.8.8.8 google.com
防火墙配置
iptables(传统防火墙)
# 查看当前iptables规则
sudo iptables -L
# 允许特定端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许特定IP访问
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 拒绝特定IP访问
sudo iptables -A INPUT -s 192.168.1.200 -j DROP
# 删除规则
sudo iptables -D INPUT -s 192.168.1.200 -j DROP
# 保存iptables规则
sudo iptables-save > /etc/iptables/rules.v4
firewalld(现代防火墙)
# 启动firewalld
sudo systemctl start firewalld
# 查看防火墙状态
sudo firewall-cmd --state
# 查看当前区域
sudo firewall-cmd --get-active-zones
# 查看默认区域
sudo firewall-cmd --get-default-zone
# 查看所有服务
sudo firewall-cmd --get-services
# 允许服务
sudo firewall-cmd --permanent --add-service=ssh
# 允许端口
sudo firewall-cmd --permanent --add-port=80/tcp
# 重新加载配置
sudo firewall-cmd --reload
# 查看规则
sudo firewall-cmd --list-all
UFW(Ubuntu防火墙)
# 启用UFW
sudo ufw enable
# 禁用UFW
sudo ufw disable
# 查看状态
sudo ufw status
# 允许服务
sudo ufw allow ssh
# 允许端口
sudo ufw allow 80/tcp
# 拒绝连接
sudo ufw deny 23
# 删除规则
sudo ufw delete allow 80/tcp
# 重置规则
sudo ufw reset
网络服务管理
SSH服务
# 启动SSH服务
sudo systemctl start ssh
# 停止SSH服务
sudo systemctl stop ssh
# 重启SSH服务
sudo systemctl restart ssh
# 查看SSH服务状态
sudo systemctl status ssh
# 配置SSH服务
sudo nano /etc/ssh/sshd_config
Web服务器
# Apache服务管理
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl status apache2
# Nginx服务管理
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx
FTP服务
# vsftpd服务管理
sudo systemctl start vsftpd
sudo systemctl stop vsftpd
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
网络故障排除
常见网络问题
-
网络连接问题
# 检查网络接口状态
ip addr show
# 测试本地回环
ping 127.0.0.1
# 测试网关连通性
ping gateway_ip
# 测试DNS解析
nslookup google.com -
DNS解析问题
# 检查DNS配置
cat /etc/resolv.conf
# 直接使用IP地址测试
ping 8.8.8.8
# 使用不同的DNS服务器
nslookup google.com 8.8.4.4 -
防火墙问题
# 检查防火墙状态
sudo ufw status
sudo firewall-cmd --list-all
# 临时禁用防火墙测试
sudo ufw disable -
路由问题
# 查看路由表
ip route show
# 跟踪路由
traceroute google.com
# 检查默认路由
ip route | grep default
网络诊断工具
# 网络连接测试
mtr google.com
# 端口扫描
nmap -p 1-1000 host
# 网络带宽测试
iperf3 -s # 服务器端
iperf3 -c server_ip # 客户端
# 网络延迟测试
ping -c 10 google.com
# 网络吞吐量测试
dd if=/dev/zero bs=1M count=100 | nc -q 5 host port
网络配置文件
主要配置文件
# 网络接口配置(Ubuntu/Debian)
/etc/netplan/*.yaml
# 网络接口配置(CentOS/RHEL)
/etc/sysconfig/network-scripts/ifcfg-eth0
# DNS配置
/etc/resolv.conf
# 主机名配置
/etc/hostname
# 主机映射
/etc/hosts
# 网络服务配置
/etc/services
网络管理工具
# NetworkManager命令行工具
nmcli connection show
nmcli device status
nmcli connection up connection_name
nmcli connection down connection_name
# 重启网络服务
sudo systemctl restart networking
sudo systemctl restart NetworkManager
实践练习
练习1:网络接口配置
# 1. 查看网络接口信息
ip addr show
# 2. 查看路由表
ip route show
# 3. 测试网络连通性
ping -c 4 google.com
# 4. 查看DNS配置
cat /etc/resolv.conf
# 5. 测试DNS解析
nslookup github.com
练习2:防火墙配置
# 1. 查看防火墙状态(选择适用的命令)
sudo ufw status
# 或
sudo firewall-cmd --state
# 2. 允许SSH服务
sudo ufw allow ssh
# 或
sudo firewall-cmd --permanent --add-service=ssh
# 3. 允许Web服务
sudo ufw allow 80/tcp
# 或
sudo firewall-cmd --permanent --add-port=80/tcp
# 4. 重新加载防火墙配置(firewalld)
sudo firewall-cmd --reload
# 5. 查看当前规则
sudo ufw status verbose
# 或
sudo firewall-cmd --list-all
练习3:网络监控
# 1. 查看网络连接
ss -tuln
# 2. 实时监控网络流量(需要安装iftop)
sudo iftop -i eth0
# 3. 查看进程网络使用情况(需要安装nethogs)
sudo nethogs eth0
# 4. 跟踪路由
traceroute google.com
# 5. DNS查询
dig google.com
练习4:网络服务管理
# 1. 查看SSH服务状态
sudo systemctl status ssh
# 2. 重启网络服务
sudo systemctl restart networking
# 3. 查看所有网络服务
sudo systemctl list-units --type=service | grep -E "(ssh|network|apache|nginx)"
# 4. 查看网络服务日志
sudo journalctl -u ssh
# 5. 测试SSH连接
ssh localhost
安全最佳实践
网络安全建议
-
限制网络访问
# 只允许特定IP访问SSH
sudo ufw allow from 192.168.1.100 to any port 22 -
使用非标准端口
# 修改SSH端口(编辑/etc/ssh/sshd_config)
Port 2222 -
启用防火墙
# 启用UFW并设置默认策略
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing -
定期更新系统
# Ubuntu/Debian
sudo apt update && sudo apt upgrade
# CentOS/RHEL
sudo yum update -
监控网络活动
# 查看异常连接
netstat -an | grep ESTABLISHED
# 查看监听端口
ss -tuln
总结
Linux网络管理涉及网络接口配置、连接测试、路由管理、防火墙配置、服务管理等多个方面。掌握这些技能对于维护Linux系统的网络功能和安全性至关重要。
关键要点:
- 理解网络基础概念和网络接口管理
- 掌握网络连接测试和故障排除方法
- 熟练使用现代网络工具(ip、ss)和传统工具(ifconfig、netstat)
- 学会配置防火墙和网络安全策略
- 能够管理和监控网络服务
- 遵循网络安全最佳实践