- 網路配置
- 服務管理
- 防火牆配置
- 檔案下載wget和curl
- 網路連線資訊netstat和ss
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 的方法:
- 編輯網路介面配置檔案
sudo vim /etc/network/interfaces
- 編輯靜態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 伺服器
- 儲存並退出編輯器,重新啟動網路服務
sudo systemctl restart NetworkManager
還有透過 netplan 管理網路的方式。
服務管理
systemctl
和 service
都是用於管理系統服務的命令列工具。
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防火牆工具包括 iptables
和 firewalld
,用於配置和管理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
curl
和 wget
都是在命令列下使用的用於下載檔案的工具。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
ss
和 netstat
都是用於檢視系統網路連線資訊的命令列工具。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( ̄▽ ̄)ブ