linux网络管理
NetworkManager
NetworkManager 是一个开源的网络管理工具,旨在简化Linux和其他Unix类系统上的网络配置和管理。它提供了一个统一的接口来管理各种网络连接,包括有线网络、无线网络、移动宽带、VPN等。以下是NetworkManager的一些关键特性和常见用法:
主要特性
-
自动网络配置:
- NetworkManager能够自动检测并配置网络连接。当您连接到一个新网络时,它会自动处理配置细节,如IP地址、DNS服务器等。
-
支持多种网络类型:
- 支持以太网(有线网络)、Wi-Fi(无线网络)、移动宽带(3G/4G)、蓝牙、VPN等多种类型的网络连接。
-
用户友好的图形界面:
- NetworkManager附带了多个图形前端,如GNOME的nm-applet和KDE的plasma-nm,使用户可以方便地通过图形界面管理网络连接。
-
命令行工具:
- 提供了nmcli和nmtui两个命令行工具,供在终端中进行网络配置和管理。
-
配置文件管理:
- 支持通过配置文件管理网络连接设置,允许在不同的网络环境中快速切换配置。
安装与启动
在大多数Linux发行版中,NetworkManager默认是预装的。如果没有,可以通过包管理器进行安装。例如,在Debian或Ubuntu系统上可以使用以下命令安装:
在CentOS或Fedora系统上,可以使用:
安装完成后,可以使用以下命令启动NetworkManager服务:
常用命令
nmcli
nmcli
是NetworkManager的命令行工具,用于管理网络连接。以下是一些常用命令:
-
显示网络状态:
-
列出所有连接:
-
激活一个连接:
-
禁用一个连接:
-
连接到一个Wi-Fi网络:
nmtui
nmtui
是一个基于文本的用户界面,允许在终端中以图形方式管理网络连接。
- 启动nmtui:
Netplan
Netplan 是一种网络配置工具,主要用于配置Ubuntu等基于Debian的系统上的网络。它使用YAML文件定义网络设置,并通过systemd-networkd或NetworkManager来应用这些设置。Netplan提供了一种简洁、统一的方式来管理网络配置。
Netplan 主要特性
- 简单的YAML配置文件:使用YAML文件来定义网络接口、IP地址、网关、DNS等配置。
- 统一管理:支持多种网络管理后台,包括systemd-networkd和NetworkManager。
- 动态和静态配置:支持动态(DHCP)和静态网络配置。
- 支持多种网络类型:包括以太网、有线网络、无线网络等。
Netplan 配置文件
Netplan 的配置文件位于 /etc/netplan/
目录下,通常命名为 *.yaml
文件。默认情况下,Ubuntu会创建一个默认的Netplan配置文件,例如 /etc/netplan/01-netcfg.yaml
。
Netplan 配置示例
以下是一些常见的Netplan配置示例:
1. 使用 DHCP 配置以太网接口
2. 配置静态 IP 地址的以太网接口
3. 配置无线网络(使用 WPA-PSK)
应用配置
编辑完配置文件后,可以使用以下命令来应用配置:
验证配置
在应用配置之前,可以使用以下命令来验证配置文件的语法是否正确:
此命令将暂时应用配置,并在90秒后回滚,以防配置错误导致网络中断。
常用命令
-
列出当前配置:
-
生成配置文件(如果有变动):
systemd-networkd
ifupdown
ifupdown
是一个传统的 Linux 网络管理工具集,包含 ifup
和 ifdown
命令,用于启动和关闭网络接口。它们主要与 /etc/network/interfaces
文件配合使用,以定义和管理网络接口的配置。以下是关于 ifupdown
的详细介绍。
安装 ifupdown
在大多数 Linux 发行版中,ifupdown
通常是预装的。如果没有,可以通过包管理器进行安装。例如,在 Debian 或 Ubuntu 系统上,可以使用以下命令进行安装:
/etc/network/interfaces 文件
/etc/network/interfaces
文件用于定义网络接口的配置。以下是一个示例配置文件:
关键字解释
- auto:指示系统在启动时自动启动指定的网络接口。
- iface:定义网络接口的配置。
- inet:表示接口使用 IPv4 协议。
- dhcp:表示接口通过 DHCP 获取 IP 地址。
- static:表示接口使用静态 IP 地址。
ifup 和 ifdown 基本用法
ifup
ifup
命令用于启动并配置网络接口。它会读取 /etc/network/interfaces
文件中的配置,并应用到指定的网络接口。
ifdown
ifdown
命令用于关闭并取消配置网络接口。它会读取 /etc/network/interfaces
文件中的配置,并关闭指定的网络接口。
高级配置示例
配置多 IP 地址
一个接口可以配置多个 IP 地址:
配置 VLAN
配置 VLAN 接口:
配置桥接
配置网络桥接:
使用 ifquery
ifquery
是 ifupdown
包的一部分,用于查询和调试接口配置。
wpa_supplicant
wpa_supplicant
是一个用户空间的网络工具,用于在 Linux 和其他操作系统上管理无线网络连接,特别是使用 WPA 和 WPA2 加密的无线网络。它可以与不同的无线工具和网络管理守护进程(如 NetworkManager
)配合使用。以下是 wpa_supplicant
的安装、配置和使用方法。
安装 wpa_supplicant
在大多数 Linux 发行版上,可以通过包管理器安装 wpa_supplicant
。
在 Debian/Ubuntu 系统上安装 wpa_supplicant
在 CentOS/RHEL 系统上安装 wpa_supplicant
在 Fedora 系统上安装 wpa_supplicant
在 Arch Linux 系统上安装 wpa_supplicant
配置 wpa_supplicant
wpa_supplicant
使用配置文件 /etc/wpa_supplicant/wpa_supplicant.conf
来存储无线网络的配置信息。以下是一个示例配置文件:
解释配置文件中的条目
ctrl_interface
:控制接口,用于与wpa_cli
或其他管理工具通信。update_config
:允许wpa_supplicant
更新配置文件。country
:设置国家代码。network
:定义一个无线网络配置块。ssid
:无线网络的 SSID。psk
:无线网络的预共享密钥(密码)。key_mgmt
:密钥管理协议(例如 WPA-PSK)。
使用 wpa_supplicant 连接无线网络
1. 创建配置文件
首先,确保 /etc/wpa_supplicant/wpa_supplicant.conf
文件已正确配置。
2. 启动 wpa_supplicant
使用以下命令启动 wpa_supplicant
并指定配置文件:
示例:
选项解释:
-B
:在后台运行wpa_supplicant
。-i
:指定无线接口。-c
:指定配置文件。
3. 获取 IP 地址
使用 dhclient
获取 IP 地址:
使用 wpa_cli 管理 wpa_supplicant
wpa_cli
是一个用于与 wpa_supplicant
交互的命令行工具。可以用它来动态管理无线网络连接。
启动 wpa_cli
进入 wpa_cli
命令行后,可以使用以下命令:
扫描无线网络
连接到无线网络
添加一个新网络:
设置 SSID:
设置 PSK:
启用网络:
保存配置:
使用 NetworkManager 配合 wpa_supplicant
wpa_supplicant
通常与 NetworkManager
一起使用,以提供更方便的网络管理功能。NetworkManager
会自动调用 wpa_supplicant
来处理无线网络连接。
安装 NetworkManager
在 Debian/Ubuntu 系统上:
在 CentOS/RHEL 系统上:
在 Fedora 系统上:
在 Arch Linux 系统上:
启用并启动 NetworkManager
使用 nmcli 连接无线网络
nmcli
是 NetworkManager
的命令行工具,用于配置和管理网络连接。
查看可用网络
连接到无线网络
示例:
查看当前连接状态
iwd
iwd
(iNet wireless daemon)是一个用于管理无线网络连接的现代工具。iwd
是由 Intel 开发的,它的目标是提供更简洁、高效和现代化的无线网络管理。iwd
通常用于替代传统的 wpa_supplicant
。以下是关于 iwd
的安装、配置和使用的一些基本介绍。
安装 iwd
在大多数 Linux 发行版上,可以通过包管理器安装 iwd
。
在 Debian/Ubuntu 系统上安装 iwd
在 CentOS/RHEL 系统上安装 iwd
在 Fedora 系统上安装 iwd
在 Arch Linux 系统上安装 iwd
启动和启用 iwd
安装完成后,需要启动 iwd
服务并设置开机自启动。
配置 iwd
iwd
的配置文件通常位于 /etc/iwd
目录下。创建或编辑配置文件 main.conf
:
在文件中添加以下内容(根据需要修改):
使用 iwd 进行 WiFi 管理
iwd
提供了一个命令行工具 iwctl
,用于管理无线网络连接。
进入 iwctl 命令行
在 iwctl
命令行中,可以使用以下命令管理 WiFi 连接:
扫描可用网络
例如:
连接到 WiFi 网络
例如:
连接时,系统可能会提示您输入 WiFi 密码。
断开连接
例如:
显示当前连接状态
例如:
列出已保存的网络
删除已保存的网络
dns管理工具
直接修改
您可以使用文本编辑器直接编辑 /etc/resolv.conf
文件来配置 DNS 服务器。以下是一个示例文件:
使用 nano
或 vim
编辑文件:
在某些情况下,系统或网络管理工具可能会覆盖 /etc/resolv.conf
文件。可以通过以下方法防止文件被覆盖:
设置不可变属性:
使用 lsattr
命令查看文件属性:
要取消不可变属性,可以使用以下命令:
systemd-resolved
- 启用并启动 systemd-resolved:
- 链接 /etc/resolv.conf 到 systemd-resolved:
确保 /etc/resolv.conf
链接到 systemd-resolved
的生成文件:
resolvconf
在一些系统上,/etc/resolv.conf
文件可能由 resolvconf
工具动态管理。resolvconf
会根据不同的网络配置自动生成该文件。要使用 resolvconf
管理 DNS 配置,可以按照以下步骤操作:
- 安装 resolvconf:
- 配置网络接口:
在 /etc/network/interfaces
文件中添加 DNS 服务器配置:
- 启用并启动 resolvconf:
- 更新 resolvconf:
命令行管理工具
ifconfig
ifconfig
是一个传统的网络管理工具,用于配置、管理和查询 Linux 系统上的网络接口。虽然在许多现代系统中已经被 ip
命令取代,但 ifconfig
仍然在许多系统中可用,并且在某些情况下仍然非常有用。以下是 ifconfig
的一些基本用法和示例。
安装 ifconfig
在一些 Linux 发行版中,ifconfig
可能未默认安装,可以通过包管理器进行安装。例如,在 Debian 或 Ubuntu 系统上,可以使用以下命令:
ifconfig 基本用法
查看网络接口状态
显示所有网络接口及其当前状态:
显示特定网络接口的状态:
配置 IP 地址
为网络接口配置静态 IP 地址:
启用或禁用网络接口
启用网络接口:
禁用网络接口:
配置网络接口的广播地址和子网掩码
配置广播地址:
配置子网掩码:
配置多 IP 地址
为一个接口配置多个 IP 地址:
查看和配置 MAC 地址
查看网络接口的 MAC 地址:
更改网络接口的 MAC 地址:
清空 IP 配置
清除网络接口上的 IP 地址:
示例
- 查看所有网络接口信息
输出示例:
- 为 eth0 配置静态 IP 地址
- 启用和禁用网络接口 eth0
启用:
禁用:
- 为 eth0 配置广播地址
- 更改 eth0 的 MAC 地址
route
route
命令是一个传统的网络路由管理工具,用于查看和配置Linux系统中的IP路由表。虽然现代系统中通常使用 ip route
命令来替代 route
命令,但在一些系统中,route
仍然是一个有用的工具。以下是 route
命令的一些基本用法和示例。
安装命令
查看当前路由表
选项解释:
-n
:以数字形式显示地址而不是尝试解析主机名。
添加静态路由
添加到特定网络的静态路由
选项解释:
-net
:表示目标是一个网络。192.168.2.0
:目标网络地址。netmask 255.255.255.0
:子网掩码。gw 192.168.1.1
:网关地址。
添加到特定主机的静态路由
选项解释:
-host
:表示目标是一个主机。192.168.2.10
:目标主机地址。gw 192.168.1.1
:网关地址。
删除静态路由
删除到特定网络的静态路由
删除到特定主机的静态路由
设置默认网关
示例
查看路由表示例
输出示例:
添加和删除静态路由示例
- 添加到网络
192.168.2.0/24
的静态路由
- 添加到主机
192.168.2.10
的静态路由
- 删除到网络
192.168.2.0/24
的静态路由
- 删除到主机
192.168.2.10
的静态路由
设置默认网关示例
使用 ip route
替代 route
现代 Linux 系统中,ip route
命令通常替代 route
命令使用。以下是 ip route
命令的基本用法示例:
查看路由表
添加静态路由
删除静态路由
设置默认网关
ip
ip
命令是一个现代化且功能强大的网络管理工具,用于配置和查看网络接口、路由、隧道等。ip
命令取代了传统的 ifconfig
和 route
命令,并提供了更丰富的功能。以下是 ip
命令的一些基本用法和示例:
安装命令
查看所有网络接口
或简写:
查看特定网络接口
配置网络接口
分配 IP 地址
为网络接口 eth0
分配静态 IP 地址:
删除 IP 地址
从网络接口 eth0
删除 IP 地址:
启用或禁用网络接口
启用网络接口 eth0
:
禁用网络接口 eth0
:
配置 MTU
设置网络接口 eth0
的最大传输单元 (MTU):
查看和配置路由
查看路由表
或简写:
添加静态路由
添加到目标网络 192.168.2.0/24
的静态路由,通过网关 192.168.1.1
:
删除静态路由
删除到目标网络 192.168.2.0/24
的静态路由:
查看和配置邻居 (ARP) 表
查看邻居表
或简写:
添加邻居 (ARP) 表项
为 IP 地址 192.168.1.2
添加一个静态 ARP 表项,MAC 地址为 00:11:22:33:44:55
:
删除邻居 (ARP) 表项
删除 IP 地址 192.168.1.2
的 ARP 表项:
创建和删除网络设备
创建虚拟以太网设备 (veth)
创建一对虚拟以太网设备 veth0
和 veth1
:
删除虚拟以太网设备
删除虚拟以太网设备 veth0
和 veth1
:
配置网络命名空间
创建网络命名空间
创建网络命名空间 ns1
:
删除网络命名空间
删除网络命名空间 ns1
:
在网络命名空间中执行命令
在网络命名空间 ns1
中运行 ip
命令查看接口:
netstat
netstat
是一个用于显示网络连接、路由表、接口统计信息等的命令行工具。尽管在现代系统中,ss
和 ip
命令更为常用,但 netstat
仍然在许多场景下非常有用。以下是 netstat
命令的一些基本用法和示例。
安装 net-tools
在某些系统中,netstat
可能未默认安装,可以通过安装 net-tools
包来获取该工具。例如,在 Debian 或 Ubuntu 系统上,可以使用以下命令进行安装:
基本用法和选项
查看所有网络连接
查看所有监听的端口
查看所有 TCP 连接
查看所有 UDP 连接
查看所有 UNIX 套接字
高级用法和示例
查看详细的网络连接信息
查看网络接口的统计信息
查看路由表
显示网络连接和进程信息
持续更新网络连接信息
组合选项
您可以组合多个选项来获取更详细的信息。例如,查看所有 TCP 连接及其对应的进程信息:
常用选项总结
-a
:显示所有网络连接,包括监听和非监听。-l
:只显示监听的套接字。-t
:显示 TCP 连接。-u
:显示 UDP 连接。-x
:显示 UNIX 套接字。-v
:显示详细信息。-i
:显示网络接口统计信息。-r
:显示路由表。-p
:显示进程信息。-c
:持续更新显示。
示例总结
- 查看所有网络连接:
- 查看所有监听的端口:
- 查看所有 TCP 连接:
- 查看所有 UDP 连接:
- 查看路由表:
- 查看网络接口的统计信息:
- 查看所有网络连接及其对应的进程信息:
- 持续更新网络连接信息:
现代替代工具
尽管 netstat
仍然有用,但在现代 Linux 系统中,推荐使用以下工具:
- ss:用于显示套接字统计信息,是
netstat
的现代替代品。
- ip:用于管理网络接口和路由,是
ifconfig
和route
的现代替代品。
ss
ss
命令是一个强大的网络实用程序,用于显示套接字统计信息。它是 netstat
命令的现代替代品,速度更快,功能更强大。ss
可以显示 TCP、UDP、UNIX 套接字的详细信息,帮助管理员诊断网络问题和监控网络活动。
安装命令
基本用法和示例
查看所有连接
查看所有监听套接字
查看所有 TCP 连接
查看所有 UDP 连接
查看所有 UNIX 套接字
高级用法和示例
查看详细信息
使用 -e
选项可以查看详细信息,例如套接字的内存使用情况等。
查看进程相关信息
使用 -p
选项可以显示与每个套接字关联的进程。
查看特定状态的连接
查看所有处于 ESTABLISHED
状态的 TCP 连接:
查看所有处于 LISTEN
状态的 TCP 连接:
按端口过滤
查看所有连接到特定端口的连接,例如端口 80:
显示摘要统计信息
使用 -s
选项显示所有套接字的摘要统计信息。
查看网络命名空间中的套接字
使用 -N
选项可以查看特定网络命名空间中的套接字。
组合选项
您可以组合多个选项来获取更精确的信息。例如,查看所有与端口 22 相关的监听套接字,并显示进程信息:
常用选项总结
-a
:显示所有套接字,包括监听和非监听。-l
:只显示监听套接字。-t
:显示 TCP 套接字。-u
:显示 UDP 套接字。-x
:显示 UNIX 套接字。-e
:显示详细信息。-p
:显示进程信息。-s
:显示摘要统计信息。-N
:查看特定网络命名空间中的套接字。
示例总结
- 查看所有 TCP 连接:
- 查看所有监听的 TCP 套接字:
- 查看所有 UDP 连接:
- 查看所有连接的详细信息:
- 查看所有连接及其关联的进程:
- 查看所有处于 ESTABLISHED 状态的 TCP 连接:
- 查看端口 80 的所有连接:
- 显示套接字的摘要统计信息: