10-19-2006, 01:28 AM
You do not need multiple external IP addresses to allow multiple computers to play online. However, as may be guessed from my frequent references to "inferior" NAT devices, not all NAT devices are capable of the packet rewriting required for this to work with a single IP address. Without knowing which device is troubling you, I cannot give specific advice. I can tell you that it is definitely possible. I have been doing it since Diablo v1.07 and it works perfectly. If your device is capable of getting it right at all, here's what to do:
Obligatory warning: this involves some (minor) registry editing. The changes are not dangerous, however careless registry editing (read: deleting or modifying values you don't understand) can render a system unbootable. Follow these instructions carefully and you should be fine.
Designate the internal computers as C1...CN for however many computers you want to use. On systems C1...CN, open regedit and navigate to the folder "HKEY_CURRENT_USER\Software\Battle.net\Configuration". Create a new value named "Game Data Port" of type REG_DWORD. Edit the new value and set it to 6112+N-1. Note that regedit may default to entering values in hexadecimal. If so, switch to decimal first. When you're done, each computer will be configured to use a different port for UDP. It is not strictly necessary to set the Game Data Port on C1, but it's good practice for consistency. Close regedit. You're done with the dangerous part. Now, start Diablo and log on to battle.net with each system. Minimize Diablo and run netstat -an -p udp. You should see each system listening on a different port (6112, 6113, 6114, etc.). There may be other open UDP ports. They can be ignored for now. If you are very lucky, this may be sufficient to make Diablo work. If not, you will need to configure the NAT device to forward UDP port 6112 to C1, UDP port 6113 to C2, etc. The UDP qualifier is important. TCP and UDP are distinct protocols and forwarding TCP will not help at all in resolving this. Some devices cannot be configured to forward TCP and UDP separately. If there is no qualifier when the configuration speaks of ports, this may be the case. Just resign yourself to it forwarding both TCP and UDP.
Caveat: some devices may not fix up the packets well enough that both users can be in the same game. Mine can, so it is possible. This again delves into very device-specific configuration, so I cannot offer further guidance. Good luck.
Obligatory warning: this involves some (minor) registry editing. The changes are not dangerous, however careless registry editing (read: deleting or modifying values you don't understand) can render a system unbootable. Follow these instructions carefully and you should be fine.
Designate the internal computers as C1...CN for however many computers you want to use. On systems C1...CN, open regedit and navigate to the folder "HKEY_CURRENT_USER\Software\Battle.net\Configuration". Create a new value named "Game Data Port" of type REG_DWORD. Edit the new value and set it to 6112+N-1. Note that regedit may default to entering values in hexadecimal. If so, switch to decimal first. When you're done, each computer will be configured to use a different port for UDP. It is not strictly necessary to set the Game Data Port on C1, but it's good practice for consistency. Close regedit. You're done with the dangerous part. Now, start Diablo and log on to battle.net with each system. Minimize Diablo and run netstat -an -p udp. You should see each system listening on a different port (6112, 6113, 6114, etc.). There may be other open UDP ports. They can be ignored for now. If you are very lucky, this may be sufficient to make Diablo work. If not, you will need to configure the NAT device to forward UDP port 6112 to C1, UDP port 6113 to C2, etc. The UDP qualifier is important. TCP and UDP are distinct protocols and forwarding TCP will not help at all in resolving this. Some devices cannot be configured to forward TCP and UDP separately. If there is no qualifier when the configuration speaks of ports, this may be the case. Just resign yourself to it forwarding both TCP and UDP.
Caveat: some devices may not fix up the packets well enough that both users can be in the same game. Mine can, so it is possible. This again delves into very device-specific configuration, so I cannot offer further guidance. Good luck.