网络配置与管理
网络基础概念
1. 网络接口
查看网络接口
# 查看所有网络接口
ip addr show # 现代命令
ifconfig # 传统命令 (需要安装net-tools)
# 查看特定接口
ip addr show eth0
ifconfig eth0
# 查看接口统计信息
ip -s link show
cat /proc/net/dev
网络接口命名
# 现代命名规则
eth0, eth1 # 传统以太网接口
ens33, ens34 # 基于总线位置
enp0s3, enp0s8 # PCI位置命名
wlan0, wlp2s0 # 无线接口
lo # 回环接口
2. IP地址配置
临时配置IP地址
# 使用ip命令配置
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 192.168.1.1
# 使用ifconfig配置
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
sudo route add default gw 192.168.1.1
永久配置IP地址
Ubuntu/Debian (Netplan)
# 编辑netplan配置
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
# 应用配置
sudo netplan apply
CentOS/RHEL (NetworkManager)
# 编辑网络配置文件
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
# 重启网络服务
sudo systemctl restart NetworkManager
网络管理工具
1. NetworkManager
nmcli命令
# 查看网络状态
nmcli general status
nmcli device status
nmcli connection show
# 创建新连接
nmcli connection add type ethernet con-name "static-eth0" ifname eth0 \
ip4 192.168.1.100/24 gw4 192.168.1.1
# 修改连接
nmcli connection modify "static-eth0" ipv4.dns "8.8.8.8,8.8.4.4"
# 激活/停用连接
nmcli connection up "static-eth0"
nmcli connection down "static-eth0"
# WiFi管理
nmcli device wifi list
nmcli device wifi connect "SSID" password "password"
2. 路由管理
查看路由表
ip route show # 查看路由表
route -n # 传统命令
netstat -rn # 另一种方式
路由操作
# 添加路由
sudo ip route add 10.0.0.0/8 via 192.168.1.1
sudo ip route add default via 192.168.1.1
# 删除路由
sudo ip route del 10.0.0.0/8
sudo ip route del default
# 修改路由
sudo ip route change default via 192.168.1.2
3. DNS配置
DNS配置文件
# 查看DNS配置
cat /etc/resolv.conf
# 示例配置
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
systemd-resolved
# 查看DNS状态
systemd-resolve --status
# 查询DNS
systemd-resolve google.com
nslookup google.com
dig google.com
# 清除DNS缓存
sudo systemd-resolve --flush-caches
防火墙配置
1. iptables
基本概念
# iptables表和链
# filter表:INPUT, OUTPUT, FORWARD
# nat表:PREROUTING, POSTROUTING, OUTPUT
# mangle表:修改数据包
基本操作
# 查看规则
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v
# 清空规则
sudo iptables -F
sudo iptables -t nat -F
# 设置默认策略
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
常用规则
# 允许回环接口
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP和HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许特定IP访问
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# 端口转发
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
保存和恢复规则
# Ubuntu/Debian
sudo apt install iptables-persistent
sudo iptables-save > /etc/iptables/rules.v4
# CentOS/RHEL
sudo service iptables save
sudo iptables-save > /etc/sysconfig/iptables
2. firewalld (CentOS/RHEL)
基本操作
# 查看状态
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# 查看区域
sudo firewall-cmd --get-zones
sudo firewall-cmd --get-default-zone
# 添加服务
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
# 添加端口
sudo firewall-cmd --add-port=8080/tcp --permanent
# 重新加载配置
sudo firewall-cmd --reload
3. ufw (Ubuntu)
基本操作
# 启用/禁用防火墙
sudo ufw enable
sudo ufw disable
# 查看状态
sudo ufw status verbose
# 默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许服务
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
# 允许端口
sudo ufw allow 8080/tcp
sudo ufw allow 53/udp
# 允许特定IP
sudo ufw allow from 192.168.1.0/24
# 删除规则
sudo ufw delete allow ssh
sudo ufw --force reset
网络诊断工具
1. 连通性测试
ping命令
ping google.com # 基本ping测试
ping -c 4 google.com # 发送4个包
ping -i 0.5 google.com # 设置间隔0.5秒
ping -s 1000 google.com # 设置包大小1000字节
ping6 ipv6.google.com # IPv6 ping
traceroute
traceroute google.com # 跟踪路由
traceroute -n google.com # 不解析主机名
traceroute -p 80 google.com # 使用特定端口
mtr google.com # 实时路由跟踪
2. 端口扫描
nmap
# 安装nmap
sudo apt install nmap # Ubuntu/Debian
sudo yum install nmap # CentOS/RHEL
# 基本扫描
nmap 192.168.1.1 # 扫描主机
nmap 192.168.1.0/24 # 扫描网段
nmap -p 80,443 192.168.1.1 # 扫描特定端口
nmap -p 1-1000 192.168.1.1 # 扫描端口范围
# 服务检测
nmap -sV 192.168.1.1 # 检测服务版本
nmap -O 192.168.1.1 # 检测操作系统
nmap -A 192.168.1.1 # 全面扫描
netstat和ss
# 查看网络连接
netstat -tuln # 查看监听端口
netstat -tupln # 显示进程信息
ss -tuln # 现代替代命令
ss -tupln # 显示进程信息
# 查看特定端口
netstat -an | grep :80
ss -an | grep :80
# 查看网络统计
netstat -s
ss -s
3. 网络抓包
tcpdump
# 基本抓包
sudo tcpdump -i eth0 # 抓取eth0接口数据包
sudo tcpdump host 192.168.1.1 # 抓取特定主机
sudo tcpdump port 80 # 抓取特定端口
# 保存到文件
sudo tcpdump -i eth0 -w capture.pcap
# 读取文件
tcpdump -r capture.pcap
# 过滤条件
sudo tcpdump -i eth0 'tcp and port 80'
sudo tcpdump -i eth0 'icmp'
sudo tcpdump -i eth0 'src 192.168.1.1'
SSH服务配置
1. SSH服务器配置
安装SSH服务
# Ubuntu/Debian
sudo apt install openssh-server
# CentOS/RHEL
sudo yum install openssh-server
# 启动服务
sudo systemctl enable ssh
sudo systemctl start ssh
SSH配置文件
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 常用配置选项
Port 22 # SSH端口
PermitRootLogin no # 禁止root登录
PasswordAuthentication yes # 密码认证
PubkeyAuthentication yes # 公钥认证
MaxAuthTries 3 # 最大认证尝试次数
ClientAliveInterval 300 # 客户端保活间隔
ClientAliveCountMax 2 # 最大保活次数
# 重启SSH服务
sudo systemctl restart ssh
2. SSH密钥认证
生成SSH密钥
# 生成RSA密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 生成ED25519密钥 (推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 查看公钥
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_ed25519.pub
配置密钥认证
# 复制公钥到服务器
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
# 手动配置
mkdir -p ~/.ssh
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH客户端配置
# 编辑SSH客户端配置
nano ~/.ssh/config
Host myserver
HostName 192.168.1.100
User myuser
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
# 使用配置连接
ssh myserver
3. SSH隧道
本地端口转发
# 将本地8080端口转发到远程80端口
ssh -L 8080:localhost:80 user@server
# 访问本地8080端口即可访问远程80端口
curl http://localhost:8080
远程端口转发
# 将远程8080端口转发到本地80端口
ssh -R 8080:localhost:80 user@server
动态端口转发 (SOCKS代理)
# 创建SOCKS代理
ssh -D 1080 user@server
# 配置浏览器使用SOCKS代理 localhost:1080
网络服务配置
1. DHCP服务器
安装配置DHCP服务器
# 安装DHCP服务器
sudo apt install isc-dhcp-server # Ubuntu/Debian
sudo yum install dhcp-server # CentOS/RHEL
# 配置DHCP
sudo nano /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "example.com";
default-lease-time 600;
max-lease-time 7200;
}
# 启动服务
sudo systemctl enable isc-dhcp-server
sudo systemctl start isc-dhcp-server
2. DNS服务器
安装配置BIND9
# 安装BIND9
sudo apt install bind9 bind9utils bind9-doc
# 配置主配置文件
sudo nano /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
# 创建区域文件
sudo nano /etc/bind/db.example.com
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.10
ns1 IN A 192.168.1.10
www IN A 192.168.1.20
# 重启服务
sudo systemctl restart bind9
网络故障排除
1. 常见网络问题
网络连接问题诊断
# 检查网络接口状态
ip link show
ip addr show
# 检查路由
ip route show
# 检查DNS
nslookup google.com
dig google.com
# 检查防火墙
sudo iptables -L -n
sudo ufw status
# 检查网络服务
sudo systemctl status NetworkManager
sudo systemctl status networking
网络性能测试
# 带宽测试
iperf3 -s # 服务器模式
iperf3 -c server_ip # 客户端模式
# 网络延迟测试
ping -c 100 google.com | tail -1
# 网络吞吐量测试
wget -O /dev/null http://speedtest.example.com/file.zip
2. 网络监控
实时网络监控
# 监控网络接口流量
watch -n 1 'cat /proc/net/dev'
# 使用iftop监控
sudo apt install iftop
sudo iftop -i eth0
# 使用nethogs监控进程网络使用
sudo apt install nethogs
sudo nethogs eth0
总结
网络配置与管理要点:
- 网络基础:理解网络接口、IP地址、路由概念
- 配置管理:掌握网络配置方法和工具
- 防火墙:配置iptables、firewalld、ufw等防火墙
- 诊断工具:熟练使用ping、traceroute、nmap等工具
- SSH服务:配置安全的SSH服务和密钥认证
- 故障排除:快速诊断和解决网络问题
下一课预告
在下一课中,我们将学习软件包管理,包括:
- APT包管理器使用
- YUM/DNF包管理器使用
- 源码编译安装
- 软件包制作
💡 小贴士:网络配置是Linux系统管理的重要技能。建议在虚拟机环境中多练习各种网络配置,熟悉不同发行版的网络管理工具。
📚 文章对你有帮助?请关注我的公众号,万分感谢!
获取更多优质技术文章,第一时间掌握最新技术动态

关注公众号
第一时间获取最新技术文章

添加微信
技术交流 · 问题答疑 · 学习指导
评论讨论
欢迎留下你的想法和建议