SYNPROXY and ICMP frag needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I hope that I do ask on the right list.
I'am using SYNPROXY target in production and it's really great.

But I'm unable to make Linux Kernel passive PMTU discovery working when using the SYNPROXY target.
I suspect that it comes from the fact that the connctrack entry for the established connexion do
not match with the ICMP fragmentation needed packet the server is receiving.

The setup is quite simple.

iptables -t raw -A PREROUTING -i eth0 -p tcp --dport 80 --syn -j NOTRACK
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state UNTRACKED,INVALID \
  -j SYNPROXY --sack-perm --timestamp --mss 1460 --wscale 7 --ecn

echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

The server using SYNPROXY is hosting a Haproxy with an MTU 1500 and a SYNPROXY MSS set to 1460. The
client has an smaller MTU on his path (1400).
The TCP handshake works correctly, the client send his request (GET /) then the server answer with
a too big packet and receives ICMP fragmentation needed packets which are accepted by iptables
rules, but the server keep retransmit too big packets and connection never works.

I tried several kernel version (as now using 4.9) and as soon as I remove iptables SYNPROXY related
rules (SYNPROXY and TCP no track) the passive PMTU discovery works again.
Have you ever faced this issue is it a known problem when using SYNPROXY or am I facing something
else ?

Thank you for your time.

Best Regards,
-- 
Yannis Aribaud
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux