73.telnet:測試端口連通性
用法:telnet ?主機名或IP 端口號
測試目標主機的指定端口是否開放,檢查網絡服務連通性。
eg:
telnet www.baidu.com 80
# 說明:
# - 如果連接成功,顯示 "Connected to ..."。
# - 如果失敗,顯示 "Connection refused" 或 "Unable to connect"。
這會測試百度的 HTTP 服務(80 端口)是否可以連接。
常用場景:
測試服務器的特定服務是否正常運行。
檢查防火墻是否阻止了指定端口。
74.tcpdump:網絡數據包捕獲工具
用法:tcpdump ?[選項] ?[過濾條件]
強大的網絡抓包工具,支持實時查看或保存數據包,用于分析網絡問題。
# tcpdump 常用選項:
# -i:指定監聽的網絡接口(如 eth0,ens33)。
# -w:將捕獲的數據包保存到文件(如 capture.pcap)。
# -r:從文件中讀取并解析數據包(如讀取保存的 pcap 文件)。
# -n:不解析主機名和服務名稱,直接顯示 IP 和端口號。
# -nn:同時禁用主機名和端口解析,顯示數字地址和端口號。
# -c:限制捕獲的數據包數量(如 -c 10 表示捕獲 10 個包后退出)。
# -X:顯示數據包的十六進制和 ASCII 內容。
# -A:以 ASCII 格式顯示數據包內容(適合查看 HTTP 數據)。
# -v:顯示數據包的詳細信息
# 1.捕獲指定接口上的所有數據包
tcpdump -i eth0
# 2.捕獲并保存數據包到文件
tcpdump -i eth0 -w capture.pcap
# 3.捕獲來自特定 IP 的數據包
tcpdump -i eth0 src 192.168.1.100
# 4.捕獲目標 IP 的數據包
tcpdump -i eth0 dst 192.168.1.200
# 5.捕獲特定端口(如 80)上的流量
tcpdump -i eth0 port 80
# 6.捕獲來自特定源 IP 且目標端口為 80 的數據包,并保存到文件 capture.pcap 里
tcpdump -i eth0 src 192.168.1.100 and dst port 80 -w capture.pcap -nn -v # 比較常用!
·抓取數據包: 用 tcpdump -i 接口 監聽網絡流量。
·保存數據分析: 用 -w 保存為文件,配合 Wireshark 等工具分析。
·過濾特定流量: 配合 src、dst 或 port 篩選數據包。
·查看詳細信息: 用 -v 或更詳細的 -vv 輸出抓包細節。
75.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
76.ip/ifconfig:查看ip地址
用法:ip ?[命令] ?[選項]
lo:訪問自己
ens33:訪問別人
# 1. 查看ip地址(類似ifconfig)
ip addr show/ip -a
# 2. 查看路由表
ip route show
# 3. 啟用網絡接口
sudo ip link set eth0 up
# 4. 禁用網絡接口
sudo ip link set eth0 down
使用ifconfig需要先下載yum install net-tools(eth0改為ens33)
ifconfig ens33:0 192.168.8.11/24 down
補充一點:修改ip地址
使用ip命令(推薦)
1. 臨時添加一個新 IP 地址(不刪除原有地址)
ip addr add 192.168.1.100/24 dev eth0
192.168.1.100:新 IP 地址
/24:子網掩碼(等同于 255.255.255.0)
eth0:網絡接口名稱(需替換為實際接口名,如ens33)
2. 臨時修改(替換)當前 IP 地址
ip addr flush dev eth0 ?????????????????????# 清空當前所有IP配置
ip addr add 192.168.1.101/24 dev eth0 ??# 添加新IP
3. 臨時添加第二個 IP 地址(多 IP 配置)
ip addr add 192.168.1.102/24 dev eth0 label eth0:1
eth0:1:虛擬接口名稱(可自定義,用于區分多個 IP)
4. 激活 / 禁用網絡接口
ip link set eth0 up ???# 啟用接口
ip link set eth0 down ?# 禁用接口
使用ifconfig命令(傳統方法,部分系統已棄用)
1. 臨時添加一個新 IP 地址
ifconfig eth0:1 192.168.1.103 netmask 255.255.255.0 up
eth0:1:虛擬接口名稱
192.168.1.103:新 IP 地址
2. 臨時修改(替換)當前 IP 地址
ifconfig eth0 192.168.1.104 netmask 255.255.255.0
3. 激活 / 禁用網絡接口
ifconfig eth0 up ?????# 啟用接口
ifconfig eth0 down ??# 禁用接口
注意事項
臨時生效:上述方法配置的 IP 地址在重啟網絡服務或系統后會丟失。若需永久保存,需修改配置文件(如/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-eth0)。
權限要求:執行上述命令需要 root 權限(需使用sudo或切換到 root 用戶)。
檢查接口名稱:使用ip a或ifconfig查看實際網絡接口名稱(如eth0、ens33、enp0s3等)。
沖突避免:確保新 IP 地址不在 DHCP 分配范圍內,避免與其他設備沖突。
驗證配置
配置完成后,使用以下命令檢查 IP 地址是否生效:
ip a show eth0 ???????# 查看接口詳細信息
ping 192.168.1.1 ????# 測試網絡連通性
77.nmtui:半圖形化網絡管理命令
Network Manage tui
·修改ip地址 ?等價于vim ?/etc/sysconfig/network-script/ifcfg-ens33
·重啟網卡 ??????????systemctl ?restart ?network
·修改主機名 ????????hostnamectl ?set-hostname 主機名
78.ssh:安全的遠程連接
·通過非對稱加密,實現數據傳輸的安全性。
·ssh協議
SSH(Secure Shell)協議是一種用于在網絡中實現安全遠程登錄、文件傳輸和命令執行的加密網絡協議。它通過加密技術保護數據在傳輸過程中的安全性,有效替代了傳統的明文傳輸協議(如 Telnet、FTP),廣泛應用于服務器管理、網絡設備配置等場景。
一、SSH 協議的核心功能
遠程登錄
允許用戶通過加密連接登錄到遠程服務器,就像在本地操作一樣執行命令。例如,管理員可以通過 SSH 登錄到云服務器進行配置。
安全文件傳輸
基于 SSH 協議的衍生工具(如 SCP、SFTP)支持加密的文件上傳和下載,避免文件內容被竊聽或篡改。
端口轉發(隧道)
可建立加密 “隧道”,將其他協議(如 HTTP、MySQL)的流量通過 SSH 傳輸,實現安全的跨網絡訪問(例如訪問內網數據庫)。
遠程命令執行
支持在本地直接向遠程服務器發送命令并獲取結果,無需交互式登錄(常用于腳本自動化)。
二、SSH 的加密原理
SSH 協議通過非對稱加密和對稱加密結合的方式保證安全性,主要過程如下:
握手階段
客戶端與服務器建立 TCP 連接后,協商 SSH 版本和加密算法(如 AES、ChaCha20)。
服務器向客戶端發送公鑰,客戶端驗證公鑰合法性(首次連接時需手動確認)。
密鑰交換
客戶端生成一個臨時對稱密鑰,用服務器的公鑰加密后發送給服務器。
服務器用私鑰解密得到對稱密鑰,此后雙方使用該密鑰對所有通信內容進行加密(對稱加密效率更高)。
身份認證
密碼認證:客戶端發送加密后的密碼,服務器驗證。
密鑰認證(更安全):客戶端生成一對密鑰(公鑰 + 私鑰),公鑰存放在服務器,登錄時服務器用公鑰驗證客戶端私鑰,無需輸入密碼。
ssh服務屬于c/s ?Client/Server;
客戶端遠程連接:
ssh ?用戶名@ip/主機名/域名 ?[-p 端口號 (22)]
是否同意加密?yes
輸入對方密碼
exit 退出
允許指定用戶進行登錄(白名單)
在/etc/ssh/sshd_config 配置文件中設置AllowUsers選項,
在配置文件末尾添加行格式如下(例如允許用戶tom通過192.168.8.30登錄)。
AllowUsers tom@192.168.8.30
配置了指定用戶或者用戶組允許登錄后,默認拒絕其他所有用戶或者用戶組。
sshd:服務端,安裝在服務器上(CentOS默認安裝)
CentOS:yum ?install ?openssh-server
Ubuntu:sudo ?apt ?install ?openssh-server
修改sshd的配置文件:
vim ?/etc/ssh/sshd_config
systemctl ?restart ?sshd ??#重啟服務
·跳板機:跳板機(Jump Server)是一種部署在網絡邊界或內部網絡中的專用服務器,作為用戶訪問目標設備(如生產服務器、數據庫、網絡設備等)的中間節點,起到集中管控、安全審計、權限隔離的作用。
密鑰驗證
客戶端的公鑰存放到服務端,每次登錄通過公鑰進行驗證,省略密碼。
- 在客戶端生成密鑰對;私鑰保存在本地,保證私鑰的安全;
ssh-keygen ???????????????#默認三個回車
- 將公鑰發送到服務端/root/.ssh/authorized_keys進行保存;
ssh-copy-id ?用戶名@ip ??#輸入密碼(以下ip都是服務器的ip)
- 之后進行登錄自動識別身份;
ssh ?root@192.168.8.20
XShell免密登錄
1、工具——新建用戶密鑰生成向導——默認,下一步——完成
屬性里可以看公鑰,復制粘貼到服務器,vim .ssh/authorized_keys第二行
2、工具——身份驗證配置文件——密鑰類型:RSA;密鑰長度:2048;下一步——默認,下一步——點剛剛設置的,密鑰很多個就點第一個——點公鑰,把下面一長串復制到要登陸的服務器里面(服務器打開vim ?.ssh/authorized_keys如何粘貼到第二行)——點菜單欄里的斷開連接(在編輯下面)——用戶名輸入root——選擇密鑰登錄(public key),直接確定。
79.scp:遠程文件復制(和cp格式相似,只是改成了遠程的路徑)
命令格式:
上傳:將本地文件發送到目標服務器上;
scp ?[-r] ?原文件 ?root@ip:/目標路徑
客戶端 ??服務器
下載:將服務器上的文件下載到本地;
scp ?[-r] ?root@ip:/目標路徑 ?本地目錄
服務器 ??????????????客戶端
scp是全量復制:從頭到尾全部復制,速度相對較慢
80.rsync:高效文件同步工具
·rsync是增量復制、差異復制,支持增量傳輸,只同步變化的部分,比 scp 更高效。
只復制增加和修改的文件,一般用來做備份
·格式:rsync? ?[選項]? ?本地文件? ?root@ip:路徑
? ? ? ? ? ? rsync? ?[選項]? ?root@ip:文件? ?本地路徑
常用選項:
-a,--archive歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD。
-v,--verbose詳細模式輸出。
-z:--compress對備份的文件在傳輸時進行壓縮處理。
--delete:刪除目標中源目錄不存在的文件。
-e:指定遠程傳輸方式(如 SSH)。
# rsync同步目錄或文件
rsync -avz --delete redis-6.2.14 root@192.168.8.20:/root
問題:如何實現實時同步?
接下來,我們將配置rsync和inotify來實現實時文件同步:
1.生成SSH密鑰對并上傳公鑰 在服務端生成SSH密鑰對,并將公鑰上傳到客戶端,以便實現無密碼的SSH連接。
2.創建同步腳本 在服務端創建一個名為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
3.授予腳本執行權限并執行
chmod +x sync.sh
./sync.sh ??##腳本會一直運行,并在`/data/`目錄中的文件發生變化時進行實時同步
4.測試同步
在服務端/data目錄下新建名為12345的文件,服務端提示/data創建了12345文件,并開始發送增量文件。 切換到客戶端可以看到/data/目錄下所有文件已實時同步到客戶端/opt/data