Linux中网络管理器用法速查手册
作者:扛枪的书生
前言
在 Windows 系统中配置网卡的 IP 等参数非常的方便,但在 Linux 命令行界面下配置网卡参数却显得困难重重。而这困难的原因:一方面是因为 Linux 的网络管理器版本较多且用法各异,另一方面则是因为不同的 Linux 发行版所采用的网络管理器大都不尽相同。于是在这两个原因的共同作用下,变更 Linux 网卡的 IP 竟成了我的心魔,为了使得念头通达,遂决定整理此文以除心魔
1、ip/ifconfig
工具介绍:通过命令执行的方式直接管理网卡,优点就是快、参数立即生效,缺点就是重启系统参数全丢又需要重新配置。
配置文件:无
动态 IP:
# 借助 ifconfig 配置网卡 ifconfig eth0 0.0.0.0 # 1. 释放并清空网卡当前的 IP dhclient eth0 # 2. 调用 dhclient 协议向网络索要 IP # 借助 ip 配置网卡 ip addr flush dev eth0 # 1. 释放并清空网卡当前的 IP dhclient eth0 # 2. 调用 dhclient 协议向网络索要 IP
静态 IP:
# 借助 ifconfig 配置网卡 ifconfig eth0 192.168.1.100 netmask 255.255.255.0 # 同时配置 IP 和 子网掩码 route add default gw 192.168.1.1 eth0 # 配置默认网关(ifconfig 自身不能配网关,必须借助 route 命令) # 借助 ip 配置网卡 ip addr add 192.168.1.100/24 dev eth0 # 同时配置 IP 和 子网掩码 ip route add default via 192.168.1.1 dev eth0 # 配置默认网关(ip 自身不能配网关,必须借助 route 命令)
启停命令:
# 借助 ifconfig 启停网卡 ifconfig eth0 up # 启动网卡 ifconfig eth0 down # 关闭网卡 # 借助 ip 启停网卡 ip link set eth0 up # 启动网卡 ip link set eth0 down # 关闭网卡
2、ifcfg
工具介绍:通过脚本解析配置文件的方式管理网卡,每一个网卡均对应着一个文件,配置文件简单易读。
配置文件:
/etc/sysconfig/
├── network <-- 全局网络配置文件(如主机名、全局网关)
└── network-scripts/ <-- ifcfg 机制的核心目录(最重要)
├── ifcfg-eth0 <-- 网卡 eth0 的具体配置文件(核心)
├── ifcfg-lo <-- 本地环回接口的配置文件
├── ifdown -> ./ifdown-eth <-- 符号链接,指向具体的关闭脚本
├── ifdown-eth <-- 关闭以太网卡的底层脚本
├── ifdown-post <-- 网卡关闭后执行的清理脚本
├── ifup -> ./ifup-eth <-- 符号链接,指向具体的启动脚本
├── ifup-eth <-- 启动以太网卡的底层脚本
└── ifup-post <-- 网卡启动后执行的后处理脚本动态 IP:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp
静态 IP:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=1.1.1.1
启停命令:
# 启动单个网卡 ifup eth0 # 关闭单个网卡 ifdown eth0 # 重启整个网络的所有网卡 /etc/init.d/network restart
3、ifupdown
工具介绍:通过脚本解析配置文件的方式管理网卡,可以通过一个文件集中管理所有网卡的配置信息,也可以分割开来单独管理,灵活性较高。【注:可以将其看作是 ifcfg 的升级版,因为两者的区别仅仅在于配置文件参数格式的不同,启停网卡以及目录结构上都非常的相像。】
目录结构:
/etc/network/ ├── interfaces <-- 主配置文件(核心) ├── interfaces.d/ <-- 用户自定义子配置目录(常用于模块化管理) │ ├── eth0 │ └── wlan0 ├── if-pre-up.d/ <-- 网卡激活前,自动执行的脚本目录 ├── if-up.d/ <-- 网卡激活后,自动执行的脚本目录 ├── if-down.d/ <-- 网卡关闭前,自动执行的脚本目录 └── if-post-down.d/ <-- 网卡关闭后,自动执行的脚本目录
注:一定要检查 /etc/network/interfaces 文件中是否包含 source /etc/network/interfaces.d/*,否则 interfaces.d 目录下的配置不生效。
动态 IP:
# cat /etc/network/interfaces.d/eth0 auto eth0 iface eth0 inet dhcp
静态 IP:
# cat /etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
启停命令:
# 启动单个网卡 ifup eth0 # 关闭单个网卡 ifdown eth0 # 重启整个网络的所有网卡 /etc/init.d/networking restart
4、NetworkManager
工具介绍:以服务的方式管理网卡,基于此服务还可配合多种工具去管理网卡,如配套的 nmcli、nmtui、或 netplan、或直接修改 /etc/NetworkManager/system-connections/eth0.nmconnection 的方式去管理网卡。
配置文件:
/etc/NetworkManager/ ├── NetworkManager.conf <-- 主配置文件(控制守护进程自身的行为) ├── conf.d/ <-- 主配置子的补充目录(用于模块化修改主配置) │ └── 90-dns-none.conf ├── dispatcher.d/ <-- 事件网络脚本目录(类似于 ifupdown的 if-up.d) │ ├── 01-ifupdown │ └── pre-up.d/ ├── system-connections/ <-- 核心:存放所有网络连接配置文件(最重要) │ ├── eth0.nmconnection │ └── MyWiFi.nmconnection └── dnsmasq.d/ <-- 供内置 dnsmasq 插件使用的配置目录(可选)
动态 IP:
# cat /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=auto
静态 IP:
# cat /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=static-eth0 type=ethernet interface-name=eth0 [ipv4] method=manual addresses=192.168.1.100/24 gateway=192.168.1.1 dns=8.8.8.8;1.1.1.1;
启停命令:
# 启动单个网卡 nmcli device connect eth0 nmcli connection up id "Wired connection 1" # 关闭单个网卡 nmcli device disconnect eth0 nmcli connection down id "Wired connection 1" # 列出网卡名称 nmcli connection show # 亦可通过一行命令永久更改网卡 ip nmcli connection modify "Wired" ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.254 ipv4.dns 8.8.8.8 # 重启整个网络的所有网卡 systemctl restart NetworkManager # TUI 可视化的管理网卡 nmtui
5、systemd-networkd
工具介绍:以服务的方式管理网卡,默认有关 新增网卡、配置 ip、配置路由 都是通过创建相应的配置文件来实现的。
配置文件:
/
├── lib/systemd/network/ <-- 1. 系统/发行版默认配置(优先级最低)
│ ├── 80-container-host0.network
│ └── 99-default.link
│
├── run/systemd/network/ <-- 2. 动态运行时配置(优先级中,临时有效)
│ └── 50-cloud-init.network
│
└── etc/systemd/network/ <-- 3. 管理员自定义配置(优先级最高,最重要)
├── 10-eth0.network <-- 配置网卡 IP/路由(最常用)
├── 20-bond0.netdev <-- 创建虚拟网络设备(如网桥、Bond)
└── 99-default.link <-- 配置网卡命名规则/MAC地址(可选)动态 IP:
# cat /etc/systemd/network/10-eth0.network [Match] Name=eth0 [Network] DHCP=ipv4
静态 IP:
# cat /etc/systemd/network/10-eth0.network [Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 DNS=114.114.114.114
启停命令:
# 重启服务以使配置生效 systemctl restart systemd-networkd # 查看网卡状态 networkctl status eth0
6、netplan
工具介绍:该工具本身不直接管理网卡,它只是为后端服务(systemd-networkd 和 NetworkManager)提供了一个统一的配置语法而已,相当于是 后端服务的网卡配置生成器。
配置文件:
/
├── lib/netplan/ <-- 1. 系统/发行版默认配置(优先级最低)
│ └── 00-default-nm-renderer.yaml
│
├── run/netplan/ <-- 2. 运行时临时生成的配置(优先级中)
│ └── 10-cloud-init-config.yaml
│
└── etc/netplan/ <-- 3. 管理员自定义配置目录(优先级最高,最重要)
├── 01-network-manager-all.yaml
└── 50-cloud-init.yaml动态 IP:
# cat /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
注意:renderer 目前可选的参数只有 networkd 和 NetworkManager,它们分别对应 systemd-networkd 服务和 NetworkManager 服务。
静态 IP:
# cat /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
启停命令:
# 应用配置文件中的修改 netplan apply
7、杂项
(1)这 6 类网络管理器的分层结构、演进过程。
##### (1)分层结构 #####
┌────────────────────────────┐
│ 6. Netplan(配置抽象层) │
├────────────────────────────┤
│ 4. NetworkManager │
│ 5. systemd-networkd │ ← 网络管理器(daemon)
├────────────────────────────┤
│ 2. ifcfg │
│ 3. ifupdown │ ← 传统脚本/配置驱动
├────────────────────────────┤
│ 1. ip / ifconfig │ ← 底层工具(直接操作内核)
└────────────────────────────┘
##### (2)演进过程 #####
ifconfig / route 【直接执行时代】
↓
ifupdown (Debian) 【脚本配置时代】
ifcfg (RHEL)
↓
NetworkManager(桌面化) 【daemon 】
systemd-networkd(服务器化)
↓
Netplan(统一配置入口) 【抽象层时代】(2)配置文件用法参考:netplan、systemd-networkd、ifcfg
到此这篇关于Linux中网络管理器用法速查手册的文章就介绍到这了,更多相关Linux网络管理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
