Linux 網路與防火牆設定筆記

網路 IP 設定

查詢網卡與 IP

# 顯示所有網卡與 IP 資訊
ip addr

使用 nmtui 設定 IP(限使用 NetworkManager 的系統)

# 啟動文字介面網路設定工具
nmtui

操作步驟:

  1. 選擇 Edit a connection
  2. 選擇網卡(如 ens33
  3. 設定方式選擇 Manual
  4. 設定 IP、Gateway、DNS
  5. 勾選 Automatically connect
  6. 按 OK 儲存離開
  7. 回到主畫面選 Activate a connection 重新啟用連線

路由設定

顯示路由表

# 舊指令(route 為 net-tools 套件)
route -n

# 推薦指令(iproute2 套件)
ip route

新增/刪除路由(建議用 ip route

# 新增路由(指定閘道與網卡)
ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0

# 刪除路由
ip route del 192.168.10.0/24

網路狀態觀察

使用 netstat(過時但仍常見)

# 顯示所有 TCP/UDP 監聽狀態(避免 DNS 反查)
netstat -tuln
參數 說明
-t 顯示 TCP
-u 顯示 UDP
-l 只顯示 Listen 中的 socket
-n 顯示 IP/Port 數值,不做反查
-p 顯示對應的程序
-r 顯示路由表
-c 每秒更新

使用 ss(建議替代 netstat)

ss -tuln

防火牆 firewalld(使用 firewall-cmd)

設定檔路徑

/etc/firewalld

查詢與管理狀態

firewall-cmd --state               # 是否啟用
firewall-cmd --reload              # 重載設定
firewall-cmd --runtime-to-permanent  # 將目前設定存成永久

查詢區域與服務

firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
firewall-cmd --list-all

開啟常見服務

# 開啟 HTTP 服務
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

# 開啟自訂埠號
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

啟用 NAT 偽裝

firewall-cmd --add-masquerade --permanent
firewall-cmd --reload

防火牆區域說明(Zone)

區域名稱 說明
trusted 信任所有封包,不做過濾
home 家用網路,允許區網內大部分連線
work 工作網路,允許部分連線
internal 用於 NAT 內部網路
dmz 對外公開服務主機使用
public 預設區域,僅允許明確允許的服務
external 外部介面,建議配合 NAT 使用
block 拒絕所有連入封包,回應拒絕訊息
drop 丟棄所有連入封包,不做回應

nftables 防火牆(新一代工具)

檢查系統是否支援

nft list ruleset

若無任何回傳表示尚未設定規則。

基本指令

# 檢視目前規則(完整)
nft list ruleset

# 加入新規則集(可從檔案或直接輸入)
nft -f /etc/nftables.conf

建立簡易防火牆設定

建立檔案 /etc/nftables.conf,內容範例如下:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0;
        policy drop;

        # 允許 loopback
        iif "lo" accept

        # 允許已建立/相關連線
        ct state established,related accept

        # 允許 SSH
        tcp dport 22 accept

        # 允許 ICMP(如 ping)
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        # log and drop 其他封包
        log prefix "nftables-in: " flags all
    }

    chain forward {
        type filter hook forward priority 0;
        policy drop;
    }

    chain output {
        type filter hook output priority 0;
        policy accept;
    }
}

啟用設定:

nft -f /etc/nftables.conf

開機自動載入(以 systemd 管理):

# 編輯 nftables systemd 服務
systemctl enable nftables
systemctl start nftables

常用管理指令

nft add rule inet filter input tcp dport 80 accept      # 新增規則
nft delete rule inet filter input handle 5              # 根據 handle 編號刪除
nft flush ruleset                                       # 清空所有規則

顯示指定 table/chain

nft list table inet filter
nft list chain inet filter input

小結建議

工具 狀態 備註
netstat / route 已過時 建議使用 ss / ip
firewalld RHEL/CentOS/Fedora 預設工具 適合 GUI 友好者
nftables Linux 現行標準防火牆(iptables 後繼) 適合高階用戶與腳本