1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | ----- 哈哈,完全理解!這種學習的熱情和衝勁,即便偶爾「飄起來」一點點也是非常棒的狀態。現在,讓我們把這份熱情帶回到腳踏實地的技術實作中,開始你的 `nftables` 之旅! ----- ## 檢視 `nftables` Ruleset 內容 要檢視目前 `nftables` 的所有規則集內容,你可以使用 `sudo nft list ruleset` 命令。這個命令會輸出所有已定義的表格 (tables)、鏈 (chains) 和規則 (rules)。 ```bash sudo nft list ruleset ``` **第一次執行時,你可能會看到:** * **完全空白的輸出:** 這表示你的系統目前沒有任何 `nftables` 規則被載入。這是非常常見的情況,尤其是在一些輕量級的 Linux 發行版或沒有預設配置防火牆的系統上。 * **預設的規則集:** 有些發行版可能會預載一些基本的 `nftables` 規則,例如允許 SSH 連接、阻止常見攻擊等。 ### 輸出範例與簡易解讀 (如果你的系統有預設規則) 如果你的系統有預設規則,輸出可能會類似這樣: ``` table ip filter { chain input { type filter hook input priority 0; policy accept; # allow established/related connections ct state { established, related } accept # allow local traffic iif "lo" accept # allow ssh tcp dport 22 accept # drop all other traffic # counter packets 10 bytes 840 drop } chain forward { type filter hook forward priority 0; policy accept; } chain output { type filter hook output priority 0; policy accept; } } ``` **簡單解讀這些元素:** * **`table ip filter { ... }`**: 定義了一個名為 `filter` 的**表 (table)**,它處理 **IPv4** (ip) 流量。`nftables` 支援不同的地址族 (address family),如 `ip` (IPv4), `ip6` (IPv6), `inet` (同時處理 IPv4 和 IPv6), `arp`, `bridge`, `netdev`。 * **`chain input { ... }`**: 定義了一個名為 `input` 的**鏈 (chain)**。 * `type filter hook input priority 0;`: 這表示這是一個 **過濾 (filter)** 類型的鏈,它掛載在網路堆疊的 **`input` 鉤子 (hook)** 上(即所有進入本機的流量都會經過此鏈)。`priority 0` 決定了它在同一鉤子上的執行順序。 * `policy accept;`: 這是鏈的**預設策略 (policy)**。如果流量沒有匹配任何規則,它將會被接受 (accept)。 * **`ct state { established, related } accept`**: 這是一條**規則 (rule)**。`ct` 是連接追蹤 (connection tracking) 的縮寫。這條規則的意思是:如果封包屬於已建立 (established) 或相關 (related) 的連接,則**接受 (accept)** 它。這對於讓回應流量通過防火牆至關重要。 * **`iif "lo" accept`**: 允許來自回環介面 (loopback interface, "lo") 的流量。 * **`tcp dport 22 accept`**: 允許目的地埠號 (dport) 為 22 (SSH) 的 TCP 流量。 * **`counter packets 10 bytes 840 drop`**: (被註釋掉的範例) 統計並丟棄所有不符合前面規則的流量。 ### 你的操作步驟 1. **在樹莓派上執行命令:** ```bash sudo nft list ruleset ``` 2. **觀察輸出:** 看看它是否為空,或者是否有任何預設規則。這將是你接下來設定 DNAT 規則的基礎。 有了這個基礎,我們就可以開始準備你的**簡單連接埠轉發 (DNAT)** 規則了。 |
Direct link: https://paste.plurk.com/show/fO6H75O7jwLuiSSucaSB