Linux基础之网络管理

  • Linux基础之网络管理已关闭评论
  • 71 次浏览
  • A+
所属分类:linux技术
摘要

Linux 网络管理涉及一系列任务,包括配置网络接口、设置IP地址、管理网络服务和防火墙等。

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 的方法:

  1. 编辑网络接口配置文件
sudo vim /etc/network/interfaces 
  1. 编辑静态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 服务器 
  1. 保存并退出编辑器,重新启动网络服务
sudo systemctl restart NetworkManager 

还有通过 netplan 管理网络的方式。

服务管理

systemctlservice 都是用于管理系统服务的命令行工具。

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防火墙工具包括 iptablesfirewalld,用于配置和管理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

curlwget 都是在命令行下使用的用于下载文件的工具。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

ssnetstat 都是用于查看系统网络连接信息的命令行工具。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( ̄▽ ̄)ブ