VOGONS


First post, by TomppaH

User metadata
Rank Newbie
Rank
Newbie

Hi. Like subject says, I would like to get 2 virtual machines connected that way someone could join outside of my local lan. I have been able to set 2 virtual machines connected inside my own modem but not yet with someone in some other place. My aim would be to set Windows 98 for host and then someone from other place could join that network and multiplayer could be possible. Idea would be able to play Ipx/tcp ip games over internet. Have anyone been succesful on that.

Have Radmin etc use for that?

If someone have done it and could help on that, I would appreciate it greatly.

Reply 1 of 7, by wierd_w

User metadata
Rank Oldbie
Rank
Oldbie

The default network type is 'nat', which will give you no end of trouble unless you set up very careful routing tables.

If at all possible, use pcap or bridged instead. That has a good chance of 'just working'.

Reply 2 of 7, by TomppaH

User metadata
Rank Newbie
Rank
Newbie
wierd_w wrote on 2025-06-03, 18:31:

The default network type is 'nat', which will give you no end of trouble unless you set up very careful routing tables.

If at all possible, use pcap or bridged instead. That has a good chance of 'just working'.

Thank you for advice, do you have more details how to setup connect with windows 98?

Reply 3 of 7, by superfury

User metadata
Rank l33t++
Rank
l33t++

UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a single packet type), with improved support on the latest commits (not ready for release due to some CPU emulation bugs present right now). If you can use PPP IPX and can use a virtual serial port (or real one), you can use the emulated modem (or just using Dosbox's Hayes modem) with proper cabling (or emulation like COM0COM) it can 'dial' (through TCP) UniPCemu's packet server and start PPP (or SLIP alternative) on it to bridge IPX onto Ethernet II. I also made a program that bridges Dosbox server-style IPX to Ethernet II (verified with Doom multiplayer), although slow due to low PPP connection speed (56KB/S) it's kind of a slideshow-ish, but it works.
https://github.com/superfury/ipxgw
It even supports IPX echo-packet based IPX node number autoconfiguration (the same method as UniPCemu's server performs during IPXCP negotiation).

Wrt Windows 9x, works like a charm (UniPCemu server + ipxgw). Played one Windows 9x client (Doom 95) with multiple Dosbox 3.71 MS-DOS clients. All of course routed over the real, modern Ethernet II network.

Both servers of course bridge using (win or n)pcap (with UniPCemu optionally disabling the pcap functionality for a private network instead).

UniPCemu's server builds can handle multiple protocols at the same time using PPP, but Windows 9x has issues with it's drivers from what I tested (though it's a Windows 9x-specific known issue, a bug in it's software). UniPCemu can also listen to DTR to connect to the server (raising to connect, lowering optionally disconnects). Although it can only either provide the connection to it's emulated hardware (nullmode or hayes) to either itself (apps running inside the emulator) or one (virtual or real) serial port (other PC using nullmodem or adjusted nullmode cable using two serial ports (see manual for the cable schematic) for full modem handshake (easy using COM0COM though, although only on one serial port with 2 extra outgoing signals). Regularly debug OSes like Windows using that feature (WinDBG), or simply connect to the server using the host machine itself to connect to it's network from modern Windows to connect to it's connected machines using TCP/IP (IPX is also possible, but modern Windows might not support it anymore).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 4 of 7, by TomppaH

User metadata
Rank Newbie
Rank
Newbie
superfury wrote on 2025-06-03, 21:32:
UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a sing […]
Show full quote

UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a single packet type), with improved support on the latest commits (not ready for release due to some CPU emulation bugs present right now). If you can use PPP IPX and can use a virtual serial port (or real one), you can use the emulated modem (or just using Dosbox's Hayes modem) with proper cabling (or emulation like COM0COM) it can 'dial' (through TCP) UniPCemu's packet server and start PPP (or SLIP alternative) on it to bridge IPX onto Ethernet II. I also made a program that bridges Dosbox server-style IPX to Ethernet II (verified with Doom multiplayer), although slow due to low PPP connection speed (56KB/S) it's kind of a slideshow-ish, but it works.
https://github.com/superfury/ipxgw
It even supports IPX echo-packet based IPX node number autoconfiguration (the same method as UniPCemu's server performs during IPXCP negotiation).

Wrt Windows 9x, works like a charm (UniPCemu server + ipxgw). Played one Windows 9x client (Doom 95) with multiple Dosbox 3.71 MS-DOS clients. All of course routed over the real, modern Ethernet II network.

Both servers of course bridge using (win or n)pcap (with UniPCemu optionally disabling the pcap functionality for a private network instead).

UniPCemu's server builds can handle multiple protocols at the same time using PPP, but Windows 9x has issues with it's drivers from what I tested (though it's a Windows 9x-specific known issue, a bug in it's software). UniPCemu can also listen to DTR to connect to the server (raising to connect, lowering optionally disconnects). Although it can only either provide the connection to it's emulated hardware (nullmode or hayes) to either itself (apps running inside the emulator) or one (virtual or real) serial port (other PC using nullmodem or adjusted nullmode cable using two serial ports (see manual for the cable schematic) for full modem handshake (easy using COM0COM though, although only on one serial port with 2 extra outgoing signals). Regularly debug OSes like Windows using that feature (WinDBG), or simply connect to the server using the host machine itself to connect to it's network from modern Windows to connect to it's connected machines using TCP/IP (IPX is also possible, but modern Windows might not support it anymore).

Thank you for a detailed reply. This sounds good, however setting up windows 95 to it seems more difficult than in other virtual machine softwares. Do you know where I could download UniPcemu windows 95 ready pack?

I try to find efficient way to get Destruction Derby 2 multiplayer (Ipx and tcp/ip) playable online globally over internet. And it have to be win95-98 system. I got already it connected inside my own modem lan: viewtopic.php?t=106587

Reply 5 of 7, by superfury

User metadata
Rank l33t++
Rank
l33t++
TomppaH wrote on 2025-06-05, 20:07:
superfury wrote on 2025-06-03, 21:32:
UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a sing […]
Show full quote

UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a single packet type), with improved support on the latest commits (not ready for release due to some CPU emulation bugs present right now). If you can use PPP IPX and can use a virtual serial port (or real one), you can use the emulated modem (or just using Dosbox's Hayes modem) with proper cabling (or emulation like COM0COM) it can 'dial' (through TCP) UniPCemu's packet server and start PPP (or SLIP alternative) on it to bridge IPX onto Ethernet II. I also made a program that bridges Dosbox server-style IPX to Ethernet II (verified with Doom multiplayer), although slow due to low PPP connection speed (56KB/S) it's kind of a slideshow-ish, but it works.
https://github.com/superfury/ipxgw
It even supports IPX echo-packet based IPX node number autoconfiguration (the same method as UniPCemu's server performs during IPXCP negotiation).

Wrt Windows 9x, works like a charm (UniPCemu server + ipxgw). Played one Windows 9x client (Doom 95) with multiple Dosbox 3.71 MS-DOS clients. All of course routed over the real, modern Ethernet II network.

Both servers of course bridge using (win or n)pcap (with UniPCemu optionally disabling the pcap functionality for a private network instead).

UniPCemu's server builds can handle multiple protocols at the same time using PPP, but Windows 9x has issues with it's drivers from what I tested (though it's a Windows 9x-specific known issue, a bug in it's software). UniPCemu can also listen to DTR to connect to the server (raising to connect, lowering optionally disconnects). Although it can only either provide the connection to it's emulated hardware (nullmode or hayes) to either itself (apps running inside the emulator) or one (virtual or real) serial port (other PC using nullmodem or adjusted nullmode cable using two serial ports (see manual for the cable schematic) for full modem handshake (easy using COM0COM though, although only on one serial port with 2 extra outgoing signals). Regularly debug OSes like Windows using that feature (WinDBG), or simply connect to the server using the host machine itself to connect to it's network from modern Windows to connect to it's connected machines using TCP/IP (IPX is also possible, but modern Windows might not support it anymore).

Thank you for a detailed reply. This sounds good, however setting up windows 95 to it seems more difficult than in other virtual machine softwares. Do you know where I could download UniPcemu windows 95 ready pack?

I try to find efficient way to get Destruction Derby 2 multiplayer (Ipx and tcp/ip) playable online globally over internet. And it have to be win95-98 system. I got already it connected inside my own modem lan: viewtopic.php?t=106587

I uploaded a UniPCemu build with config once, but that somehow got taken down, probably because it contained the Windows keyword (it just was UniPCemu executable, SDL2(+_net) dlls and a preconfigured INI, just requiring to add an ISO and a zeroed img file to it.
So apparently even that is too much.

I have a recent commit uploaded here: Re: MartyPC
Although I don't remember if it's a server build. If you configure the SETTINGS.INI to use a network card setting of 0 or above and it complains about the pcap library, it's a non-pcap build.
I'll see if I have time to create a quick build.
If you can afford to install MSYS2 and it's packages (see MSYS2.txt), simply run "make win build SDL2 SDL2_net x64 mingw64 winpcap" inside the UniPCemu folder to compile for 64-bit Windows.

Edit: Quickly compiled a new version of the current commit (and fixed a few small compilation issues too).

The attachment UniPCemu_20250605_2253_win64server.zip is no longer available

Basically, for the base setup:
- Run the executable once, then close it to generate an SETTINGS.INI configuration file.
- Editing SETTINGS.INI, change:
-- Under [XT], search for directserial, nullmodem, nullmodemDCD, directserial,directserialctl(optional) if setting up serial passthrough (from a real serial port into UniPCemu's hayes/nullmodem connection). Set listenport to the TCP port for UniPCemu to be dialed into. modemDTRhangup configures the behaviour when a nullmodem configuration lowers DTR (to hang up the connection).
-- Under [modem], set directserialspeed if needed (bytes/second, like 57600).
-- Under [modem], phonebook0 is 'dialed' when using the nullmodem configuration (raising DTR) or using the modem to dial ATD[T]0. T being optional of course, as per the specification.
The remaining settings under [modem] configure the packet server itself, like credentials and various host configuration settings (IP addresses, required MAC addresses etc.).

It also creates and uses a PACKETSERVER.INI to control IPv4/IPv6 (for dialing in clients) whitelisting and (automatic) blacklisting. If you want to explicitly blacklist an IP in advance, enter the IP address (without dots or colons, prefix-padded to 3 numbers each (like 001 for 1) or simple hexadecimal notation in lower case for IPv6 (8 times 4 hexadecimal digits that are zero-prefixed in the same way (like 00ff0000etc.... for ff:0:etc, etc is literally etcetera here, not something you type into the address)))) and then set the value to the maxlogintries setting (which must be greater than 0). Whitelisting is simply using a negative number. Otherwise, failed login attempts will increase the counter until it reaches the maxloginattempts value, at which point it becomes a blacklist.
Of course, setting maxloginattempts to 0 will disable blacklisting completely, basically whitelisting everyone.
The PACKETSERVER.INI entries are simply based on the detected IPv4/IPv6 address of the clients that connects to the packet server. Blocked clients are literally blocked from logging in until the entry is manually removed from the file (and requires a restart of the packet server to apply). It's also only written when the packet server is terminated by a UniPCemu local restart or by closing the app (re-launching the app will load it back into the application again).
The server will literally convert any IPv4/IPv6 address to the 12 decimal numbers (127.0.0.1 would become 127000000001) or 32 hexadecimal digits for those entries (like 127::1 (numbers in hexadecimal) would become 01270000000000000000000000000001 for example).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 6 of 7, by TomppaH

User metadata
Rank Newbie
Rank
Newbie
superfury wrote on 2025-06-05, 20:40:
I uploaded a UniPCemu build with config once, but that somehow got taken down, probably because it contained the Windows keyword […]
Show full quote
TomppaH wrote on 2025-06-05, 20:07:
superfury wrote on 2025-06-03, 21:32:
UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a sing […]
Show full quote

UniPCemu also supports PPP IPX on TCP (together with IPv4 and other protocols, alternatively SLIP encapsulation with only a single packet type), with improved support on the latest commits (not ready for release due to some CPU emulation bugs present right now). If you can use PPP IPX and can use a virtual serial port (or real one), you can use the emulated modem (or just using Dosbox's Hayes modem) with proper cabling (or emulation like COM0COM) it can 'dial' (through TCP) UniPCemu's packet server and start PPP (or SLIP alternative) on it to bridge IPX onto Ethernet II. I also made a program that bridges Dosbox server-style IPX to Ethernet II (verified with Doom multiplayer), although slow due to low PPP connection speed (56KB/S) it's kind of a slideshow-ish, but it works.
https://github.com/superfury/ipxgw
It even supports IPX echo-packet based IPX node number autoconfiguration (the same method as UniPCemu's server performs during IPXCP negotiation).

Wrt Windows 9x, works like a charm (UniPCemu server + ipxgw). Played one Windows 9x client (Doom 95) with multiple Dosbox 3.71 MS-DOS clients. All of course routed over the real, modern Ethernet II network.

Both servers of course bridge using (win or n)pcap (with UniPCemu optionally disabling the pcap functionality for a private network instead).

UniPCemu's server builds can handle multiple protocols at the same time using PPP, but Windows 9x has issues with it's drivers from what I tested (though it's a Windows 9x-specific known issue, a bug in it's software). UniPCemu can also listen to DTR to connect to the server (raising to connect, lowering optionally disconnects). Although it can only either provide the connection to it's emulated hardware (nullmode or hayes) to either itself (apps running inside the emulator) or one (virtual or real) serial port (other PC using nullmodem or adjusted nullmode cable using two serial ports (see manual for the cable schematic) for full modem handshake (easy using COM0COM though, although only on one serial port with 2 extra outgoing signals). Regularly debug OSes like Windows using that feature (WinDBG), or simply connect to the server using the host machine itself to connect to it's network from modern Windows to connect to it's connected machines using TCP/IP (IPX is also possible, but modern Windows might not support it anymore).

Thank you for a detailed reply. This sounds good, however setting up windows 95 to it seems more difficult than in other virtual machine softwares. Do you know where I could download UniPcemu windows 95 ready pack?

I try to find efficient way to get Destruction Derby 2 multiplayer (Ipx and tcp/ip) playable online globally over internet. And it have to be win95-98 system. I got already it connected inside my own modem lan: viewtopic.php?t=106587

I uploaded a UniPCemu build with config once, but that somehow got taken down, probably because it contained the Windows keyword (it just was UniPCemu executable, SDL2(+_net) dlls and a preconfigured INI, just requiring to add an ISO and a zeroed img file to it.
So apparently even that is too much.

I have a recent commit uploaded here: Re: MartyPC
Although I don't remember if it's a server build. If you configure the SETTINGS.INI to use a network card setting of 0 or above and it complains about the pcap library, it's a non-pcap build.
I'll see if I have time to create a quick build.
If you can afford to install MSYS2 and it's packages (see MSYS2.txt), simply run "make win build SDL2 SDL2_net x64 mingw64 winpcap" inside the UniPCemu folder to compile for 64-bit Windows.

Edit: Quickly compiled a new version of the current commit (and fixed a few small compilation issues too).

The attachment UniPCemu_20250605_2253_win64server.zip is no longer available

Basically, for the base setup:
- Run the executable once, then close it to generate an SETTINGS.INI configuration file.
- Editing SETTINGS.INI, change:
-- Under [XT], search for directserial, nullmodem, nullmodemDCD, directserial,directserialctl(optional) if setting up serial passthrough (from a real serial port into UniPCemu's hayes/nullmodem connection). Set listenport to the TCP port for UniPCemu to be dialed into. modemDTRhangup configures the behaviour when a nullmodem configuration lowers DTR (to hang up the connection).
-- Under [modem], set directserialspeed if needed (bytes/second, like 57600).
-- Under [modem], phonebook0 is 'dialed' when using the nullmodem configuration (raising DTR) or using the modem to dial ATD[T]0. T being optional of course, as per the specification.
The remaining settings under [modem] configure the packet server itself, like credentials and various host configuration settings (IP addresses, required MAC addresses etc.).

It also creates and uses a PACKETSERVER.INI to control IPv4/IPv6 (for dialing in clients) whitelisting and (automatic) blacklisting. If you want to explicitly blacklist an IP in advance, enter the IP address (without dots or colons, prefix-padded to 3 numbers each (like 001 for 1) or simple hexadecimal notation in lower case for IPv6 (8 times 4 hexadecimal digits that are zero-prefixed in the same way (like 00ff0000etc.... for ff:0:etc, etc is literally etcetera here, not something you type into the address)))) and then set the value to the maxlogintries setting (which must be greater than 0). Whitelisting is simply using a negative number. Otherwise, failed login attempts will increase the counter until it reaches the maxloginattempts value, at which point it becomes a blacklist.
Of course, setting maxloginattempts to 0 will disable blacklisting completely, basically whitelisting everyone.
The PACKETSERVER.INI entries are simply based on the detected IPv4/IPv6 address of the clients that connects to the packet server. Blocked clients are literally blocked from logging in until the entry is manually removed from the file (and requires a restart of the packet server to apply). It's also only written when the packet server is terminated by a UniPCemu local restart or by closing the app (re-launching the app will load it back into the application again).
The server will literally convert any IPv4/IPv6 address to the 12 decimal numbers (127.0.0.1 would become 127000000001) or 32 hexadecimal digits for those entries (like 127::1 (numbers in hexadecimal) would become 01270000000000000000000000000001 for example).

Thank you for a very good explanation how it works, I want to test that.

Reply 7 of 7, by superfury

User metadata
Rank l33t++
Rank
l33t++

And if you expose UniPCemu's TCP port through your router, you can connect to it from outside your LAN using the same methods as locally.
Essentially, your hosts connected from outside your LAN are joined as IP/IPX clients using SLIP or PPP over TCP.
The other things, like COM0COM and UniPCemu's hayes or nullmodem on it connecting to the server on your host's public IP (the IP address of the router forwarding it to the server) joins your local network that way.
Although it's a slow connection (usually at 57600 bytes/second).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io