Solved!
I considered the hypothesis of a dumb NAT which couldn't support more than one connection per source/destination pair, so I opened two concurrent instances of mysql-client on a generic VM (as in diagram), but they worked fine. Also I disabled the slave MySQL server, then rebooted the DSL 'router', but still from the slave host I couldn't reach the master.
Then I
tcpdump-ed the client, just to find that it was dialoguing in "full duplex" with master, so there didn't appear to be a connection block along the chain.
Finally, I spotted an odd inconsistency within slave's
/etc/mysql/my.cfn, which was:
Code:
[client]
port = 3307
socket = /var/run/mysqld/mysqld.sock
so the cmd-line client launched from the slave host was attempting to reach the master from a nonstandard port, hence got rejected without much eloquent explanation, requiring wild guesses.
The port was so configured a long while ago to allow another instance of MySQL to run on a different VM within the same OpenVZ host. AFAIR the MySQL instances were in port conflict, even if they run on separate VMs.