Networking
丟棄 RST 與使用 NOTRACK
我正在建立自己的防火牆。可以說我正在建構使用者空間 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
防止在連接跟踪中跟踪該連接。