http://bugs.winehq.org/show_bug.cgi?id=33008
--- Comment #12 from decimusmaximus@seznam.cz --- Hello, unfortunately bug is not fixed, even after a year. Tested on Wine 1.7.16 Problem is in the fact, that wine is listening on all interfaces (0.0.0.0) but traffic is filtered. Two interfaces: IF-A and IF-B, there is NAT (masquerading) running. IF-A is LAN, IF-B is interface with public IP.
I have created testing application to reproduce and investigate the problem. Application is listening on IF-B (public) only. When UDP datagram is sent from LAN (private) to IF-B (public) address, it is received on IF-A, NAT-ed to IF-B and received by application. Application is receiving UDP datagrams properly. Then the response is generated and sent back to client, but this response is filtered out by wine. Nothing is sent back. Application writes in log that UDP is received (from client's IP address) to 0.0.0.0 even it is listening only on specific IP (of IF-B). And this is the problem. Response is sent from binding 0.0.0.0 to target address from LAN (IF-A), but "it is not configured" to listen on this IF-A). (filtered!)
If I understand it correctly, wine is listening on 0.0.0.0 and filters UDP datagrams according to bindings that are set by application. So if application does not want to listen on some interface, this traffic is filtered, but in this specific case (two interfaces, NAT) also the response is filtered out. Destination address of response belongs to network of IF-A (where application is not listening), but in this case response should be sent via IF-B, translated back in NAT and flow via IF-A to LAN network. But such UDP datagram is blocked by wine.
I am afraid it is bad solution. When you check this in Windows, it is correctly listening on specific interface only, not on the all interfaces. Maybe there is another behaviour that prevents some applications to work properly in wine/linux (the reason why this filtering was added), but I am afraid this is also not correct solution and now another applications are/could be incompatible.