advowson: Yes. The game binds port 6112 on your system, but that does not constrain the port used on the NAT device to talk to the server. The battle.net server should note what port you sent from, and tell prospective peers to use that port.
In detail:
- No changes on your Windows systems.
- On the NAT device, configure it to map external UDP/6112 to system #1. Map external UDP/6113 to system #2's internal IP with UDP/6112. Extend as necessary. Note that the internal port is always 6112, regardless of the external port you assign. You don't specifically need the secondary systems to be 6112+N, but it's easier to reason about if you do. The key points are that you need each internal system to have a unique external port on your shared external IP, and preferably have those unique external ports be stable over time. (So if Alice gets 6112, Bob gets 6113, and Charlie gets 6114 today, and tomorrow Bob doesn't play, Charlie still gets 6114 tomorrow.) That's not a hard requirement in all cases, but it makes it easier to reason about and is never wrong.
- On the NAT device, ensure that traffic from inside the network destined to the external IP is appropriately routed back to the right internal host. If you skip this step, people inside cannot play in the same game (but each could play concurrently in distinct games). In some cases, if you skip this step, people inside can sort of enter the same game, but the experience will be so terrible that you wouldn't actually play. Avoid the confusion and don't skip this step. :)
It may help you to note that Starcraft/Brood War had the same limitations and same solutions, so if you find online guidance on how to solve this for Brood War, you can follow the same instructions for Diablo.
If you need more help, please describe your NAT device in more detail so someone can figure out how to make these configuration changes. There is a small chance that low-end consumer devices will lack the configurability to let you do as I described. Hopefully, such devices have all been retired by now.
Not working for me, unfortunately. Both computers work 6112 to 6112, but if I try any external port that isn't 6112 to internal port 6112 it does not work. I allowed inbound traffic for UDP between 6112-6119 on my firewall as well. Blizz only accepting 6112 inbound...?
Screenshot of config attached.