While in a hotel in Japan, I could not connect using IPv6 to my server. The ping
worked, and most strangely, using nc <ip> -6 22
worked too.
I connected using IPv4 and looked if I would see any packet when trying to SSH, but no, nothing to be seen, no SYN.
I was puzzled and fired up Wireshark on my laptop to see what was the difference between the packets leaving my computer.
The difference was the QoS traffic class. SSH sets a traffic class of 0x48
while establishing connection and for some reason the router was dropping those
packets.
Doing ssh -o IPQoS=none
worked.
To be sure that no application was getting dropped when trying to send packets, I did this system wide:
sudo ip6tables -t mangle -A OUTPUT -j DSCP --set-dscp 0
To temporarily set DSCP to 0 for all traffic to please the hotel router.