第7课:网络配置与管理

【腾讯云】语音识别准确率高,支持多语种,多场景,限时特惠,最低14.9元起

推广

【腾讯云】语音识别准确率高,支持多语种,多场景,限时特惠,最低14.9元起

网络配置与管理

网络基础概念

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

总结

网络配置与管理要点:

  1. 网络基础:理解网络接口、IP地址、路由概念
  2. 配置管理:掌握网络配置方法和工具
  3. 防火墙:配置iptables、firewalld、ufw等防火墙
  4. 诊断工具:熟练使用ping、traceroute、nmap等工具
  5. SSH服务:配置安全的SSH服务和密钥认证
  6. 故障排除:快速诊断和解决网络问题

下一课预告

在下一课中,我们将学习软件包管理,包括:

  • APT包管理器使用
  • YUM/DNF包管理器使用
  • 源码编译安装
  • 软件包制作

💡 小贴士:网络配置是Linux系统管理的重要技能。建议在虚拟机环境中多练习各种网络配置,熟悉不同发行版的网络管理工具。

Vue3 + TypeScript 企业级项目实战

课程推荐

Vue3 + TypeScript 企业级项目实战
Python 全栈开发工程师培训

热门课程

Python 全栈开发工程师培训

📚 文章对你有帮助?请关注我的公众号,万分感谢!

获取更多优质技术文章,第一时间掌握最新技术动态

关注公众号

关注公众号

第一时间获取最新技术文章

添加微信

添加微信

技术交流 · 问题答疑 · 学习指导

评论讨论

欢迎留下你的想法和建议