网络是服务器管理的一个基本方面,尤其是在使用 Ubuntu Server 时。无论你是在云环境中搭建服务器,还是在管理本地基础设施,了解如何配置网络接口、分配静态 IP 地址、管理网络服务和排查连接问题都至关重要。在本指南中,我们将介绍 Ubuntu Server 网络的基础知识,包括使用Netplan(Ubuntu 22.04 中的默认网络配置工具)、处理cloud-init 生成的配置、管理网络服务以及排查常见问题。
上一篇文章:
01. Ubuntu Server 简介 – SysOSX: AI & Cloud
02. 如何搭建你的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud
03. 掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud
04. Ubuntu Server 用户与权限管理:全面指南 – SysOSX: AI & Cloud
1. Ubuntu Server 网络简介
Ubuntu Server 使用Netplan作为其默认网络配置工具(自 Ubuntu 17.10 起)。Netplan 简化了使用 YAML 文件定义网络配置的过程。在 Ubuntu Server 22.04 中,systemd-networkd是管理网络的默认后端服务,而NetworkManager通常用于桌面环境或需要高级网络管理的特定服务器配置。
默认网络后端
- Ubuntu Server 22.04:使用systemd-networkd作为默认网络服务。
- Ubuntu Desktop 22.04:使用NetworkManager作为默认网络服务。
如果你使用的是 Ubuntu Desktop,或者已在 Ubuntu Server 上手动安装了NetworkManager,可以使用它管理网络接口。但是,NetworkManager默认情况下并未安装在 Ubuntu Server 版本中。
2. 使用 Netplan 配置网络接口(Cloud-Init 更新)
在云环境中,Netplan 配置文件通常名为/etc/netplan/50-cloud-init.yaml。此文件由cloud-init生成;除非禁用 cloud-init 的网络配置功能,否则对它的更改在实例重启后不会保留。
禁用 Cloud-Init 网络配置
要禁用 cloud-init 的网络配置功能,请在以下位置创建文件/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg:
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
添加以下内容:
network: {config: disabled}
禁用 cloud-init 的网络配置后,你可以手动创建和管理持久的 Netplan 配置文件。
示例:使用 Netplan 配置静态 IP 地址
如果你的 Netplan 配置文件是/etc/netplan/50-cloud-init.yaml,你可以直接修改它或创建新的配置文件(例如,/etc/netplan/01-netcfg.yaml),以实现持久设置。
- 打开 Netplan 配置文件:
sudo nano /etc/netplan/50-cloud-init.yaml
- 修改内容以设置静态 IP 地址:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
eth0:将其替换为你的网络接口名称(使用ip a列出接口)。addresses:分配静态 IP 地址。routes:to: default:指定默认路由。via: 192.168.1.1:定义网关地址。
nameservers:指定 DNS 服务器。
- 应用配置:
sudo netplan apply
- 验证配置:
ip a
3. 设置静态 IP 地址
虽然 Netplan 是推荐的工具,但你也可以在/etc/network/interfaces(用于较旧的 Ubuntu 版本)中手动配置静态 IP 地址,或通过命令行工具进行配置。
使用ip命令
ip命令是管理网络接口的多功能工具。下面是临时分配静态 IP 地址的示例:
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
ip addr add: 为网络接口分配 IP 地址。ip route add:设置默认网关。
注意:这些更改是临时的,重启后会丢失。持久配置请使用 Netplan。
4. 管理网络服务
Ubuntu 使用systemd-networkd作为服务器环境的默认网络服务。有效管理此服务对于确保稳定的网络连接至关重要。
检查网络服务的状态
要检查网络服务的状态,请使用以下命令:
sudo systemctl status systemd-networkd
这将显示当前状态以及与systemd-networkd服务相关的任何错误。
重启网络服务
如果在更改配置后需要重启网络服务:
sudo systemctl restart systemd-networkd
启用或禁用网络服务
要使网络服务在启动时自动启动,请启用它:
sudo systemctl enable systemd-networkd
要禁用网络服务:
sudo systemctl disable systemd-networkd
使用 NetworkManager(可选)
如果你使用的是NetworkManager而不是systemd-networkd,可以按如下方式管理该服务:
- 检查状态:
sudo systemctl status NetworkManager
- 重启服务:
sudo systemctl restart NetworkManager
- 启用或禁用 NetworkManager:
sudo systemctl enable NetworkManager
sudo systemctl disable NetworkManager
5. Netplan 中的已知问题和警告
在 Ubuntu 22.04 服务器上使用 Netplan 配置静态 IP 时,你可能会遇到以下警告:
警告:Cannot call Open vSwitch: ovsdb-server.service is not running
出现此警告是因为 Netplan 尝试检测 Open vSwitch,这是一种常用于云环境和虚拟化环境的虚拟网络交换机。如果未安装 Open vSwitch,Netplan 会产生此警告。
解决警告
如果你不使用 Open vSwitch,可以安全地忽略此警告。但是,要消除它,可以安装openvswitch-switch-dpdk软件包,它提供 Open vSwitch 所需的组件。
运行以下命令:
sudo apt install openvswitch-switch-dpdk
安装后,Netplan 将检测到 Open vSwitch 的存在并停止产生警告。
已知错误参考
此问题已正式报告为 Netplan 中的错误。
https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/2041727
6. 网络管理命令行工具
Ubuntu 提供了多种用于管理和排查网络配置的工具。以下是一些最常用的工具:
6.1 ip 命令
ip命令取代了较旧的ifconfig工具,功能更强大、更灵活。
- 查看网络接口:
ip a - 检查路由:
ip route - 启用/禁用接口:
sudo ip link set eth0 up
sudo ip link set eth0 down
6.2 ping 命令
ping命令用于测试与另一台主机的连接。
ping google.com
6.3 traceroute 命令
traceroute命令用于识别到达目标的网络路径。
sudo apt install traceroute
traceroute google.com
6.4 Curl 命令
curl命令用于测试 HTTP 连接。
curl http://example.com
7. 排查常见网络问题
网络问题在服务器环境中很常见。以下是一些场景和排查步骤:
场景 1:网络接口无法工作
- 检查接口的状态:
ip a
- 启用接口:
sudo ip link set eth0 up
场景 2:无法 Ping 外部主机
- 验证默认网关:
ip route - 检查 DNS 解析:
nslookup google.com如果 DNS 无法解析,请更新 Netplan 配置中的域名服务器。
场景 3:Netplan 配置问题
- 验证 Netplan YAML 文件:
sudo netplan try这会在不永久应用配置的情况下测试配置。 - 重新应用配置:
sudo netplan apply
场景 4:检查网络服务
如果网络连接问题仍然存在,请检查网络服务的状态:
sudo systemctl status systemd-networkd
如果报告了错误,请重启服务:
sudo systemctl restart systemd-networkd
场景 5:防火墙阻止流量
- 检查防火墙规则:
sudo ufw status
- 允许必要的流量:
sudo ufw allow 22/tcp sudo ufw allow 80/tcp
场景 6:数据包丢失或延迟问题
- 使用
ping检查数据包丢失:
ping -c 10 google.com
- 使用
traceroute识别网络瓶颈:
traceroute google.com
8. 结论
网络是 Ubuntu Server 管理员的一项关键技能。本指南介绍了配置网络接口、管理网络服务、处理 Netplan 警告、设置静态 IP、使用命令行工具和排查常见问题的基础知识。通过掌握 Netplan、ip和ping等工具,你可以高效地管理和解决服务器上与网络相关的挑战。
如需进一步阅读,请参阅 Ubuntu 官方文档中关于Netplan和网络基础.
后续步骤:修补、软件包管理和安全
在本系列的下一部分中,我们将深入探讨 Ubuntu Server 管理的关键方面,重点关注修补、软件包管理和安全。这些主题对于维护安全、稳定、高效的服务器环境至关重要。
1. 安装和管理软件
掌握在 Ubuntu Server 上使用apt和其他软件包管理工具安装、更新和管理软件的基础知识。学习如何高效地管理依赖项和仓库,以确保服务器配备必要的软件。
2. 修补和更新 Ubuntu Server
- 为什么修补对于安全和稳定性至关重要。
- 使用apt更新和升级服务器。
- 理解以下命令之间的区别:apt update, apt upgrade和apt full-upgrade.
- 实现更新自动化,使用unattended-upgrades.
- 处理内核更新并优雅重启,借助reboot-required.
3. 保护你的 Ubuntu Server
- 保护服务器的实用步骤,包括配置防火墙(ufw)、安全地设置 SSH,以及使用fail2ban等工具来防范攻击。
- 学习如何加固服务器以防范漏洞和未授权访问。
4. Ubuntu Server 上的审计和日志记录
- 系统审计简介和日志的重要性。
- 使用auditd跟踪和记录系统事件。
- 配置日志轮转,使用logrotate.
- 监控
/var/log目录中的关键事件,以确保主动进行服务器管理。
4 thoughts on “05. Networking Basics for Ubuntu Server: A Comprehensive Guide”