网络操作命令70~77
70.telnet:测试端口连通性
用法:telnet 主机名或IP 端口号
telnet 192.168.25.20 80
# 说明:
# - 如果连接成功,显示 "Connected to ..."。
# - 如果失败,显示 "Connection refused" 或 "Unable to connect"。
71.tcpdump:网络数据包捕获工具
用法:tcpdump [选项] [过滤条件]
- 强大的网络抓包工具,支持实时查看或保存数据包,用于分析网络问题。
常用操作:
# tcpdump 常用选项:
# -i:指定监听的网络接口(如 ens33)。
# -w:将捕获的数据包保存到文件(如 capture.pcap)。
# -r:从文件中读取并解析数据包(如读取保存的 pcap 文件)。
# -n:不解析主机名和服务名称,直接显示 IP 和端口号。
# -nn:同时禁用主机名和端口解析,显示数字地址和端口号。
# -c:限制捕获的数据包数量(如 -c 10 表示捕获 10 个包后退出)。
# -X:显示数据包的十六进制和 ASCII 内容。
# -A:以 ASCII 格式显示数据包内容(适合查看 HTTP 数据)。
# -v:显示数据包的详细信息
# 1. 捕获指定接口上的所有数据包
tcpdump -i ens33
# 2. 捕获并保存数据包到文件
tcpdump -i ens33 -w capture.pcap
# 3. 捕获来自特定 IP 的数据包
tcpdump -i ens33 src 192.168.1.100
# 4. 捕获目标 IP 的数据包
tcpdump -i ens33 dst 192.168.1.200
# 5. 捕获特定端口(如 80)上的流量
tcpdump -i ens33 port 80
# 6. 捕获来自特定源 IP 且目标端口为 80 的数据包,并保存到文件 capture.pcap 里
tcpdump -i ens33 src 192.168.1.100 and dst port 80 -w capture.pcap -nn -v
72.nc (Netcat):网络工具的瑞士军刀
“不仅能测试端口,还能传文件、模拟服务,样样精通!”
用法:nc 选项 [主机名或IP] [端口号]
- 支持 TCP 和 UDP 协议,用于网络调试、文件传输、服务模拟等。
常用操作:
# nc 常用选项:
# -l :监听模式,用于在本地创建服务器,等待客户端连接。
# -z :扫描模式,检查端口是否开放,不发送任何数据。
# -v :启用详细模式,输出更多的调试信息。
# -u :使用 UDP 协议进行连接,而不是默认的 TCP。
# -p :指定源端口。
# -w :设置超时时间,单位为秒。
# -n :禁用 DNS 解析,直接使用 IP 地址,而不是域名。
# -v :详细输出,显示连接过程中的所有信息。
# 1. 连接到远程主机的指定端口(TCP连接)
nc example.com 80
# 2. 监听本地端口(创建服务器,等待连接)
nc -l 12345
# 3. 通过 netcat 发送文件到远程主机
# 在远程机器上执行:nc -l 12345 > received_file.txt
# 在本地机器上执行:nc remote_host 12345 < file_to_send.txt
# 4. 使用 UDP 协议发送数据
nc -u -l 12345 # 监听 UDP 端口 12345
nc -u remote_host 12345 # 发送数据到指定 UDP 端口
# 5. 测试端口是否开放(可以用来检查某些端口是否能够连接)
nc -zv example.com 80 443
# 6. 扫描端口范围(测试哪些端口开放)
nc -zv example.com 1-1000
# 7. 通过 nc 实现简易的端到端聊天
# 在一台机器上执行:nc -l 12345
# 在另一台机器上执行:nc localhost 12345
# 然后你就可以发送消息了
# 8. 创建一个简单的 HTTP 请求
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80
# 9. 发送数据并接收响应
echo "Hello, World!" | nc example.com 80
小总结:
- 测试端口: 用
-zv查看目标主机端口是否开放。 - 文件传输: 配合
-l模式,简单实现发送和接收。 - 模拟客户端: 手动发送请求,调试服务(如 HTTP)。
nc 是命令行下的网络全能工具,调试与传输样样行!
73.ip/ifconfig:查看和管理网络配置
“网络连接有问题?用它查看或配置 IP 和路由!”
用法:ip [命令] [选项]
常用操作:
# 1. 查看网络接口信息【查看ip地址】
ip addr show = ip a
ifconfig
----------------------------------
# 2. 查看路由表
ip route show
# 3. 启用网络接口
ip link set ens33 up # 启用接口
ifconfig ens33 up # 启用接口
# 4. 禁用网络接口
ip link set ens33 down
ifconfig ens33 down
--------------------------------------------------------
#临时添加或修改ip地址
#ip命令 添加/修改 IP 地址(不会覆盖原有 IP,需先删除旧 IP)
ip addr add 192.168.1.100/24 dev ens33
# 删除旧 IP 地址
ip addr del 192.168.1.200/24 dev ens33
# 激活网络接口
ip link set ens33 up
# 查看当前 IP 配置
ip addr show ens33
#ifconfig命令
# 设置 IP 地址(会覆盖原有 IP)
ifconfig ens33 192.168.1.100 netmask 255.255.255.0
# 添加额外 IP 地址(不覆盖原有 IP)
ifconfig ens33:1 192.168.1.101 netmask 255.255.255.0
# 禁用网络接口
ifconfig ens3 down
---------------------------------------------------------
重启网络服务:
systemctl restart NetworkManager
命令对照表
| 功能 | ip 命令 | ifconfig / 其他命令 |
|---|---|---|
| 显示接口信息 | ip addr show |
ifconfig |
| 启用 / 禁用接口 | ip link set ens33 up/down |
ifconfig ens33 up/down |
| 设置 IP 地址 | ip addr add 192.168.1.100/24 dev ens33 |
ifconfig ens33 192.168.1.100 netmask 255.255.255.0 |
| 删除 IP 地址 | ip addr del 192.168.1.100/24 dev ens33 |
- |
| 显示路由表 | ip route show |
route -n |
| 添加默认网关 | ip route add default via 192.168.1.1 |
route add default gw 192.168.1.1 |
| 显示 ARP 表 | ip neigh show |
arp -a |
| 创建 VLAN 接口 | ip link add link ens33 name ens33.10 type vlan id 10 |
- |
| 显示网络命名空间 | ip netns list |
- |
74.nmtui:半图形化网络管理命令
- 修改ip地址 等价于
vim /etc/sysconfig/network-script/ifcfg-ens33 - 重启网卡
systemctl restart network - 修改主机名
hostnamectl set-hostname 主机名
75.ssh:安全的远程连接
通过非对称加密,实现数据传输过程中的安全性。
ssh协议
ssh 服务属于c/s Client/Server ;
远程客户端
-
ssh 用户名@ip/主机名/域名 [-p 端口号(默认22号)]
-
sshd:服务端,安装在服务器上(CentOS默认安装)
- CentOS:
yum install openssh-server - Ubuntu:
sudo apt install openssh-server
- CentOS:
SSH 协议的核心功能
- 远程登录
允许用户通过加密连接登录到远程服务器,就像在本地操作一样执行命令。例如,管理员可通过 SSH 远程管理 Linux 服务器。 - 安全文件传输
基于 SSH 协议的衍生工具(如 SCP、SFTP)支持加密的文件上传和下载,避免传统 FTP 的明文传输风险。 - 端口转发(隧道)
可创建加密 “隧道”,将其他协议(如 HTTP、MySQL)的流量通过 SSH 端口转发,实现安全访问(如访问内网数据库)。
SSH 工作原理
SSH 协议通过 非对称加密和对称加密 结合的方式实现安全通信,核心流程包括:
1. 握手阶段
- 客户端与服务器建立 TCP 连接(默认端口 22)。
- 双方协商协议版本(SSH-1 已淘汰,主流为 SSH-2)和加密算法(如 AES、ChaCha20)。
- 服务器向客户端发送公钥,客户端验证服务器身份(首次连接需用户确认公钥指纹)。
2. 密钥交换
- 客户端生成一个 会话密钥(对称加密密钥),用服务器的公钥加密后发送给服务器。
- 服务器用私钥解密得到会话密钥,双方后续通信均使用此密钥进行对称加密(效率更高)。
3. 身份认证
客户端需验证身份才能登录,主要方式有:
- 密码认证:输入服务器账户密码(明文在传输中被加密)。
- 公钥认证(更安全):客户端生成公钥/私钥对,将公钥上传到服务器;登录时,服务器用公钥加密随机信息,客户端用私钥解密并返回结果,验证通过即可登录(无需输入密码)。
修改sshd配置文件 :
vim /etc/ssh/sshd_config
systemctl restart sshd #重启sshd

