- A+
Linux 网络管理涉及一系列任务,包括配置网络接口、设置IP地址、管理网络服务和防火墙等。
网络配置
网卡命名
根据网络接口定义设备:
-
ethX 传统的以太网接口命名方式,其中 X 通常是数字,如 eth0 等
-
wlanX 用于无线网卡接口,类似于 wlan0 等
不同的发行版和内核版本网卡命名规则会有所不同,可以使用命令 ls /sys/class/net/
来查看系统中的网卡接口。
其中默认存在的 lo
是指环回(loopback)接口,环回接口的 IP 地址通常是 127.0.0.1,也称为本地回环地址。
网卡配置
ifconfig
命令用于查看和配置网络接口信息。
sudo ifconfig eth0 up # 启用 eth0 接口 sudo ifconfig eth0 down # 禁用 eth0 接口 sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up # 设置IP地址和子网掩码
其他命令包括 ip、nmcli 等都大同小异。
网络配置文件
配置静态IP地址,在 Ubuntu 中配置静态 IP 地址可以通过编辑网络配置文件来完成。
使用 NetworkManager 的方法:
- 编辑网络接口配置文件
sudo vim /etc/network/interfaces
- 编辑静态IP地址、网关和DNS服务器的
auto eth0 iface eth0 inet static address 192.168.1.100 # 静态 IP 地址 netmask 255.255.255.0 # 掩码 gateway 192.168.1.1 # 网关 dns-nameservers 8.8.8.8 8.8.4.4 # DNS 服务器
- 保存并退出编辑器,重新启动网络服务
sudo systemctl restart NetworkManager
还有通过 netplan 管理网络的方式。
服务管理
systemctl
和 service
都是用于管理系统服务的命令行工具。
systemctl是在较新版本的Linux中引入的系统和服务管理工具,如systemd。service命令是传统 SysVinit系统中用来管理系统服务的工具。
在许多Linux发行版中,service命令实际上是systemctl命令的一个符号链接,以向后兼容。
使用 systemctl 启动、停止和重启网络服务:
sudo systemctl status network.service # 查看服务状态 sudo systemctl start network.service # 启动服务 sudo systemctl stop network.service # 停止服务 sudo systemctl restart network.service # 重启服务 sudo systemctl enable network.service # 设置开机自启动 sudo systemctl disable network.service # 禁用开机自启动
service和systemctl相比除了参数的位置不同,其他一致。
防火墙配置
常用的Linux防火墙工具包括 iptables
和 firewalld
,用于配置和管理Linux的防火墙规则。
Netfilter是Linux内核中用于实现数据包过滤和网络地址转换功能的框架,iptables和firewalld都是基于Netfilter框架实现的工具。iptables是传统的Linux防火墙工具,而firewalld则是较新的动态防火墙管理器。
重点关注firewalld防火墙,它支持动态更新技术并加入了区域的概念。
firewalld中常见的区域名称(默认为public)以及相应的策略规则:
区域 | 默认规则策略 |
---|---|
阻塞区域 (block) | 拒绝流入的流量,除非与流出的流量相关 |
工作区域 (work) | 拒绝流入的流量,除非与流出的流量相关 |
家庭区域 (home) | 拒绝流入的流量,除非与流出的流量相关 |
公共区域 (public) | 不相信网络上的任何计算机,只有选择接受传入的网络连接 |
隔离区域 (DMZ) | 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。 |
信任区域 (trusted) | 允许所有的数据包 |
丢弃区域 (drop) | 拒绝流入的流量,除非与流出的流量相关 |
内部区域 (internal) | 等同于home区域 |
外部区域 (external) | 拒绝流入的流量,除非与流出的流量有关;而如果流量与ssh服务相关,则允许 流量 |
firewall-cmd 是用于管理 firewalld 防火墙的命令行工具:
查看防火墙状态:
firewall-cmd --state
启动/停止/重启 firewalld 服务:
systemctl start firewalld systemctl stop firewalld systemctl restart firewalld
开启/关闭 firewalld 服务:
systemctl enable firewalld systemctl disable firewalld
查看所有防火墙规则:
firewall-cmd --list-all
添加/移除端口:
firewall-cmd --add-port=PORT/PROTOCOL firewall-cmd --remove-port=PORT/PROTOCOL
添加/移除服务:
firewall-cmd --add-service=SERVICE firewall-cmd --remove-service=SERVICE
重载防火墙规则:
firewall-cmd --reload
如果想让策略一直存在,需要在firewall-cmd命令设置防火墙策略时添加 --permanent
参数。
例如
配置在172.24.8.0 网段的主机访问服务器的5423端口被转发到80端口:
firewall-cmd --zone=public --add-forward-port=port=5423:proto=tcp:toport=80:toaddr=SERVER_IP --source=172.24.8.0/24
文件下载wget和curl
curl
和 wget
都是在命令行下使用的用于下载文件的工具。wget专门用于下载文件,不支持发送请求。curl不仅能下载,还可以发送各种类型的请求,使用代理等。
curl 命令常用的参数:
-
-X, --request 指定 HTTP 请求方法,如 GET、POST、PUT、DELETE 等
-
-d, --data 发送 POST 请求时使用的数据
-
-H, --header 添加额外的请求头信息
-
-i, --include 在输出中包含 HTTP 头信息
-
-o, --output 将响应输出到指定文件
-
-O, --remote-name 将远程文件保存到本地,使用远程文件的文件名
-
-L, --location 遵循重定向
-
-v, --verbose 显示详细的操作信息,包括请求和响应的头信息
-
-A, --user-agent 设置用户代理字符串
wget 命令常用的参数:
-
-O, --output-document 将下载的文件保存为指定的文件名
-
-P, --directory-prefix 将下载的文件保存到指定目录下
-
-r, --recursive 递归下载,下载指定 URL 下的所有链接
-
-t, --tries 设置重试次数
-
-b, --background 后台下载模式
-
-U, --user-agent 设置用户代理字符串
-
--limit-rate= 限制下载速率
网络连接信息netstat和ss
ss
和 netstat
都是用于查看系统网络连接信息的命令行工具。ss是一个更现代的工具,使用更快的内核数据源,并且在处理大量连接时性比netstat更好,能够显示更多的详细信息。netstat 是一个更传统的工具,用于显示网络连接、路由表、接口统计信息等。
ss 命令的一些常用选项:
-
-t 显示TCP套接字
-
-u 显示 UDP 套接字
-
-l 显示监听状态的套接字
-
-a 显示所有连接状态的套接字
-
-p 展示使用socket的进程
-
-n 不解析服务名
-
-i 更多详细信息
netstat 命令的一些常用选项:
-
-a 显示所有连接和监听端口
-
-n 以数字形式显示地址和端口号,而不是尝试反解析主机名和服务名
-
-t 仅显示 TCP 协议相关的连接
-
-u 仅显示 UDP 协议相关的连接
-
-l 仅显示正在监听的套接字
-
-p 显示每个套接字关联的进程 ID 和进程名称
通常ss和netstat会和grep命令结合,快速找到符合条件的网络连接信息。
例如:
netstat -antlp | grep 80 # 找到端口为80的TCP网络连接信息
若有错误,欢迎指正!o( ̄▽ ̄)ブ