个人网站服务器租用,创建全国文明城市标语口号,wordpress wp_signon,WordPress添加弹窗下载按钮Linux网络管理 一、Linux网络应用要点二、命令常见用法2.1、curl2.1.1、发送GET请求2.1.2、发送POST请求2.1.3、设置请求头2.1.4、处理cookies2.1.5、处理重定向2.1.6、调试和详细信息2.1.7、使用代理2.1.8、文件上传2.1.9、其它常用选项2.1.10、综合示例 2.2、wget2.2.1、基本… Linux网络管理 一、Linux网络应用要点二、命令常见用法2.1、curl2.1.1、发送GET请求2.1.2、发送POST请求2.1.3、设置请求头2.1.4、处理cookies2.1.5、处理重定向2.1.6、调试和详细信息2.1.7、使用代理2.1.8、文件上传2.1.9、其它常用选项2.1.10、综合示例 2.2、wget2.2.1、基本用法2.2.2、断点续传2.2.3、批量下载2.2.4、递归下载2.2.5、限制下载速度2.2.6、后台下载2.2.7、处理 cookies2.2.8、设置用户代理2.2.9、下载 FTP 文件2.2.10、其他常用选项2.2.11、综合示例 2.3、telnet2.3.1、基本用法2.3.2、测试端口连通性2.3.3、交互模式2.3.4、退出 telnet2.3.5、 常见用途2.3.6、注意事项 2.4、IP2.4.1、 查看网络接口信息2.4.2、启用或禁用网络接口2.4.3、查看 IP 地址2.4.4、添加或删除 IP 地址2.4.5、查看路由表2.4.6、添加或删除路由2.4.7、查看 ARP 表2.4.8、查看网络统计信息2.4.9、修改接口属性2.4.10、综合示例 2.5、hostname2.5.1、查看当前主机名2.5.2、临时修改主机名2.5.3、永久修改主机名2.5.4、查看完整主机名FQDN2.5.5、查看主机名的其他信息2.5.6、设置主机名的其他选项2.5.7、综合示例 2.6、ifconfig2.6.1、查看网络接口信息2.6.2、启用或禁用网络接口2.6.3、配置 IP 地址2.6.4、修改 MAC 地址2.6.5、查看网络接口统计信息2.6.6、设置 MTU最大传输单元2.6.7、综合示例2.6.8、注意事项 2.7、route2.7.1、查看路由表2.7.2、添加路由2.7.3、删除路由2.7.4、修改路由2.7.5、其他常用选项2.7.6、综合示例2.7.7、注意事项 2.8、ssh2.9、ssh-keygen2.10、firewalld2.10.1、启动、停止和重启 firewalld2.10.2、查看 firewalld 状态2.10.3、管理区域Zones2.10.4、管理服务Services2.10.5、管理端口2.10.6、管理源地址2.10.7、重载配置2.10.8、高级功能2.10.9、备份和恢复配置2.10.10、日志管理2.10.11、注意事项 2.11、iptables2.11.1、基本概念2.11.2、基本语法2.11.3、常用操作2.11.4、保护和恢复规则2.11.5、调试和日志2.11.6、注意事项 2.12、host2.12.1、基本用法2.12.2、常用操作2.12.3、高级用法2.12.4、注意事项2.14.5、与其它工具比较 2.13、nslookup2.13.1、基本用法2.13.2、常用操作2.13.3、交互模式2.13.4、高级用法2.13.5、注意事项2.13.6、与其他工具的比较 2.14、nc/netcat2.14.1、基本用法2.14.2、常用操作2.14.3、高级用法2.14.4、注意事项2.14.5、与其它工具比较 2.15、ping2.15.1、基本用法2.15.2、常用操作2.15.3、输出解析2.15.4、高级用法2.15.4、注意事项2.15.5、与其他工具的比较 2.16、traceroute2.16.1、基本用法2.16.2、常用操作2.16.3、输出解析2.16.4、高级用法2.16.5、注意事项2.16.6、与其他工具的比较 2.17、netstat2.17.1、基本用法2.17.2、常用操作2.17.3、输出解析2.17.4、高级用法2.17.5、注意事项2.17.6、与其它工具的比较 一、Linux网络应用要点
下载文件 - 使用 curl、wgettelnet 方式登录远程主机对远程主机进行管理 - 使用 telnet查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道 - 使用 ip查看和设置系统的主机名 - 使用 hostname查看和配置 Linux 内核中网络接口的网络参数 - 使用 ifconfig查看和设置 Linux 内核中的网络路由表 - 使用 routessh 方式连接远程主机 - 使用 ssh为 ssh 生成、管理和转换认证密钥 - 使用 ssh-keygen查看、设置防火墙Centos7使用 firewalld查看、设置防火墙Centos7 以前使用 iptables查看域名信息 - 使用 host, nslookup设置路由 - 使用 nc/netcat测试主机之间网络是否连通 - 使用 ping追踪数据在网络上的传输时的全部路径 - 使用 traceroute查看当前工作的端口信息 - 使用 netstat
二、命令常见用法
2.1、curl
curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载所以是综合传输工具但按传统习惯称 curl 为下载工具。作为一款强力工具curl 支持包括 HTTP、HTTPS、ftp 等众多协议还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化curl 可以祝一臂之力。
2.1.1、发送GET请求
curl URL
# 示例
curl https://example.com保存输出到文件
curl -o 文件名 URL
# 示例
curl -o output.html https://example.com自动命名保存文件
curl -O URL
# 示例
curl -O https://example.com/index.html2.1.2、发送POST请求
发送表单数据
curl -X POST -d key1value1key2value2 URL
# 示例
curl -X POST -d usernameadminpassword123456 https://example.com/login发送 JSON 数据
curl -X POST -H Content-Type: application/json -d {key1:value1, key2:value2} URL
# 示例
curl -X POST -H Content-Type: application/json -d {name:John, age:30} https://example.com/api2.1.3、设置请求头
curl -H HeaderName: HeaderValue URL
# 示例
curl -H Authorization: Bearer token123 https://example.com/api2.1.4、处理cookies
发送 cookies
curl -b namevalue URL
# 示例
curl -b sessionidabc123 https://example.com保存 cookies 到文件
curl -c cookies文件 URL
# 示例
curl -c cookies.txt https://example.com使用 cookies 文件
curl -b cookies文件 URL
# 示例
curl -b cookies.txt https://example.com2.1.5、处理重定向
自动跟随重定向
curl -L URL
# 示例
curl -L https://example.com限制重定向次数
curl -L --max-redirs 次数 URL
# 示例
curl -L --max-redirs 5 https://example.com2.1.6、调试和详细信息
显示请求和响应头
curl -v URL
# 示例
curl -v https://example.com仅显示响应头
curl -I URL
# 示例
curl -I https://example.com2.1.7、使用代理
设置 HTTP 代理
curl -x 代理地址 URL
# 示例
curl -x http://proxy.example.com:8080 https://example.com设置 SOCKS 代理
curl --socks5 代理地址 URL
# 示例
curl --socks5 127.0.0.1:1080 https://example.com2.1.8、文件上传
上传文件
curl -F file文件路径 URL
# 示例
curl -F file/path/to/file.txt https://example.com/upload上传文件并设置文件名
curl -F file文件路径;filename新文件名 URL
# 示例
curl -F file/path/to/file.txt;filenamenewname.txt https://example.com/upload2.1.9、其它常用选项
限制下载速度
curl --limit-rate 速度 URL
# 示例
curl --limit-rate 100K https://example.com/file.zip断点续传
curl -C - -o 文件名 URL
# 示例
curl -C - -o file.zip https://example.com/file.zip忽略 SSL 证书验证
curl -k URL
# 示例
curl -k https://example.com2.1.10、综合示例
下载文件并保存
curl -o file.zip https://example.com/file.zip发送 POST 请求并保存响应
curl -X POST -d param1value1param2value2 -o response.txt https://example.com/api调试请求
curl -v -H Authorization: Bearer token123 https://example.com/api下载文件指定下载路径并查看进度
curl http://man.linuxde.net/test.iso -o filename.iso --progress
########################################## 100.0%2.2、wget
wget 是一个命令行工具用于从网络上下载文件支持 HTTP、HTTPS 和 FTP 协议。它非常适合批量下载、递归下载以及断点续传等操作。
2.2.1、基本用法
下载单个文件
wget URL
# 示例
wget https://example.com/file.zip下载并指定保存文件名
wget -O 文件名 URL
# 示例
wget -O myfile.zip https://example.com/file.zip2.2.2、断点续传
继续未完成的下载
wget -c URL
# 示例
wget -c https://example.com/file.zip2.2.3、批量下载
从文件列表中下载
# 将多个 URL 保存在一个文件中如 urls.txt然后使用
wget -i 文件
# 示例
wget -i urls.txt2.2.4、递归下载
下载整个网站
wget -r URL
# 示例
wget -r https://example.com限制递归深度
wget -r -l 深度 URL
# 示例
wget -r -l 2 https://example.com下载特定类型的文件
wget -r -A 文件类型 URL
# 示例
wget -r -A *.jpg https://example.com2.2.5、限制下载速度
wget --limit-rate速度 URL
# 示例
wget --limit-rate100k https://example.com/file.zip2.2.6、后台下载
wget -b URL
# 示例
wget -b https://example.com/file.zip2.2.7、处理 cookies
使用 cookies 文件
wget --load-cookies cookies文件 URL
# 示例
wget --load-cookies cookies.txt https://example.com2.2.8、设置用户代理
wget --user-agent用户代理字符串 URL
# 示例
wget --user-agentMozilla/5.0 https://example.com2.2.9、下载 FTP 文件
下载 FTP 文件:
wget ftp://example.com/file.zip使用用户名和密码
wget --ftp-user用户名 --ftp-password密码 ftp://example.com/file.zip
# 示例
wget --ftp-useradmin --ftp-password123456 ftp://example.com/file.zip2.2.10、其他常用选项
忽略 SSL 证书验证
wget --no-check-certificate URL
# 示例
wget --no-check-certificate https://example.com限制重试次数
wget --tries次数 URL
# 示例
wget --tries5 https://example.com静默模式不显示输出
wget -q URL
# 示例
wget -q https://example.com2.2.11、综合示例
下载整个网站并限制速度
wget -r --limit-rate100k https://example.com断点续传下载大文件
wget -c https://example.com/largefile.zip批量下载图片
wget -r -A *.jpg https://example.com/images2.3、telnet
telnet 是一个用于远程登录和管理网络设备的命令行工具基于 Telnet 协议。它也可以用于测试网络服务的连通性。
2.3.1、基本用法
连接到远程主机
telnet 主机名或IP 端口
# 示例
telnet example.com 232.3.2、测试端口连通性
telnet 常用于测试某个端口是否开放。例如测试 example.com 的 80 端口
telnet example.com 80
# 如果连接成功会显示 Connected to example.com。
# 如果连接失败会显示 Connection refused 或超时。2.3.3、交互模式
连接成功后telnet 会进入交互模式可以输入命令与远程主机通信。例如
telnet example.com 23
#输入用户名和密码如果需要。
#输入命令与远程主机交互。2.3.4、退出 telnet
在交互模式下输入以下命令退出
Ctrl ]
# 然后输入 quit 并按回车
telnet quit2.3.5、 常见用途
测试 HTTP 服务
telnet example.com 80
# 连接成功后输入
GET / HTTP/1.1
Host: example.com
按两次回车查看服务器返回的 HTTP 响应。测试 SMTP 服务
telnet example.com 25
# 连接成功后输入 SMTP 命令与服务器交互例如
HELO example.com
MAIL FROM:senderexample.com
RCPT TO:recipientexample.com
DATA
Subject: Test EmailThis is a test email.
.
QUIT测试 MySQL 服务
telnet example.com 3306
# 如果端口开放会显示 MySQL 的版本信息。2.3.6、注意事项
安全性Telnet 协议是明文传输不安全建议使用 SSH 替代。安装如果系统未安装 telnet可以通过以下命令安装
# Ubuntu/Debian
sudo apt install telnet
# CentOS/RHEL
sudo yum install telnet2.4、IP
ip 命令是 Linux 系统中用于管理网络接口、路由、ARP 表等网络配置的强大工具取代了旧的 ifconfig 和 route 命令。
2.4.1、 查看网络接口信息
查看所有网络接口
ip link show
# 或简写
ip l查看指定网络接口
ip link show 接口名
# 示例
ip link show eth02.4.2、启用或禁用网络接口
启用接口:
ip link set 接口名 up
# 示例
ip link set eth0 up禁用接口
ip link set 接口名 down
# 示例
ip link set eth0 down2.4.3、查看 IP 地址
查看所有接口的 IP 地址:
ip addr show
# 或简写
ip a查看指定接口的 IP 地址
ip addr show 接口名
# 示例
ip addr show eth02.4.4、添加或删除 IP 地址
添加 IP 地址
ip addr add IP地址/子网掩码 dev 接口名
# 示例
ip addr add 192.168.1.100/24 dev eth0删除 IP 地址
ip addr del IP地址/子网掩码 dev 接口名
# 示例
ip addr del 192.168.1.100/24 dev eth02.4.5、查看路由表
查看路由表
ip route show
# 或简写
ip r查看指定网络的路由
ip route show to 网络地址
# 示例
ip route show to 192.168.1.0/242.4.6、添加或删除路由
添加路由
ip route add 目标网络 via 网关 dev 接口名
# 示例
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0删除路由
ip route del 目标网络
# 示例
ip route del 192.168.2.0/242.4.7、查看 ARP 表
查看 ARP 表
ip neigh show
# 或简写
ip n删除 ARP 条目
ip neigh del IP地址 dev 接口名
# 示例
ip neigh del 192.168.1.1 dev eth02.4.8、查看网络统计信息
查看网络接口统计信息
ip -s link show 接口名
# 示例
ip -s link show eth02.4.9、修改接口属性
修改接口 MTU
ip link set 接口名 mtu MTU值
# 示例
ip link set eth0 mtu 1500修改接口 MAC 地址
ip link set 接口名 address MAC地址
# 示例
ip link set eth0 address 00:11:22:33:44:552.4.10、综合示例
查看所有网络接口及其 IP 地址
ip a添加 IP 地址并启用接口
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up添加默认网关
ip route add default via 192.168.1.1 dev eth0查看路由表
ip r2.5、hostname
hostname 命令用于查看和设置系统的主机名称。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后系统并不会永久保存新的主机名重新启动机器之后还是原来的主机名。如果需要永久修改主机名需要同时修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容。
2.5.1、查看当前主机名
hostname
#这会显示当前系统的主机名。2.5.2、临时修改主机名
hostname 新主机名
# 示例
hostname myserver
# 这种修改是临时的重启后会恢复为原来的主机名。2.5.3、永久修改主机名
要永久修改主机名需要编辑相关配置文件具体方法因 Linux 发行版而异。
对于大多数 Linux 发行版如 Ubuntu、Debian、CentOS 等
编辑 /etc/hostname 文件
sudo nano /etc/hostname
# 将文件内容替换为新主机名例如
myserver更新 /etc/hosts 文件
sudo nano /etc/hosts
# 找到包含旧主机名的行将其替换为新主机名例如
复制
127.0.1.1 myserver重启系统或使用以下命令立即生效
sudo hostnamectl set-hostname 新主机名对于使用 systemd 的系统
sudo hostnamectl set-hostname 新主机名
# 示例
sudo hostnamectl set-hostname myserver2.5.4、查看完整主机名FQDN
hostname --fqdn
# 这会显示完整的主机名Fully Qualified Domain NameFQDN。2.5.5、查看主机名的其他信息
查看主机名的 IP 地址
hostname -i查看主机名的别名
hostname -a查看主机名的域名部分
hostname -d2.5.6、设置主机名的其他选项
设置主机名的别名
hostname -A 别名设置主机名的域名
hostname -b 域名2.5.7、综合示例
查看当前主机名
hostname临时修改主机名
hostname temp-server永久修改主机名
sudo hostnamectl set-hostname myserver查看完整主机名
hostname --fqdn2.6、ifconfig
ifconfig 命令被用于查看和配置 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息在网卡重启后机器重启后配置就不存在。要想将上述的配置信息永远的存的电脑里那就要修改网卡的配置文件了。
2.6.1、查看网络接口信息
查看所有网络接口
ifconfig查看指定网络接口
ifconfig 接口名
# 示例
ifconfig eth02.6.2、启用或禁用网络接口
启用接口
sudo ifconfig 接口名 up
# 示例
sudo ifconfig eth0 up禁用接口
sudo ifconfig 接口名 down
# 示例
sudo ifconfig eth0 down2.6.3、配置 IP 地址
设置 IP 地址
sudo ifconfig 接口名 IP地址 netmask 子网掩码
# 示例
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0添加多个 IP 地址
sudo ifconfig 接口名:别名 IP地址 netmask 子网掩码
# 示例
sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.02.6.4、修改 MAC 地址
临时修改 MAC 地址
sudo ifconfig 接口名 hw ether MAC地址
# 示例
sudo ifconfig eth0 hw ether 00:11:22:33:44:552.6.5、查看网络接口统计信息
查看所有接口的统计信息
ifconfig -a查看指定接口的统计信息
ifconfig 接口名
# 示例
ifconfig eth02.6.6、设置 MTU最大传输单元
sudo ifconfig 接口名 mtu MTU值
# 示例
sudo ifconfig eth0 mtu 15002.6.7、综合示例
查看所有网络接口
ifconfig启用网络接口并设置 IP 地址
sudo ifconfig eth0 up
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0查看指定接口的详细信息
ifconfig eth02.6.8、注意事项
权限修改网络配置通常需要 sudo 权限。临时性使用 ifconfig 修改的配置是临时的重启后会失效。要永久修改网络配置需要编辑网络配置文件如 /etc/network/interfaces 或使用 netplan。替代工具现代 Linux 系统推荐使用 ip 命令替代 ifconfig因为 ifconfig 的功能较为有限。
2.7、route
route 命令用于查看和操作内核的 IP 路由表。它可以显示、添加、删除或修改路由规则。尽管现代 Linux 系统推荐使用 ip route 命令替代 route但 route 仍然被广泛使用。
2.7.1、查看路由表
查看当前路由表
route -n
# -n 选项表示以数字形式显示 IP 地址和端口避免 DNS 解析。2.7.2、添加路由
添加默认网关
sudo route add default gw 网关地址 接口名
# 示例
sudo route add default gw 192.168.1.1 eth0添加特定网络的路由
sudo route add -net 目标网络 netmask 子网掩码 gw 网关地址 dev 接口名
# 示例
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0添加主机路由
sudo route add -host 目标IP gw 网关地址 dev 接口名
# 示例
sudo route add -host 192.168.2.100 gw 192.168.1.1 dev eth02.7.3、删除路由
删除默认网关:
sudo route del default gw 网关地址 接口名
# 示例
sudo route del default gw 192.168.1.1 eth0删除特定网络的路由
sudo route del -net 目标网络 netmask 子网掩码
# 示例
sudo route del -net 192.168.2.0 netmask 255.255.255.0删除主机路由
sudo route del -host 目标IP
# 示例
sudo route del -host 192.168.2.1002.7.4、修改路由
修改默认网关
sudo route change default gw 新网关地址 接口名
# 示例
sudo route change default gw 192.168.1.254 eth02.7.5、其他常用选项
显示详细信息
route -v显示所有路由包括未激活的路由
route -ee2.7.6、综合示例
查看路由表
route -n添加默认网关
sudo route add default gw 192.168.1.1 eth0添加特定网络的路由
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0删除特定网络的路由
sudo route del -net 192.168.2.0 netmask 255.255.255.02.7.7、注意事项
注意事项
权限修改路由表通常需要 sudo 权限。临时性使用 route 命令修改的路由是临时的重启后会失效。要永久修改路由需要编辑网络配置文件如 /etc/network/interfaces 或使用 netplan。替代工具现代 Linux 系统推荐使用 ip route 命令替代 route因为 ip route 功能更强大且更灵活。
2.8、ssh
ssh 命令是 openssh 套件中的客户端连接工具可以给予 ssh 加密协议实现安全的远程登录服务器。
ssh [选项] [用户名]主机名或IP地址常用选项
-p 端口号指定远程主机的SSH端口默认是22。-i 私钥文件指定用于身份验证的私钥文件。-l 用户名指定登录用户名。-v详细模式显示调试信息可以多次使用如 -vvv 以增加详细程度。-X启用X11转发允许在远程主机上运行图形应用程序。-L 本地端口:远程主机:远程端口设置本地端口转发。-R 远程端口:本地主机:本地端口设置远程端口转发。-D 本地端口设置动态端口转发SOCKS代理。
使用示例 基本远程登录
ssh user192.168.1.100
#这将使用用户名 user 登录到 IP 地址为 192.168.1.100 的远程主机。指定端口
ssh -p 2222 user192.168.1.100
# 这将连接到远程主机的 2222 端口。使用私钥文件
ssh -i /path/to/private_key user192.168.1.100
#这将使用指定的私钥文件进行身份验证。启用X11转发
ssh -X user192.168.1.100
#这将启用X11转发允许在远程主机上运行图形应用程序。本地端口转发
ssh -L 8080:localhost:80 user192.168.1.100
# 这将把本地的 8080 端口转发到远程主机的 80 端口。远程端口转发
ssh -R 8080:localhost:80 user192.168.1.100
#这将把远程主机的 8080 端口转发到本地的 80 端口。动态端口转发SOCKS代理
ssh -D 1080 user192.168.1.100
# 这将设置一个动态端口转发创建一个SOCKS代理可以通过本地 1080 端口访问远程网络。退出SSH会话
在SSH会话中你可以通过输入 exit 或按 CtrlD 来退出并关闭连接。其他注意事项
配置文件SSH的配置文件通常位于 ~/.ssh/config你可以在其中定义主机别名、端口、用户名等简化命令行操作。公钥认证为了提高安全性建议使用公钥认证而不是密码认证。你可以使用 ssh-keygen 生成密钥对并将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中。
示例配置文件
Host myserverHostName 192.168.1.100User userPort 2222IdentityFile /path/to/private_key2.9、ssh-keygen
ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥它支持 RSA 和 DSA 两种认证密钥。
ssh-kengen [选项]常用选项
-t 密钥类型 指定密钥类型如 rsa, ed25519, ecdsa 等。默认是 rsa。-b 密钥长度 指定密钥的位数仅适用于 rsa 和 ecdsa。例如 -b 4096。-C 注释 为密钥添加注释通常是电子邮件或描述。-f 文件名 指定生成的密钥文件的路径和名称。-N 密码 为私钥设置密码passphrase。-p 更改现有私钥的密码。-q 静默模式不显示输出。-y 从私钥生成公钥。
使用示例 生成默认的 RSA 密钥对
ssh-keygen
# 默认生成 ~/.ssh/id_rsa私钥和 ~/.ssh/id_rsa.pub公钥。
# 会提示你输入保存路径和密码可选。生成指定类型的密钥对
ssh-keygen -t ed25519
# 生成 ed25519 类型的密钥对默认保存为 ~/.ssh/id_ed25519 和 ~/.ssh/id_ed25519.pub。指定密钥长度
ssh-keygen -t rsa -b 4096
# 生成 4096 位的 RSA 密钥对。指定密钥文件路径
ssh-keygen -f ~/.ssh/my_key
# 生成密钥对并保存为 ~/.ssh/my_key私钥和 ~/.ssh/my_key.pub公钥。为密钥添加注释
# ssh-keygen -C my_emailexample.com
在公钥中添加注释 my_emailexample.com。为私钥设置密码
ssh-keygen -N my_passphrase
# 为生成的私钥设置密码 my_passphrase。更改现有私钥的密码
ssh-keygen -p -f ~/.ssh/id_rsa
# 更改 ~/.ssh/id_rsa 私钥的密码。从私钥生成公钥
ssh-keygen -y -f ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
# 从私钥 ~/.ssh/id_rsa 生成公钥并保存到 ~/.ssh/id_rsa.pub。密钥对的使用
将公钥添加到远程主机
将生成的公钥如 ~/.ssh/id_rsa.pub内容复制到远程主机的 ~/.ssh/authorized_keys 文件中。可以使用以下命令自动完成
ssh-copy-id -i ~/.ssh/id_rsa.pub userremote_host使用密钥登录远程主机
ssh -i ~/.ssh/my_key userremote_host注意事项
密钥类型选择 ed25519推荐使用安全性高且性能好。rsa兼容性好但建议密钥长度至少为 4096 位。ecdsa基于椭圆曲线安全性高但兼容性稍差。 私钥保护私钥文件应妥善保管避免泄露。可以为私钥设置密码以增加安全性。默认路径SSH 默认会查找 ~/.ssh/id_rsa 或 ~/.ssh/id_ed25519 等密钥文件。如果使用其他路径需要通过 -i 选项指定。
2.10、firewalld
firewalld 是一个动态管理防火墙的工具它提供了对网络流量进行控制的接口支持区域zones和服务services的概念。以下是 firewalld 的常用命令和操作。
2.10.1、启动、停止和重启 firewalld
# 启动 firewalld
sudo systemctl start firewalld# 停止 firewalld
sudo systemctl stop firewalld# 重启 firewalld
sudo systemctl restart firewalld# 设置 firewalld 开机自启
sudo systemctl enable firewalld# 禁用 firewalld 开机自启
sudo systemctl disable firewalld# 检查 firewalld 状态
sudo systemctl status firewalld2.10.2、查看 firewalld 状态
# 查看 firewalld 是否运行
sudo firewall-cmd --state# 查看默认区域
sudo firewall-cmd --get-default-zone# 查看所有区域
sudo firewall-cmd --get-zones# 查看当前区域的配置
sudo firewall-cmd --list-all# 查看指定区域的配置
sudo firewall-cmd --zonepublic --list-all2.10.3、管理区域Zones
区域是 firewalld 的核心概念每个区域定义了不同的信任级别和规则。
# 设置默认区域
sudo firewall-cmd --set-default-zonepublic# 查看当前活动的区域
sudo firewall-cmd --get-active-zones# 将网络接口绑定到指定区域
sudo firewall-cmd --zonework --change-interfaceeth0# 查看指定接口的区域
sudo firewall-cmd --get-zone-of-interfaceeth02.10.4、管理服务Services
服务是预定义的规则集合用于允许特定类型的流量。
# 查看所有预定义的服务
sudo firewall-cmd --get-services# 允许某个服务如 http
sudo firewall-cmd --zonepublic --add-servicehttp# 永久允许某个服务
sudo firewall-cmd --zonepublic --add-servicehttp --permanent# 移除某个服务
sudo firewall-cmd --zonepublic --remove-servicehttp# 永久移除某个服务
sudo firewall-cmd --zonepublic --remove-servicehttp --permanent2.10.5、管理端口
# 允许某个端口如 8080
sudo firewall-cmd --zonepublic --add-port8080/tcp# 永久允许某个端口
sudo firewall-cmd --zonepublic --add-port8080/tcp --permanent# 移除某个端口
sudo firewall-cmd --zonepublic --remove-port8080/tcp# 永久移除某个端口
sudo firewall-cmd --zonepublic --remove-port8080/tcp --permanent2.10.6、管理源地址
# 允许某个 IP 地址访问
sudo firewall-cmd --zonepublic --add-source192.168.1.100# 永久允许某个 IP 地址访问
sudo firewall-cmd --zonepublic --add-source192.168.1.100 --permanent# 移除某个 IP 地址的访问权限
sudo firewall-cmd --zonepublic --remove-source192.168.1.100# 永久移除某个 IP 地址的访问权限
sudo firewall-cmd --zonepublic --remove-source192.168.1.100 --permanent2.10.7、重载配置
在修改了永久规则后需要重载配置使其生效。
sudo firewall-cmd --reload2.10.8、高级功能
端口转发
# 将本地端口 8080 转发到 80
sudo firewall-cmd --zonepublic --add-forward-portport8080:prototcp:toport80# 永久生效
sudo firewall-cmd --zonepublic --add-forward-portport8080:prototcp:toport80 --permanent富规则Rich Rules
# 富规则允许更复杂的规则配置。
# 允许某个 IP 访问特定端口
sudo firewall-cmd --zonepublic --add-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port22 accept
# 永久生效
sudo firewall-cmd --zonepublic --add-rich-rulerule familyipv4 source address192.168.1.100 port protocoltcp port22 accept --permanent2.10.9、备份和恢复配置
# 备份配置
sudo cp /etc/firewalld/firewalld.conf /etc/firewalld/firewalld.conf.bak# 恢复配置
sudo cp /etc/firewalld/firewalld.conf.bak /etc/firewalld/firewalld.conf
sudo firewall-cmd --reload2.10.10、日志管理
# 查看 firewalld 日志
sudo journalctl -u firewalld# 实时查看日志
sudo journalctl -u firewalld -f2.10.11、注意事项
永久规则使用 --permanent 选项的规则需要重载–reload后才能生效。区域选择根据网络环境选择合适的区域如 public、work、home 等。测试规则在应用新规则前建议先测试避免意外阻断网络连接。
2.11、iptables
iptables 命令是 Linux 上常用的防火墙软件是 netfilter 项目的一部分。可以直接配置也可以通过许多前端和图形界面配置。
2.11.1、基本概念
表Tablesiptables 有多个表每个表用于不同的功能 filter默认表用于过滤数据包允许或拒绝。nat用于网络地址转换NAT。mangle用于修改数据包头如 TTL、TOS。raw用于配置数据包是否被连接跟踪。 链Chains每个表包含多个链链是规则的集合 INPUT处理进入本机的数据包。OUTPUT处理从本机发出的数据包。FORWARD处理转发的数据包。PREROUTING用于 nat 表在路由之前修改数据包。POSTROUTING用于 nat 表在路由之后修改数据包。 规则Rules每条规则定义了对数据包的处理方式如允许、拒绝、丢弃。
2.11.2、基本语法
iptables [-t 表名] 命令 [链名] [规则] [动作]常用命令
-A 在链的末尾添加规则。-I 在链的开头或指定位置插入规则。-D 删除链中的规则。-L 列出链中的规则。-F 清空链中的所有规则。-P 设置链的默认策略如 ACCEPT、DROP。-N 创建新的用户自定义链。-X 删除用户自定义链。-E 重命名用户自定义链。
常用选项
-p 指定协议如 tcp、udp、icmp。--dport 指定目标端口。--sport 指定源端口。-s 指定源地址。-d 指定目标地址。-i 指定输入网络接口。-o 指定输出网络接口。-j 指定动作如 ACCEPT、DROP、REJECT。-m 使用扩展模块如 state、multiport。
2.11.3、常用操作
查看规则
# 查看 filter 表的规则
iptables -L -n -v# 查看 nat 表的规则
iptables -t nat -L -n -v清空规则
# 清空 filter 表的所有规则
iptables -F# 清空 nat 表的所有规则
iptables -t nat -F设置默认策略
# 设置 INPUT 链的默认策略为 DROP
iptables -P INPUT DROP# 设置 OUTPUT 链的默认策略为 ACCEPT
iptables -P OUTPUT ACCEPT# 设置 FORWARD 链的默认策略为 DROP
iptables -P FORWARD DROP允许或拒绝流量
# 允许来自 192.168.1.0/24 的流量
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT# 拒绝来自 192.168.1.100 的流量
iptables -A INPUT -s 192.168.1.100 -j DROP# 允许访问本机的 22 端口SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许本机访问外部 80 端口HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT使用扩展模块
# 允许已建立的连接和相关的流量
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT# 允许访问多个端口如 80 和 443
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPTNAT配置
# 启用 IP 转发
echo 1 /proc/sys/net/ipv4/ip_forward# 配置源地址转换SNAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE# 配置目标地址转换DNAT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80802.11.4、保护和恢复规则
iptables 的规则在重启后会丢失需要手动保存和恢复。 保存规则
# 保存规则到文件
iptables-save /etc/iptables/rules.v4
恢复规则# 从文件恢复规则
iptables-restore /etc/iptables/rules.v4# 自动保存和恢复
# 在 Debian/Ubuntu 系统中可以使用 iptables-persistent 包
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload2.11.5、调试和日志
# 记录被拒绝的数据包
iptables -A INPUT -j LOG --log-prefix iptables-dropped: # 查看日志
tail -f /var/log/syslog2.11.6、注意事项
谨慎操作在远程服务器上配置 iptables 时确保不会阻断自己的连接如 SSH。测试规则在应用新规则前建议先测试避免意外阻断网络连接。备份规则在修改规则前备份现有规则以便恢复。
2.12、host
host 是一个用于查询 DNS域名系统信息的命令行工具。它可以用来查找域名的 IP 地址、反向查找 IP 地址对应的域名以及查询域名的其他 DNS 记录如 MX、NS 等。以下是 host 命令的基本用法和常见操作。
2.12.1、基本用法
host [选项] 域名或IP地址 【DNS服务器】常用选项
-a 显示所有 DNS 记录相当于 -t ANY。-t 类型 查询指定类型的 DNS 记录如 A、MX、NS、TXT 等。-4 仅使用 IPv4 查询。-6 仅使用 IPv6 查询。-C 查询域名的 SOA 记录。-v 显示详细信息。-r 禁用递归查询。-W 超时 设置查询超时时间秒。
2.12.2、常用操作
查询域名的 IP 地址
host example.com
# 输出示例
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946查询指定类型的 DNS 记录
# 查询 MX 记录邮件服务器
host -t MX example.com# 查询 NS 记录域名服务器
host -t NS example.com# 查询 TXT 记录文本记录
host -t TXT example.com查询所有 DNS 记录
host -a example.com反向查找 IP 地址对应的域名
host 93.184.216.34
# 输出示例
34.216.184.93.in-addr.arpa domain name pointer example.com.指定 DNS 服务器查询
host example.com 8.8.8.8
#这将使用 Google 的公共 DNS 服务器8.8.8.8进行查询。查询域名的 SOA 记录
host -C example.com查询 IPv6 地址
host -t AAAA example.com设置查询超时时间
host -W 5 example.com
# 这将设置查询超时时间为 5 秒。2.12.3、高级用法
查询域名的 SPF 记录
host -t TXT example.com
# SPF 记录通常以 vspf1 开头。查询域名的 CNAME 记录
host -t CNAME www.example.com查询域名的 PTR 记录
host -t PTR 34.216.184.93.in-addr.arpa禁用递归查询
host -r example.com2.12.4、注意事项
DNS 缓存查询结果可能受到本地 DNS 缓存的影响。如果需要最新结果可以刷新 DNS 缓存。DNS 服务器默认情况下host 使用系统配置的 DNS 服务器。可以通过指定 DNS 服务器来覆盖默认设置。超时设置如果网络较慢可以增加超时时间以避免查询失败。
2.14.5、与其它工具比较
nslookup功能类似但交互性更强。dig功能更强大适合高级用户。
2.13、nslookup
nslookup 是一个用于查询 DNS域名系统信息的命令行工具。它可以用来查找域名的 IP 地址、反向查找 IP 地址对应的域名以及查询域名的其他 DNS 记录如 MX、NS 等。以下是 nslookup 命令的基本用法和常见操作。
2.13.1、基本用法
nslookup [选项] [域名或IP地址] [DNS服务器]常用选项
-type记录类型 查询指定类型的 DNS 记录如 A、MX、NS、TXT 等。-debug 显示详细的调试信息。-timeout秒 设置查询超时时间。-port端口 指定 DNS 服务器的端口默认是 53。
2.13.2、常用操作
查询域名的 IP 地址
nslookup example.com
# 输出示例
Server: 8.8.8.8
Address: 8.8.8.8#53Non-authoritative answer:
Name: example.com
Address: 93.184.216.34查询指定类型的 DNS 记录
# 查询 MX 记录邮件服务器
nslookup -typeMX example.com# 查询 NS 记录域名服务器
nslookup -typeNS example.com# 查询 TXT 记录文本记录
nslookup -typeTXT example.com反向查找 IP 地址对应的域名
nslookup 93.184.216.34
# 输出示例
34.216.184.93.in-addr.arpa name example.com.指定 DNS 服务器查询
nslookup example.com 8.8.8.8
# 这将使用 Google 的公共 DNS 服务器8.8.8.8进行查询。查询域名的 SOA 记录
nslookup -typeSOA example.com查询 IPv6 地址
nslookup -typeAAAA example.com设置查询超时时间
nslookup -timeout5 example.com
# 这将设置查询超时时间为 5 秒。2.13.3、交互模式
nslookup 支持交互模式可以在命令行中输入 nslookup 进入交互模式然后输入查询命令。
nslookupexample.comset typeMXexample.comexit2.13.4、高级用法
查询域名的 SPF 记录
nslookup -typeTXT example.com
# SPF 记录通常以 vspf1 开头。查询域名的 CNAME 记录
nslookup -typeCNAME www.example.com查询域名的 PTR 记录
nslookup -typePTR 34.216.184.93.in-addr.arpa显示详细的调试信息
nslookup -debug example.com2.13.5、注意事项
DNS 缓存查询结果可能受到本地 DNS 缓存的影响。如果需要最新结果可以刷新 DNS 缓存。DNS 服务器默认情况下nslookup 使用系统配置的 DNS 服务器。可以通过指定 DNS 服务器来覆盖默认设置。超时设置如果网络较慢可以增加超时时间以避免查询失败。
2.13.6、与其他工具的比较
host功能类似但输出更简洁。dig功能更强大适合高级用户。
2.14、nc/netcat
netcat通常简称为 nc是一个功能强大的网络工具被称为“网络瑞士军刀”。它可以用于创建 TCP/UDP 连接、端口扫描、文件传输、端口监听等。
2.14.1、基本用法
nc [选项] [主机名或IP地址] [端口]常用选项
-l 监听模式作为服务器。-p 端口 指定本地端口通常用于监听模式。-u 使用 UDP 协议默认是 TCP。-v 显示详细信息verbose。-vv 显示更详细的信息。-z 端口扫描模式不发送数据。-w 秒 设置超时时间。-n 直接使用 IP 地址不进行 DNS 解析。-e 命令 在连接后执行指定命令常用于反向 Shell。
2.14.2、常用操作
连接到远程服务器
nc example.com 80
# 连接到 example.com 的 80 端口HTTP 服务。连接成功后可以手动输入 HTTP 请求例如
GET / HTTP/1.1
Host: example.com监听端口作为服务器
nc -l -p 1234
#在本地 1234 端口监听连接。其他设备可以通过 nc IP地址 1234 连接到该端口。文件传输
# 发送文件从客户端到服务器
nc -l -p 1234 received_file.txt # 服务器端
nc example.com 1234 file_to_send.txt # 客户端
# 接收文件从服务器到客户端
nc -l -p 1234 file_to_send.txt # 服务器端
nc example.com 1234 received_file.txt # 客户端端口扫描
nc -zv example.com 20-30
#扫描 example.com 的 20 到 30 端口检查哪些端口是开放的。使用 UDP 协议
nc -u example.com 53
#使用 UDP 协议连接到 example.com 的 53 端口DNS 服务。反向 Shell
# 服务器端监听连接
nc -l -p 1234
# 客户端连接并执行 Shell
nc example.com 1234 -e /bin/bash
# 连接成功后服务器端可以执行 Shell 命令。聊天模式
# 服务器端
nc -l -p 1234
# 客户端
nc example.com 1234
# 连接成功后双方可以实时发送消息。测试网络连通性
nc -zv example.com 80
# 测试 example.com 的 80 端口是否开放。设置超时时间
nc -w 5 example.com 80
# 设置连接超时时间为 5 秒。直接使用 IP 地址
nc -n 192.168.1.1 80
# 直接使用 IP 地址不进行 DNS 解析。2.14.3、高级用法
创建 HTTP 服务器
echo -e HTTP/1.1 200 OK\n\nHello, World! | nc -l -p 8080
# 在本地 8080 端口创建一个简单的 HTTP 服务器。访问 http://IP地址:8080 可以看到 Hello, World!。创建反向代理
nc -l -p 1234 | nc example.com 80
# 将本地 1234 端口的流量转发到 example.com 的 80 端口。测试 SMTP 服务器
nc example.com 25
# 连接到 example.com 的 25 端口SMTP 服务可以手动输入 SMTP 命令进行测试。测试 DNS 服务器
nc -u example.com 53
# 连接到 example.com 的 53 端口DNS 服务可以手动发送 DNS 查询。2.14.4、注意事项
安全性netcat 功能强大但使用不当可能导致安全风险如反向 Shell。在生产环境中应谨慎使用。防火墙确保防火墙允许相关端口的流量。版本差异不同操作系统上的 netcat 版本可能略有差异某些选项可能不可用。
2.14.5、与其它工具比较
telnet功能类似但 netcat 更强大。socat功能更强大支持更多协议和高级功能。nmap更适合端口扫描和网络探测。
2.15、ping
ping 命令用来测试主机之间网络的连通性。执行 ping 指令会使用 ICMP 传输协议发出要求回应的信息若远端主机的网络功能没有问题就会回应该信息因而得知该主机运作正常。
2.15.1、基本用法
ping [选项] [目标主机名或IP地址]常用选项
-c 次数 指定发送的 ICMP 包次数。-i 秒 设置发送 ICMP 包的时间间隔默认 1 秒。-s 字节 设置 ICMP 包的大小默认 56 字节。-t TTL 设置 ICMP 包的生存时间TTL。-W 秒 设置等待响应的超时时间。-q 静默模式只显示统计信息。-v 显示详细信息。-4 强制使用 IPv4。-6 强制使用 IPv6。
2.15.2、常用操作
测试网络连通性
ping example.com
#持续向 example.com 发送 ICMP 包直到手动停止按 CtrlC。指定发送次数
ping -c 5 example.com
#向 example.com 发送 5 个 ICMP 包后停止。设置发送间隔
ping -i 2 example.com
# 每隔 2 秒发送一个 ICMP 包。设置包大小
ping -s 1000 example.com
# 发送大小为 1000 字节的 ICMP 包。设置超时时间
ping -W 3 example.com
# 等待响应的超时时间为 3 秒。静默模式
ping -c 5 -q example.com
# 只显示统计信息不显示每个 ICMP 包的详细信息。强制使用 IPv4 或 IPv6
ping -4 example.com # 强制使用 IPv4
ping -6 example.com # 强制使用 IPv62.15.3、输出解析
ping 命令的典型输出如下
PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq0 ttl55 time25.3 ms
64 bytes from 93.184.216.34: icmp_seq1 ttl55 time24.8 ms
64 bytes from 93.184.216.34: icmp_seq2 ttl55 time25.1 ms--- example.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev 24.8/25.1/25.3/0.2 msicmp_seqICMP 包的序列号。ttl包的生存时间Time To Live。time包的往返时间Round-Trip Time, RTT。packet loss丢包率。min/avg/max/stddev最小、平均、最大和标准偏差的往返时间。
2.15.4、高级用法
测试本地网络
ping 127.0.0.1
# 测试本地环回接口检查网络协议栈是否正常。测试局域网设备
ping 192.168.1.1
# 测试局域网中的设备如路由器是否可达。测试 DNS 解析
ping example.com
# 测试 DNS 解析是否正常同时检查目标主机是否可达。测试网络性能
ping -c 10 -i 0.5 example.com
# 通过发送 10 个 ICMP 包间隔 0.5 秒测试网络延迟和稳定性。检查 MTU 大小
ping -s 1472 -M do example.com
# 测试最大传输单元MTU大小。如果包大小超过 MTU会收到“Packet needs to be fragmented”的提示。2.15.4、注意事项
权限在某些系统中ping 需要管理员权限如 Linux 中使用 sudo。防火墙目标主机的防火墙可能阻止 ICMP 包导致 ping 失败。网络问题如果 ping 失败可能是网络配置、路由或硬件问题。
2.15.5、与其他工具的比较
traceroute用于追踪数据包从源到目标的路径。mtr结合 ping 和 traceroute 的功能实时显示网络状况。fping快速并行 ping 多个主机。
2.16、traceroute
traceroute 是一个网络诊断工具用于追踪数据包从源主机到目标主机的路径。它通过发送一系列 ICMP 或 UDP 包并逐步增加 TTLTime To Live值从而显示数据包经过的每一跳路由器或网关的 IP 地址和延迟信息。它默认发送的数据包大小是 40 字节。
2.16.1、基本用法
traceroute [选项] [目标主机名或IP地址]常用选项
-I 使用 ICMP 包默认使用 UDP 包。-T 使用 TCP SYN 包。-n 不解析主机名直接显示 IP 地址。-m 最大跳数 设置最大跳数默认 30。-q 查询次数 每跳发送的查询次数默认 3。-w 超时时间 设置等待响应的超时时间秒。-4 强制使用 IPv4。-6 强制使用 IPv6。
2.16.2、常用操作
追踪路径
traceroute example.com
# 追踪数据包到 example.com 的路径。使用 ICMP 包
traceroute -I example.com
# 使用 ICMP 包代替默认的 UDP 包。不解析主机名
traceroute -n example.com
# 直接显示 IP 地址不解析主机名。设置最大跳数
traceroute -m 20 example.com
# 设置最大跳数为 20。设置查询次数
traceroute -q 5 example.com
# 每跳发送 5 个查询包。设置超时时间
traceroute -w 2 example.com
# 设置等待响应的超时时间为 2 秒。强制使用 IPv4 或 IPv6
traceroute -4 example.com # 强制使用 IPv4
traceroute -6 example.com # 强制使用 IPv62.16.3、输出解析
traceroute 命令的典型输出如下
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets1 192.168.1.1 (192.168.1.1) 1.234 ms 1.345 ms 1.456 ms2 10.0.0.1 (10.0.0.1) 5.678 ms 5.789 ms 5.890 ms3 203.0.113.1 (203.0.113.1) 10.123 ms 10.234 ms 10.345 ms4 93.184.216.34 (93.184.216.34) 25.678 ms 25.789 ms 25.890 ms跳数每行的第一个数字表示跳数即经过的路由器数量。IP 地址和主机名显示每一跳的 IP 地址和主机名如果启用解析。延迟每跳的延迟时间通常显示 3 个值分别对应 3 次查询。
2.16.4、高级用法
追踪本地网络
traceroute 192.168.1.1
# 追踪局域网中的设备如路由器路径。追踪 IPv6 地址
traceroute -6 example.com
# 追踪 IPv6 地址的路径。使用 TCP SYN 包
traceroute -T example.com
# 使用 TCP SYN 包代替默认的 UDP 包。检查防火墙规则
traceroute -T -p 80 example.com
# 使用 TCP SYN 包并指定端口如 80检查防火墙是否允许该端口的流量。设置包大小
traceroute -s 100 example.com
# 设置 ICMP 包的大小为 100 字节。2.16.5、注意事项
权限在某些系统中traceroute 需要管理员权限如 Linux 中使用 sudo。防火墙目标主机的防火墙可能阻止 ICMP 或 UDP 包导致某些跳无法显示。网络问题如果 traceroute 显示 *表示该跳未响应可能是网络配置或硬件问题。
2.16.6、与其他工具的比较
ping测试主机之间的连通性和延迟。mtr结合 ping 和 traceroute 的功能实时显示网络状况。pathpingWindows结合 ping 和 tracert 的功能提供更详细的统计信息。
2.17、netstat
netstat 是一个功能强大的网络工具用于显示网络连接、路由表、接口统计信息、伪装连接、多播成员等信息。它可以帮助你监控和分析网络活动。
2.17.1、基本用法
netstat [选项]常用选项
-a 显示所有连接和监听端口。-t 显示 TCP 连接。-u 显示 UDP 连接。-n 以数字形式显示地址和端口号不解析主机名和服务名。-p 显示进程 ID 和程序名称。-r 显示路由表。-s 显示每个协议的统计信息。-l 显示监听中的端口。-c 持续输出信息实时刷新。-i 显示网络接口的统计信息。-g 显示多播组成员信息。
2.17.2、常用操作
显示所有连接和监听端口
netstat -a
# 显示所有活动的网络连接和监听端口。显示 TCP 连接
netstat -at
# 显示所有 TCP 连接。显示 UDP 连接
netstat -au
# 显示所有 UDP 连接。以数字形式显示地址和端口
netstat -an
# 显示所有连接但不解析主机名和服务名。显示进程 ID 和程序名称
netstat -tunp
# 显示 TCP 和 UDP 连接并显示进程 ID 和程序名称。显示路由表
netstat -r
# 显示系统的路由表。显示协议统计信息
netstat -s
# 显示每个协议如 TCP、UDP、ICMP 等的统计信息。显示监听中的端口
netstat -l
# 显示所有监听中的端口。持续输出信息
netstat -c
# 持续输出网络连接信息类似于实时监控。显示网络接口统计信息
netstat -i
# 显示网络接口的统计信息包括接收和发送的数据包数量。显示多播组成员信息
netstat -g
# 显示多播组成员信息。2.17.3、输出解析
连接信息
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:22 192.168.1.1:54321 ESTABLISHEDProto协议类型如 TCP、UDP。Recv-Q接收队列中的数据量。Send-Q发送队列中的数据量。Local Address本地地址和端口。Foreign Address远程地址和端口。State连接状态如 ESTABLISHED、LISTENING。
路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0Destination目标网络或主机。Gateway网关地址。Genmask子网掩码。Flags路由标志如 U活动G网关。Metric路由成本。Iface网络接口。
接口统计信息
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 12345 0 0 0 6789 0 0 0 BMRUIface网络接口名称。MTU最大传输单元。RX-OK/TX-OK成功接收/发送的数据包数量。RX-ERR/TX-ERR接收/发送错误的数据包数量。RX-DRP/TX-DRP丢弃的接收/发送数据包数量。RX-OVR/TX-OVR接收/发送溢出的数据包数量。Flg接口标志如 B广播M多播R运行U活动。
2.17.4、高级用法
显示 TCP 连接的进程信息
netstat -tnp
# 显示所有 TCP 连接并显示进程 ID 和程序名称。显示 UDP 连接的进程信息
netstat -unp
# 显示所有 UDP 连接并显示进程 ID 和程序名称。显示监听中的 TCP 端口
netstat -ltn
# 显示所有监听中的 TCP 端口并以数字形式显示地址和端口。显示监听中的 UDP 端口
netstat -lun
# 显示所有监听中的 UDP 端口并以数字形式显示地址和端口。显示所有网络接口的详细信息
netstat -ie
# 显示所有网络接口的详细信息包括 IP 地址、MAC 地址等。显示多播组成员信息
netstat -g
# 显示多播组成员信息包括接口和多播地址。2.17.5、注意事项
权限在某些系统中netstat 需要管理员权限如 Linux 中使用 sudo。替代工具在某些现代 Linux 发行版中ss 和 ip 命令已逐渐取代 netstat功能更强大且性能更好。
2.17.6、与其它工具的比较
ss显示套接字统计信息功能更强大且性能更好。ip显示和配置网络接口、路由、地址等信息。lsof显示打开的文件和网络连接。