revert(os_fingerprint): undo ip_no_pmtu_disc=1 for windows — was incorrect
ip_no_pmtu_disc controls PMTU discovery for UDP/ICMP paths only. TI=Z originates from ip_select_ident() in the kernel TCP stack setting IP ID=0 for DF=1 TCP packets — a namespace-scoped sysctl cannot change this. The previous commit was based on incorrect root-cause analysis.
This commit is contained in:
@@ -48,7 +48,7 @@ OS_SYSCTLS: dict[str, dict[str, str]] = {
|
||||
"net.ipv4.tcp_window_scaling": "1",
|
||||
"net.ipv4.tcp_sack": "1",
|
||||
"net.ipv4.tcp_ecn": "0",
|
||||
"net.ipv4.ip_no_pmtu_disc": "1", # avoid TI=Z: forces non-zero IP IDs
|
||||
"net.ipv4.ip_no_pmtu_disc": "0",
|
||||
"net.ipv4.tcp_fin_timeout": "30",
|
||||
},
|
||||
"bsd": {
|
||||
|
||||
@@ -133,10 +133,8 @@ def test_linux_ip_no_pmtu_disc_is_0():
|
||||
assert get_os_sysctls("linux")["net.ipv4.ip_no_pmtu_disc"] == "0"
|
||||
|
||||
|
||||
def test_windows_ip_no_pmtu_disc_is_1():
|
||||
# Set to 1 (not 0) to avoid TI=Z IP ID signal: when ip_no_pmtu_disc=0 the
|
||||
# kernel uses IP ID=0 for DF packets, which nmap classifies as Linux embedded.
|
||||
assert get_os_sysctls("windows")["net.ipv4.ip_no_pmtu_disc"] == "1"
|
||||
def test_windows_ip_no_pmtu_disc_is_0():
|
||||
assert get_os_sysctls("windows")["net.ipv4.ip_no_pmtu_disc"] == "0"
|
||||
|
||||
|
||||
def test_embedded_ip_no_pmtu_disc_is_1():
|
||||
|
||||
Reference in New Issue
Block a user