一步步教你设置 Ubuntu 静态IP – wiki基地


告别DHCP:一步步教你设置 Ubuntu 静态IP地址(超详细指南)

前言:为何需要静态IP?

在浩瀚无垠的网络世界中,IP地址是设备身份的标识,如同您家庭的邮政地址,确保信息能够准确无误地送达。大多数家用路由器和公共网络默认使用动态主机配置协议(DHCP)来自动分配IP地址。这种方式简单便捷,无需手动配置,插上网线即可上网。然而,对于某些特定的应用场景,动态IP地址的便捷性却可能成为障碍。

想象一下以下几种情况:

  1. 服务器或服务主机: 如果您正在运行一个网站服务器、数据库服务器、NAS(网络附加存储)设备、监控系统、或者任何需要外部稳定访问的服务,一个频繁变动的IP地址将是灾难性的。每次IP地址变化,您都需要重新配置端口转发、DNS记录或其他外部访问设置。静态IP地址保证了服务地址的固定不变,让您的服务始终在线,易于访问。
  2. 端口转发与内网穿透: 当您需要从外部网络访问家庭或办公室内部的特定设备(如远程桌面、游戏服务器、监控摄像头)时,通常需要在路由器上设置端口转发规则。这些规则是基于设备的IP地址来设定的。如果设备的IP地址经常变化,端口转发规则将失效,导致无法访问。
  3. DNS解析: 如果您希望通过一个自定义的域名(例如 myprinter.local)来访问内网设备,您通常需要配置内部DNS服务器或修改 /etc/hosts 文件。这些配置同样依赖于稳定的IP地址。
  4. 网络诊断与管理: 拥有固定的IP地址,可以更方便地进行网络故障排除、通过SSH远程管理,或者在复杂的网络环境中进行设备识别。
  5. 特定网络设备的依赖: 某些网络设备(如旧式打印机、网络存储设备等)可能需要指定特定的静态IP地址才能正常工作。

因此,对于那些需要稳定网络身份的Ubuntu系统(无论是桌面版还是服务器版),设置静态IP地址是必不可少的一步。本文将详细、一步步地指导您如何在Ubuntu系统上配置静态IP,主要关注目前Ubuntu推荐的Netplan配置方式,同时也会提及传统方式和桌面环境下的图形界面配置方法,并提供详尽的故障排除指南。

准备工作:知己知彼,百战不殆

在您开始修改网络配置之前,请务必收集以下关键信息。这些信息通常可以在您的路由器管理界面中找到,或者咨询您的网络管理员。

  1. 网络接口名称(Interface Name): 您的Ubuntu系统连接网络的网卡名称。常见的有 eth0ens33enp0s3 等。
  2. 期望的静态IP地址(Static IP Address): 您希望为您的Ubuntu系统分配的固定IP地址。请确保这个IP地址在您的局域网范围内,并且没有被其他设备占用。例如:192.168.1.100
  3. 子网掩码(Subnet Mask): 用于划分IP地址网络部分和主机部分的掩码。通常以CIDR(无类别域间路由)表示法 /24(对应 255.255.255.0)或传统的点分十进制表示。例如:255.255.255.0/24
  4. 默认网关(Default Gateway): 您的路由器在局域网中的IP地址,所有发往外部网络的流量都会经过它。例如:192.168.1.1
  5. DNS服务器地址(DNS Server Addresses): 域名系统服务器的IP地址,用于将域名(如 www.google.com)解析为IP地址。您可以选择使用路由器的IP地址作为DNS服务器(如果路由器提供DNS转发服务),也可以使用公共DNS服务器,如Google DNS (8.8.8.8, 8.8.4.4)、Cloudflare DNS (1.1.1.1, 1.0.0.1) 或国内的公共DNS服务器。建议至少提供两个,以备用。

如何获取现有网络信息?
在终端中执行以下命令可以帮助您获取当前网络配置:

  • 查看IP地址、子网掩码和网络接口名称:
    bash
    ip a
    # 或者(如果安装了net-tools)
    ifconfig

    在输出中,找到您的网络接口(通常是 ethernet 类型,名称如 ens33enp0s3 等),在其下方会显示当前的IP地址(inet 后面)、广播地址和子网掩码。
  • 查看默认网关:
    bash
    ip r
    # 或者
    route -n

    查找以 default 开头的那一行,其 gateway 列就是您的默认网关地址。
  • 查看当前DNS服务器:
    bash
    cat /etc/resolv.conf

    nameserver 后面的地址就是当前使用的DNS服务器。

