Linux Network 如何配置及工作原理
文章简介:Linux Network 是如何使用及工作的
Linux Network 非常复杂,其本身的机制非常复杂,每一种 Linux 发行版的网络也有差别,管理工具也纷繁复杂。这里先简单的描述在 Centos7 和 Ubuntu20.04 下如何配置网络,后简单的描述一下 network 是怎样工作的.
- Centos6 使用 network.service
- Centos7 network.service 和 NetworkManager.service 并存
- Centos8 之后只使用 NetworkManager.service
- Ubuntu 使用 netplan 前端,NetworkManager/networkd 后端
Linux 网络设备
TODO: 网络设备架构
TODO: 网络接口命名
network.service 使用方法
修改 /etc/sysconfig/network-scripts
下的 ifcfg-*
文件,之后执行 service network restart
,配置即可生效。
注意: 网络配置修改可能会停掉当前的 ssh 连接
原理:
network.service 会执行 /etc/rc.d/init.d/network start
启动网络服务,启动的过程中,使用 ip 命令启动各 device,使用 route 配置系统路由,使用 sysctl 配置等。
NetworkNanager 使用方法
Managing IP Networking 包含优点及如何使用
D-Bus 的 unix socket: /var/run/dbus/system_bus_socket
udev 配置: /etc/udev/udev.conf
配置文件目录
- /etc/NetworkManager
- /etc/sysconfig/network-scripts
命令
|
|
|
|
我们可以使用 nmcli 配置网络,当出现错误的时候,通过 journalctl 查看日志,分析配置错误原因,继续使用 nmcli 配置网络,直到网络服务配置好.
NetworkNanager 工作原理
NetworkNanager 有两个组件:
- NetworkManager daemon, 管理连接和监听并报告网络变化
- 一些管理前端(front-ends), 比如 nmcli,一些 GUI 程序等
NetworkManager daemon 依赖于 D-Bus, 实现了管理连接的接口,底层使用 netlink 跟 linux 内核交互,获得设备信息,配置连接(比如修改 ipv4 的地址等)。nmcli 跟 D-Bus 交互连接 NetworkManager daemon,获得信息以及配置网络
|
|
TODO: 简单的 demo 使用 netlink 获得 ip 地址和配置 ip 地址 netlink-demo
NetworkNanager 和 network.service 如何并存
TODO:
netplan
The network configuration abstraction renderer
netplan 是一个方便在 linux 系统下配置网络的工具。我们通过 yaml 文件描述网络配置,netplan 会为我们生成我们选择的网络后端所需要的配置。当前支持后端 Systemd-networkd(default) 和 NetworkManager. Ubuntu 20.04 使用 netplan 作为网络配置工具.
配置文件在 ls /{lib,etc,run}/netplan/*.yaml
.
ls /etc/netplan
|
|
netplan 配置 dhcp 自动获取 ip
|
|
netplan 配置 static ip:
|
|
Name resolve
|
|
总结
网络配置最终都是跟内核用 netlink 沟通,告诉 linux 内核网络配置,由 kernel 生效并工作。用户态管理程序典型代表: NetworkManager 和 systemd-networkd。熟悉了这些,便有了手段指挥 linux kernel 网络如何工作。剩下的就需要我们慢慢了解和学习 linux 网络提供了哪些功能。