侧边栏壁纸
博主头像
winson的blog博主等级

行动起来,活在当下

  • 累计撰写 31 篇文章
  • 累计创建 37 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux 静态 IP 配置

winson
2025-02-09 / 0 评论 / 0 点赞 / 12 阅读 / 11883 字

Linux 静态 IP 配置

网络配置工具说明

NetworkManager(nmcli 和 nmtui)

  1. 适用系统:

    • 现代 Linux 发行版的默认网络管理工具
    • Ubuntu 16.04+
    • CentOS/RHEL 7+
    • Fedora
    • Debian 9+
  2. 工作原理:

    • 作为系统守护进程运行
    • 提供 D-Bus 接口供其他程序调用
    • 动态管理网络配置和连接
    • 可以自动处理网络配置变更
    • 支持多种连接类型(有线、无线、VPN等)
  3. 配置存储:

    • 配置文件位于 /etc/NetworkManager/system-connections/
    • 每个连接独立配置文件
    • 支持配置版本控制

Netplan

  1. 适用系统:

    • Ubuntu 17.10+
    • 部分基于 Ubuntu 的发行版
  2. 工作原理:

    • 使用 YAML 格式描述网络配置
    • 作为配置抽象层
    • 可以选择 NetworkManager 或 systemd-networkd 作为后端
    • 将配置转换为后端可理解的格式
  3. 配置流程:

    • 读取 /etc/netplan/*.yaml
    • 生成后端配置
    • 应用到选择的网络管理器

networking 服务说明

  1. 概述:

    • 是 Debian/Ubuntu 系统的传统网络管理服务
    • 由 ifupdown 软件包提供
    • 负责处理 /etc/network/interfaces 文件中的配置
  2. 工作机制:

    • 系统启动时读取 interfaces 配置文件
    • 使用 ifup/ifdown 命令管理网络接口
    • 支持网络接口的热插拔
    • 可以执行自定义的 pre-up/post-up 脚本
  3. 主要组件:

    • networking 服务:系统服务
    • ifup/ifdown:命令行工具
    • interfaces 配置文件:网络配置存储
    • if-*.d 目录:存放接口相关脚本
  4. 与其他工具的关系:

    • 与 NetworkManager 可能存在冲突
    • 在新版本 Ubuntu 中逐渐被 Netplan 取代
    • 仍在许多服务器环境中使用
  5. 常用命令:

# 启动网络服务
systemctl start networking

# 停止网络服务
systemctl stop networking

# 重启网络服务
systemctl restart networking

# 查看服务状态
systemctl status networking

# 启用/禁用开机自启
systemctl enable networking
systemctl disable networking
  1. 配置示例:
# /etc/network/interfaces 基本配置
auto lo
iface lo inet loopback

# 静态 IP 配置
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

# DHCP 配置
auto eth1
iface eth1 inet dhcp

# 高级配置:添加自定义脚本
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    pre-up /path/to/script.sh
    post-up /path/to/another-script.sh
  1. 故障排查:
    • 查看日志:journalctl -u networking.service
    • 检查配置:ifup --no-act eth0
    • 验证语法:ifup -n eth0
    • 手动测试:ifdown eth0 && ifup eth0

network 服务说明

  1. 概述:

    • 是 RHEL/CentOS 系统的传统网络管理服务
    • 主要用于 RHEL/CentOS 6/7 版本
    • 管理 /etc/sysconfig/network-scripts/ 目录下的配置
  2. 工作机制:

    • 系统启动时读取 network-scripts 目录下的配置
    • 使用 ifup/ifdown 脚本管理接口
    • 支持多种网络设备类型
    • 可以通过脚本扩展功能
  3. 主要组件:

    • network 服务:核心服务进程
    • network-scripts:配置脚本目录
    • ifcfg-* 文件:接口配置文件
    • route-* 文件:路由配置文件
  4. 配置文件结构:

/etc/sysconfig/network-scripts/
├── ifcfg-eth0          # 以太网配置
├── ifcfg-eth1
├── route-eth0          # 静态路由配置
├── rule-eth0           # 路由规则
└── network             # 全局网络配置
  1. 常用命令:
# 启动网络服务
systemctl start network

# 停止网络服务
systemctl stop network

# 重启网络服务
systemctl restart network

# 查看服务状态
systemctl status network

# 启用/禁用开机自启
systemctl enable network
systemctl disable network
  1. 配置示例:

基本配置(ifcfg-eth0):

# 静态 IP 配置
DEVICE=eth0
BOOTPROTO=static
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

# DHCP 配置
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

# 绑定网卡配置
DEVICE=bond0
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
  1. 特殊配置:

路由配置(route-eth0):

# 添加静态路由
10.0.0.0/24 via 192.168.1.1
172.16.0.0/16 via 192.168.1.254
  1. 故障排查:

    • 查看日志:journalctl -u network.service
    • 检查配置:service network status
    • 测试接口:ifdown eth0 && ifup eth0
    • 检查路由:ip route show
  2. 注意事项:

    • RHEL/CentOS 8+ 已弃用此服务
    • 建议迁移到 NetworkManager
    • 配置文件权限需要正确(600或644)
    • 修改配置后需要重启服务

选择建议

  1. 现代系统首选:

    • NetworkManager(nmcli/nmtui)
      • 功能最完整
      • 支持图形界面
      • 适合动态环境
  2. Ubuntu 新系统:

    • Netplan
      • 配置简单清晰
      • 向后兼容性好
      • 支持多后端切换
  3. 服务器环境:

    • 传统配置文件
      • 配置稳定
      • 适合静态环境
      • 便于脚本管理
  4. 特殊场景:

    • 容器环境:传统配置
    • 嵌入式系统:传统配置
    • 桌面环境:NetworkManager

配置优先级

工具间的优先级

  1. 高优先级:

    • systemd-networkd
    • NetworkManager
    • 这些现代工具会覆盖传统配置
  2. 中优先级:

    • Netplan(Ubuntu)
    • 作为配置抽象层,通过渲染器选择实际工具
  3. 低优先级:

    • 传统 interfaces 配置
    • networking 服务
    • 如果存在现代工具,这些配置可能被忽略

同一工具内的优先级

  1. NetworkManager:

    • 用户特定配置 > 系统配置
    • /etc/NetworkManager/system-connections/ > /usr/lib/NetworkManager/
    • 后导入的配置覆盖先导入的
  2. Netplan:

    • 按字母顺序加载配置文件
    • 编号更大的配置文件优先级更高
    • 例如:99-config.yaml > 01-config.yaml
  3. 传统配置:

    • interfaces:按文件中的顺序处理
    • networking 服务:按字母顺序加载
    • 后面的配置会覆盖前面的配置

配置冲突处理

  1. 多工具并存时:

    • 建议只使用一种工具管理网络
    • 禁用其他工具以避免冲突
    # 禁用 NetworkManager
    systemctl disable NetworkManager
    systemctl stop NetworkManager
    
    # 禁用 networking 服务
    systemctl disable networking
    systemctl stop networking
    
  2. 检查当前生效的配置:

    # 查看当前网络管理工具
    systemctl list-units | grep -E 'NetworkManager|networking|systemd-networkd'
    
    # 查看网络接口状态
    networkctl status
    

配置前准备

  1. 查看网络接口信息:
ip addr
# 或
ifconfig
  1. 确认当前网络配置:
# 查看当前网关
ip route show
# 查看 DNS 配置
cat /etc/resolv.conf

配置方法

方法一:NetworkManager 命令行配置(推荐)

# 查看所有网络连接
nmcli connection show

# 修改指定网络连接为静态 IP
nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4"

# 重启网络连接
nmcli connection down eth0
nmcli connection up eth0

方法二:NetworkManager TUI 配置(图形界面)

使用 nmtui 提供的文本用户界面进行配置:

  1. 安装 nmtui(如果未安装):
# Ubuntu/Debian
apt install network-manager

# CentOS/RHEL
yum install NetworkManager-tui
  1. 启动配置界面:
nmtui
  1. 在交互界面中:
    • 选择 "Edit a connection"
    • 选择要编辑的网络接口
    • 选择 "IPv4 CONFIGURATION"
    • 将 "Automatic" 改为 "Manual"
    • 添加 IP 地址、子网掩码和网关
    • 添加 DNS 服务器
    • 保存并退出

方法三:Netplan 配置(Ubuntu 17.10+ 推荐)

  1. 创建或编辑配置文件 /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd  # 或使用 NetworkManager
  ethernets:
    eth0:  # 替换为实际网卡名
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      dhcp4: no
  1. 应用配置:
# 测试配置
sudo netplan try

# 应用配置
sudo netplan apply

注意事项:

  • YAML 文件格式要求严格,注意缩进
  • 配置文件名应以 .yaml 结尾
  • 不同版本的 netplan 语法可能略有不同

方法四:通过配置文件(传统方式)

Ubuntu/Debian 系统

  1. 编辑 /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
  1. 重启网络服务:
systemctl restart networking

CentOS/RHEL 系统

  1. 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
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
  1. 重启网络服务:
systemctl restart network

验证配置

  1. 检查 IP 配置:
ip addr show eth0
  1. 测试网络连通性:
# 测试网关连通性
ping -c 4 192.168.1.1

# 测试外网连通性
ping -c 4 8.8.8.8
  1. 测试 DNS 解析:
nslookup www.baidu.com

常见问题

  1. IP 地址冲突

    • 使用 arping 检查 IP 是否被占用:
    arping -I eth0 192.168.1.100
    
  2. 网络配置不生效

    • 检查网络服务状态:
    systemctl status NetworkManager
    # 或
    systemctl status networking
    
    • 检查配置文件语法是否正确
    • 确保网络接口名称正确
  3. DNS 解析问题

    • 检查 /etc/resolv.conf 文件
    • 确保 DNS 服务器可访问

注意事项

  1. 配置前备份

    # 备份网络配置文件
    cp /etc/network/interfaces /etc/network/interfaces.bak
    
  2. 远程配置风险

    • 建议通过控制台或本地配置
    • 远程配置时保持一个备用会话
    • 配置错误可能导致网络中断
  3. 安全建议

    • 避免使用已被占用的 IP
    • 遵循网络管理员分配的 IP 段
    • 记录配置变更
0

评论区