You say "Even running with no router." In 2018, this is mostly not possible anymore... you are probably using a router and don't know it, or at least some sort of modem-hybrid equipment that performs some rudimentary network address translation.
One thing that crops up is a change in DCC behavior depending on whether you are connected to an IRC server via SSL or not SSL. When you are not connected via SSL, your equipment may attempt to intercept CTCP DCC packets and perform translation on them, open ports for you, etc. Sometimes it works, often times it breaks things. When you are connected to an IRC server via SSL, your NAT can no longer inspect and augment these same packets, and so it either works suddenly, or it stops working suddenly, whichever boat you happen to be in.
If you have mIRC set to choose a random port from a range of ports, try changing this to just one port, for testing purposes. It may be that some of your ports are forwarding but others are not. Range mismatch? Try selecting big numbers for port values, between 10000 and 64999, so there is less likely a conflict between mIRC and other software.
You should also make sure you use the mirc command
/localinfo -u, so that mIRC knows what your public IP address is, and not just your local interface IP. The value of
$ip should be your public IP address.
Type:
//echo -a $ipVisit
https://www.google.com/search?q=my+ip+addressThese should match.