示例信息(请根据您的实际网络情况替换):

  • 网络接口名称: ens33 (请务必用您自己的接口名称替换)
  • 期望的静态IP地址: 192.168.1.100
  • 子网掩码: /24 (对应 255.255.255.0)
  • 默认网关: 192.168.1.1
  • DNS服务器: 192.168.1.1 (路由器地址) 和 8.8.8.8 (Google DNS)

方法一:使用Netplan(Ubuntu 17.10及更高版本推荐)

Netplan 是 Ubuntu 17.10 引入的一种新的网络配置抽象层。它使用 YAML 格式的文件来描述网络配置,然后由后端(如 NetworkManager 或 systemd-networkd)来实现这些配置。这是目前Ubuntu服务器版和大部分桌面版默认且推荐的配置方式。

步骤 1:备份现有Netplan配置文件

在进行任何修改之前,始终建议备份您的原始配置文件。这能让您在出现问题时轻松恢复。

打开终端(Ctrl + Alt + T)并执行:

bash
sudo cp /etc/netplan/*.yaml /etc/netplan/backup_$(date +%Y%m%d%H%M%S).yaml

这条命令会将 /etc/netplan/ 目录下所有以 .yaml 结尾的文件复制一份,并加上当前日期和时间戳作为后缀,以防万一。通常,您会看到一个名为 00-installer-config.yaml50-cloud-init.yaml 的文件。

步骤 2:识别您的网络接口名称

如前所述,使用 ip a 命令来确认您的网络接口名称。例如,您可能会看到如下输出,其中 ens33 是您的以太网接口:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:ab:cd:ef brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic ens33
valid_lft 2649sec preferred_lft 2649sec
inet6 fe80::20c:29ff:feab:cdef/64 scope link
valid_lft forever preferred_lft forever

在本例中,您的接口名称是 ens33。请务必记住这个名称,它将在下一步中使用。

步骤 3:编辑Netplan配置文件

使用您喜欢的文本编辑器(如 nanovim)打开 Netplan 配置文件。通常是 /etc/netplan/00-installer-config.yaml 或类似的名称。如果您不确定是哪个文件,可以查看 /etc/netplan/ 目录下唯一或主要的一个。

bash
sudo nano /etc/netplan/00-installer-config.yaml

打开文件后,您可能会看到类似如下的内容(DHCP 配置):

“`yaml

This is the network config written by ‘subiquity’

network:
ethernets:
ens33:
dhcp4: true
version: 2
“`

现在,我们将修改它以配置静态IP。请注意 YAML 文件的缩进非常重要,使用空格而不是 Tab 键。

将其修改为以下内容(请根据您准备工作中收集的信息替换IP地址、网关、DNS服务器和接口名称):

“`yaml

This is the network config written by ‘subiquity’

network:
ethernets:
ens33: # <— 替换为您的网络接口名称
dhcp4: no # 关闭 DHCPv4
addresses: [192.168.1.100/24] # <— 您的静态IP地址和子网掩码(CIDR格式)
gateway4: 192.168.1.1 # <— 您的默认网关地址
nameservers:
addresses: [192.168.1.1, 8.8.8.8] # <— 您的DNS服务器地址列表
version: 2
“`

配置详解:

  • network::顶层键,表示网络配置。
  • ethernets::定义以太网接口的配置。
  • ens33::您的网络接口名称。
  • dhcp4: no:禁用IPv4的DHCP自动配置,强制使用手动配置。
  • addresses: [192.168.1.100/24]:这是一个列表,包含您为该接口分配的静态IP地址和子网掩码。/24 表示子网掩码是 255.255.255.0。如果您有多个IP地址,可以列出多个,如 [192.168.1.100/24, 192.168.1.101/24]
  • gateway4: 192.168.1.1:指定IPv4的默认网关。
  • nameservers::DNS服务器配置。
    • addresses: [192.168.1.1, 8.8.8.8]:DNS服务器的IP地址列表。建议至少填写两个,以提供冗余。
    • search: [example.com, mydomain.local] (可选):用于DNS解析的域名后缀列表。当您尝试访问一个不带完整域名的主机名时,系统会自动尝试添加这些后缀。例如,如果您输入 server,它会尝试解析 server.example.com

保存并关闭文件(在 nano 中按 Ctrl + O,回车,然后 Ctrl + X)。

步骤 4:测试并应用Netplan配置

在应用配置之前,Netplan 提供了一个“试运行”模式,这非常有用,因为它会在应用更改后等待用户确认,如果网络连接中断,它会自动回滚到之前的配置。

bash
sudo netplan try

执行此命令后,Netplan 会尝试应用新的配置。如果一切正常,它会提示您“Do you want to keep these changes? Press ENTER to accept or CTRL+C to revert.”(您是否要保留这些更改?按回车键接受或按 Ctrl+C 恢复)。

请注意:sudo netplan try 执行后,您的网络连接可能会暂时中断几秒钟,然后恢复。在您确认网络连接正常(例如,可以 ping 通网关或外部网站)后,再按 Enter 键确认。如果在 try 模式下出现问题,或者您没有在指定时间内按 Enter,Netplan 会自动回滚到之前的配置,从而避免系统失去网络连接的风险。

如果您对 netplan try 模式不熟悉或确定配置无误,可以直接应用更改:

bash
sudo netplan apply

步骤 5:验证网络配置

配置应用后,务必验证您的新IP地址和网络连接是否正常。

  • 检查IP地址:
    bash
    ip a

    确认您的网络接口 ens33 (或其他名称)下方显示的 inet 地址是否为您设置的静态IP地址。
  • 检查默认网关:
    bash
    ip r

    确认 default via 后面的IP地址是否是您的网关地址。
  • 检查DNS解析:
    bash
    cat /etc/resolv.conf

    确认 nameserver 后面的IP地址是您配置的DNS服务器。
    然后,尝试 ping 一个域名来测试DNS解析和网络连通性:
    bash
    ping google.com -c 4

    如果能够收到回复,说明DNS解析和网络连接都正常。
  • 测试外部连接:
    bash
    ping 8.8.8.8 -c 4

    如果能够 ping 通一个外部IP地址,说明您的网络路径是通畅的。

至此,您已经成功在Ubuntu上使用Netplan配置了静态IP地址。

方法二:使用 /etc/network/interfaces(传统方法,较旧版本或特殊需求)

在 Netplan 成为 Ubuntu 默认网络配置工具之前,ifupdown 工具集通过编辑 /etc/network/interfaces 文件来管理网络。尽管 Netplan 现在是首选,但某些旧版本或特定的最小化安装可能仍在使用这种方式,了解它仍有价值。

重要提示: 请勿同时使用 Netplan 和 /etc/network/interfaces 来管理同一个网络接口。如果 Netplan 正在管理您的接口,那么 /etc/network/interfaces 的配置可能会被忽略或导致冲突。通常,如果 Netplan 文件存在并包含该接口的配置,Netplan 会优先。如果您决定使用此方法,请确保 Netplan 没有管理该接口。在某些情况下,您可能需要禁用或删除 Netplan 配置文件,并确保 NetworkManager 也未接管。

步骤 1:备份现有配置文件

bash
sudo cp /etc/network/interfaces /etc/network/interfaces.backup_$(date +%Y%m%d%H%M%S)

步骤 2:编辑 /etc/network/interfaces 文件

使用文本编辑器打开该文件:

bash
sudo nano /etc/network/interfaces

默认情况下,您可能会看到类似如下内容:

“`

The loopback network interface

auto lo
iface lo inet loopback

The primary network interface

auto ens33

iface ens33 inet dhcp

“`

将其修改为静态IP配置(同样,请替换为您的实际信息):

“`

The loopback network interface

auto lo
iface lo inet loopback

The primary network interface

auto ens33 # <— 替换为您的网络接口名称
iface ens33 inet static # 设置为静态IP
address 192.168.1.100 # <— 您的静态IP地址
netmask 255.255.255.0 # <— 您的子网掩码
gateway 192.168.1.1 # <— 您的默认网关
dns-nameservers 192.168.1.1 8.8.8.8 # <— 您的DNS服务器地址列表
dns-search example.com mydomain.local # (可选) DNS搜索域
“`

保存并关闭文件。

步骤 3:应用网络配置

应用更改的最常见方法是重启网络服务。

bash
sudo systemctl restart networking

或者,您也可以尝试禁用再启用网络接口(这可能导致SSH连接暂时中断):

bash
sudo ifdown ens33 && sudo ifup ens33

(将 ens33 替换为您的接口名称)

步骤 4:验证网络配置

使用与Netplan相同的方法验证网络连接:

  • ip a
  • ip r
  • cat /etc/resolv.conf
  • ping google.com
  • ping 8.8.8.8

方法三:使用图形界面(Ubuntu Desktop)

对于使用Ubuntu桌面环境的用户,NetworkManager 提供了直观的图形界面来配置网络设置。

  1. 打开网络设置:

    • 点击屏幕右上角的网络图标(通常是无线或有线连接图标)。
    • 选择“设置”(Settings)。
    • 在左侧导航栏中,点击“网络”(Network)。
  2. 选择您的网络连接:

    • 在“网络”设置页面,找到您正在使用的有线连接(或无线连接,如果需要)。
    • 点击该连接旁边的齿轮图标(设置)。
  3. 配置IPv4设置:

    • 在弹出的窗口中,选择“IPv4”选项卡。
    • 将“IPv4 方法”(IPv4 Method)从“自动 (DHCP)”改为“手动”(Manual)。
    • 在“地址”(Addresses)部分,点击“添加”(+)按钮。
    • 地址: 输入您的静态IP地址 (例如 192.168.1.100)。
    • 网络掩码: 输入您的子网掩码 (例如 255.255.255.024)。
    • 网关: 输入您的默认网关地址 (例如 192.168.1.1)。
    • DNS: 输入您的DNS服务器地址,多个地址用逗号分隔 (例如 192.168.1.1, 8.8.8.8)。
    • 搜索域 (Search domains): (可选) 输入域名后缀,多个用逗号分隔。
  4. 应用设置:

    • 点击右下角的“应用”(Apply)按钮。
    • 您的网络连接可能会暂时断开并重新连接。
  5. 验证:

    • 通过浏览器访问网站,或者打开终端执行 ping google.com 来验证网络连接。
    • 您也可以在终端中使用 ip aip r 来确认新的IP地址和网关。

故障排除:当事情不按计划进行时

在配置网络时,可能会遇到各种问题。以下是一些常见的故障排除步骤和命令。

  1. 检查配置文件语法错误:

    • Netplan: YAML文件对缩进和语法非常敏感。任何小的错误都可能导致配置失败。使用 sudo netplan --debug apply 可以获得更详细的错误信息。常见的错误包括:
      • 缩进不正确(混用空格和Tab键,或缩进层级不对)。
      • 冒号 : 或方括号 [] 缺失。
      • dhcp4: no 写成 dhcp4: false (虽然 false 也是合法的,但 no 更常见)。
      • IP地址格式错误(例如 192.168.1.100/255.255.255.0 而不是 192.168.1.100/24)。
    • /etc/network/interfaces 检查拼写错误,确保 addressnetmaskgatewaydns-nameservers 等关键字拼写正确。
  2. 检查网络接口名称: 确保您在配置文件中使用的接口名称与 ip a 命令输出的名称完全匹配。例如 ens33enp0s3 是不同的。

  3. 重启网络服务: 有时,仅应用配置可能不足以让所有更改生效。彻底重启网络服务或系统可能解决问题。

    • Netplan: sudo netplan applysudo systemctl restart systemd-networkd (如果后端是 systemd-networkd)。
    • Legacy: sudo systemctl restart networking
    • NetworkManager (GUI/CLI): sudo systemctl restart NetworkManager
    • 最粗暴但有效: 重启整个系统 sudo reboot
  4. 检查IP地址冲突:

    • 如果您设置的静态IP地址已经被网络中的其他设备使用,就会发生IP地址冲突,导致两台设备都无法正常上网。
    • 在路由器管理界面检查DHCP客户端列表,确保您选择的静态IP地址不在DHCP分配范围内,最好设置在DHCP池之外,或者在DHCP服务器上为您的设备的MAC地址做IP地址预留。
    • 您可以使用 arping <your_static_ip> 命令(可能需要 sudo apt install iputils-arping)来检测网络中是否有其他设备响应您的静态IP。
  5. 检查网关和DNS配置:

    • 无法访问外部网络但能访问内网: 这通常是网关配置错误或DNS配置错误导致的。
      • 首先 ping 您的网关地址(例如 ping 192.168.1.1)。如果能通,说明本地网络连接正常。
      • 然后 ping 一个外部IP地址(例如 ping 8.8.8.8)。如果能通但 ping google.com 不通,则很可能是DNS配置问题。
      • 检查 cat /etc/resolv.conf 确保 DNS 服务器正确。
      • 尝试使用 dig google.com @8.8.8.8 来测试特定DNS服务器的解析能力。
    • 检查路由表: ip r 命令显示了您的路由表。确保有一条指向您的网关的默认路由(default via <gateway_ip>)。
  6. 防火墙问题:

    • Ubuntu 默认安装并启用 UFW (Uncomplicated Firewall)。如果配置不当,防火墙可能会阻止网络流量。
    • 检查 UFW 状态:sudo ufw status
    • 如果 UFW 是活动的并且您不确定规则,可以暂时禁用它进行测试:sudo ufw disable(请注意:测试后务必重新启用并配置好防火墙规则)
  7. 网络接口状态:

    • 确保网络接口处于“UP”状态:ip aifconfig。如果显示“DOWN”,尝试 sudo ip link set ens33 up(将 ens33 替换为您的接口名称)。
  8. 查看系统日志:

    • 系统日志可以提供关于网络服务启动、停止和错误的信息。
    • journalctl -u systemd-networkd (适用于 Netplan 和 systemd-networkd 后端)
    • journalctl -u networking (适用于 /etc/network/interfaces 后端)
    • journalctl -u NetworkManager (适用于 NetworkManager 后端)
    • dmesg | grep ethdmesg | grep ens (查看内核级别的网卡信息)

最佳实践与注意事项

  1. 备份是王道: 永远在修改任何关键系统文件之前进行备份。
  2. 避免IP地址冲突: 在设置静态IP之前,确保您选择的IP地址没有被其他设备使用,并且最好在路由器的DHCP分配范围之外。您也可以在路由器上为该设备的MAC地址配置DHCP保留,这样它每次都会获得相同的IP地址,达到类似静态IP的效果,但由DHCP服务器管理。
  3. 记录配置: 将您的静态IP配置信息(IP地址、子网掩码、网关、DNS)记录在一个安全的地方,以便将来参考或故障排除。
  4. 先测试,后生产: 如果可能,在非生产环境中(例如虚拟机)测试您的配置更改,以避免影响关键服务。
  5. 保持一致性: 如果您的网络中有多个设备需要静态IP,请采用一致的命名和IP地址分配策略(例如,服务器使用 .100-.150,网络设备使用 .151-.200)。
  6. 理解子网掩码: /24 意味着 255.255.255.0,这意味着您的网络有254个可用的IP地址(192.168.1.1192.168.1.254,排除网络地址和广播地址)。对于小型家庭网络,/24 通常是足够的。
  7. 选择可靠的DNS服务器: 除了路由器的DNS,考虑使用公共且可靠的DNS服务,如Google DNS (8.8.8.8, 8.8.4.4) 或 Cloudflare DNS (1.1.1.1, 1.0.0.1),它们通常响应更快,解析更稳定。
  8. 考虑IPv6: 如果您的网络支持IPv6,并且您希望配置静态IPv6地址,Netplan 和 /etc/network/interfaces 也提供了相应的选项(addresses: 列表中的IPv6地址,gateway6:)。

总结

设置 Ubuntu 系统的静态 IP 地址是网络管理中的一个基础但关键的步骤,尤其对于服务器、NAS 或任何需要稳定网络身份的设备而言。通过本文的详细指导,您应该已经掌握了在 Netplan(推荐)、传统 /etc/network/interfaces 以及桌面图形界面下配置静态 IP 的方法。

记住,成功的关键在于充分的准备(收集正确的网络信息)、细致的配置(注意 YAML 缩进和参数拼写)、以及严谨的验证。当遇到问题时,请按照故障排除指南一步步排查,系统日志将是您最好的朋友。

希望这篇详尽的指南能帮助您顺利配置 Ubuntu 静态 IP,让您的系统在网络中拥有一个稳定而坚实的“家”!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部