Posted March 17, 2019
advowson: Good to hear.
Yep it's reproducible: karlyan17: For the POSTROUTING chain I have MASQUERADE instead of SNAT which seems to work fine (i guess if not specified, the same sport is the same?).
advowson: Yes, mostly. They try to keep the same port if possible. That may not work for you if you use DNAT to rewrite the Internet-side view of player's UDP ports to fixed values, but let MASQUERADE/SNAT guess what to use. If your configuration works, let it be. If it breaks, that mismatch is where I would start investigating. karlyan17: The problem was, that I configured forwarding for both tcp and udp and somehow that did not work? I don't understand why this should be a problem, but that's what did it for me. Do you know why that is by any chance?
advowson: I don't. Diablo uses TCP/6112 to talk to battle.net for logon/chat/matchmaking, but only UDP/6112 to talk to other players. (It also uses UDP/6112 to battle.net, but that's mostly just for latency measurement and the early warning that your firewall might not let others join. If not for the client locking out the create/join buttons when you fail to use UDP to battle.net, you wouldn't need UDP to battle.net to work at all.) If your tcp forwarding somehow misrouted traffic so that attempts to talk to battle.net were sent elsewhere, that would break affected users' ability to get on battle.net, but I would not expect any other consequences. What exactly went wrong when your bad tcp rule was present? Can you reproduce the failure at will by restoring the bad rule? With both tcp and udp forwarded I cannot connect to battlenet at all (not even chat-only).
With only udp I can play normally.
MAYBE it is because I use ferm to configure iptables, but I checked the resulting iptables rules and they seem fine.