Networking

丟棄 RST 與使用 NOTRACK

  • July 5, 2020

我正在建立自己的防火牆。可以說我正在建構使用者空間 TCP/IP 堆棧。

但是,當核心接收到它無法辨識的數據包時,核心會發送 RST + ACK(不確定它是否發送了 ACK(更新:它似乎確實發送了 ACK))。

因為,我沒有打開任何埠,所以我需要一種方法來覆蓋核心的預設行為。

我發現人們建議使用 IP 表來阻止傳出的 RST,並且還找到了一個建議使用 NOTRACK 的答案。

我不知道 NOTRACK 是如何工作的,它的優點和缺點。阻止 RST 給我帶來了另一個挑戰,因為我需要關閉連接,但是阻止 RST 使我很難發送我自己的 RST。

iptables -t raw -A PREROUTING -p tcp --port 8080 -j NOTRACK

我的假設是這條規則會阻止核心控制進入 8080 埠的數據包,如果這是真的,它會比阻止 RST 好得多。

更新:

實際上,我必須使用 Wireshark 對此進行測試。即使在添加了 NOTRACK 規則之後,仍然會出現 RST,因此,我不確定 NOTRACK 的用途。

iptables -t raw -A PREROUTING -p tcp --sport 443 -j NOTRACK

NOTRACK防止在連接跟踪中跟踪該連接。

引用自:https://unix.stackexchange.com/questions/596874