網路指令

網路連線、資料傳輸與遠端管理

curl

網絡請求工具

常用參數:

  • -O : 下載文件
  • -o : 下載並重命名
  • -I : 只顯示 headers
  • -H : 設置 header
  • -v : 顯示詳細信息
  • -L : 跟隨重定向
  • -X : 指定請求方法
  • -d : POST 數據
  • -b : 設置 cookie
  • -N : 禁用輸出緩衝
# 基本請求
curl https://reqbin.com/echo/get/json -H "Accept: application/json" -H "Authorization: Bearer {token}"

# POST 請求
curl -X POST https://testapi.net/prod/user/remove -H "Accept: application/json" -H "Authorization: Bearer ..."

# 帶 Body 的請求
curl -X POST -d '{"sql": "SELECT * FROM customers","db": "demo_data"}' -H "Content-Type: application/json" http://localhost:3000/sql-query

# 下載文件
curl -O http://www.some-site.com/some-file.txt

dig

DNS 查詢工具,比 nslookup 更強大

# 基本查詢
dig example.com

# 查詢特定記錄類型
dig example.com A
dig example.com MX
dig example.com TXT
dig example.com NS

# 簡潔輸出
dig +short example.com

# 追蹤 DNS 解析過程
dig +trace example.com

# 指定 DNS 伺服器
dig @8.8.8.8 example.com

# 反向查詢
dig -x 8.8.8.8

ip

網絡配置工具

# 檢查網絡接口
ip link

# 添加網關
ip route add 192.168.2.0/24 via 192.168.1.1

# 查看 IP 地址
ip addr

# 設置 IP 地址
ip addr add 192.168.1.10/24 dev eth0

# 查看路由表
ip route

# 刪除路由
sudo ip route del 192.168.0.0/24 via 192.168.1.1

mosh

移動式 Shell,支援斷線自動續連、低延遲

# 基本連接
mosh user@host

# 指定 SSH 端口
mosh --ssh="ssh -p 2222" user@host

# 指定 mosh 伺服器端口
mosh -p 60001 user@host

# 搭配 tmux 使用
mosh user@host -- tmux attach

特性:

  • 網路切換(WiFi ↔ 4G)不斷線
  • 高延遲環境即時回顯
  • 自動重連

mtr

網路診斷工具,結合 traceroute 與 ping

# 基本診斷
mtr example.com

# 報告模式(非互動)
mtr -r example.com

# 指定報告次數
mtr -r -c 10 example.com

# 顯示 IP(不解析主機名)
mtr -n example.com

# TCP 模式
mtr --tcp example.com

# 指定端口
mtr --tcp --port 443 example.com

netstat

網絡連接查看

# 列出所有使用的端口
sudo netstat -tulpn

nslookup

DNS 查詢

nslookup [domain]

openvpn

VPN 客戶端,用於建立加密 VPN 連接

# 使用配置檔連接
sudo openvpn --config client.ovpn

# 背景執行
sudo openvpn --config client.ovpn --daemon

# 指定認證檔案
sudo openvpn --config client.ovpn --auth-user-pass auth.txt

# 查看連接狀態
sudo systemctl status openvpn@client

常用配置:

  • .ovpn : OpenVPN 配置檔
  • auth.txt : 帳密檔(第一行用戶名,第二行密碼)

rsync

遠程文件同步

rsync -avz source/ destination/

sftp

SSH 文件傳輸協議

sftp user@host

ss

Socket 統計工具,netstat 的現代替代品

# 列出所有連接
ss

# 列出監聽中的端口
ss -l

# 顯示 TCP 連接
ss -t

# 顯示 UDP 連接
ss -u

# 顯示程序名稱
ss -p

# 常用組合:列出所有監聽的 TCP 端口與程序
ss -tlnp

# 顯示特定端口
ss -tlnp | grep :80

# 顯示連接統計
ss -s

# 顯示 socket 詳細資訊
ss -e

ssh

Remote login

ssh <username>@<server> -p <port>
# 測試密鑰
ssh -T git@github.com

# 移除舊的主機密鑰
ssh-keygen -R bitbucket.org

# 使用密鑰登錄
ssh -i [key] -v [username]@[ip]
ssh -i [Key.pem] ec2-user@[IP]

Local Forwarding

ssh -L p1:server:p2 remote

ssh-keygen

生成 SSH 密鑰對

ssh-keygen -t ed25519 -C "XXXXXXXXXXX@gmail.com"
ssh-keygen -t rsa -C "XXXXXXXXXXX@gmail.com"

ssh-keyscan

主機密鑰管理

ssh-keyscan -H github.com >> ~/.ssh/known_hosts

wget

下載文件

wget http://www.some-site.com/some-file.txt -O some-file.txt