- 跳板机:作为用户访问后端目标服务器(如生产服务器、数据库服务器等)的 唯一入口,用于集中管控、审计和保护对敏感资源的访问。
- 白名单
允许指定用户进行登录(白名单)
在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,
在配置文件末尾添加行格式如下(例如允许用户tom通过192.168.8.30登录)。
AllowUsers tom@192.168.8.30
或者
AllowUsers tom@192.168.8.0/24
# 重启sshd
systemctl restart sshd
配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。
- 黑名单
禁止指定用户登录(黑名单)
在 /etc/ssh/sshd_config 配置文件中设置DenyUsers选项,
# 在配置文件末尾添加行格式如下(例如禁止用户lily登录)。
DenyUsers lily
# 重启sshd
systemctl restart sshd
秘钥验证:
客户端的公钥存放到服务端,每次登录通过公钥进行验证,省略密码。
- 在客户端生成秘钥对;【私钥保存在本地,保证私钥安全】
ssh-keygen #生成秘钥 敲3个回车
- 将公钥发送到服务端; /root/.ssh/authorized_keys
ssh-copy-id root@192.168.25.20
- 之后进行登录自动识别身份;
ssh root@192.168.25.20
76.scp:远程文件复制
- 命令格式:
- 上传:将本地文件发送到目标服务器上;
- scp [-r] 原文件 root@ip:/目标路径
- 下载:将服务器上的文件下载到本地;
- scp [-r] root@ip:/路径 本地目录
# 将本地文件复制到远程服务器
scp redis-6.2.14.tar.gz root@192.168.8.20:/root
# 将远程服务器上的文件下载到本地
scp root@192.168.8.20:/root/20.txt ./
- scp是全量复制
77.rsync:高效文件同步工具
- rsync:支持增量传输,只同步变化的部分,比
scp更高效。 - 格式:
- rsync [选项] 本地文件 root@ip:路径
- rsync [选项] root@ip:文件 本地路径
- 选项:
- -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
- -v, --verbose 详细模式输出。
- -z, --compress 对备份的文件在传输时进行压缩处理。
- --delete 删除那些DST中SRC没有的文件。
# rsync同步目录或文件
rsync -avz --delete redis-6.2.14 root@192.168.8.20:/root
-
问题:如何实现实时同步?
#1.在客户端先下载inotify
yum install -y epel-release
yum install -y inotify-tools
#2.在客户端新建一个名为sync.sh的脚本文件
touch sync.sh
#3.在 sync.sh 文件内添加以下内容
-----------------------------------
#!/bin/bash
while inotifywait -r -e modify,create,delete,move /data/(客户机上要备份的目录);do
rsync -avz /data/(客户机上要备份的目录) root@192.168.8.11:/opt/data/(服务端的要保存备份的目录)
done
-----------------------------------
#4.授予脚本执行权限并执行
chmod +x sync.sh
./sync.sh
#5.测试同步功能是否实现
浙公网安备 33010602011771号