Skip to content

Instantly share code, notes, and snippets.

@Nachlor
Last active August 21, 2026 13:21
Show Gist options
  • Select an option

  • Save Nachlor/fdf2a5f9de1c14aecfc4c8617401a2f3 to your computer and use it in GitHub Desktop.

Select an option

Save Nachlor/fdf2a5f9de1c14aecfc4c8617401a2f3 to your computer and use it in GitHub Desktop.
Lanemu P2P VPN LAN Gaming

Lanemu P2P VPN LAN Gaming

Table of Contents

Usage

  • Download and extract the latest Lanemu release by selecting your OS under Packages
  • Headless Binary is intended for advanced users who prefer CLI instead of GUI
  • Launch Lanemu
    • Windows
      • Run Lanemu.exe
    • Linux
      • Run Lanemu.desktop or Lanemu-pkexec / Lanemu-run0
  • Do you want to join 'Default network'?
    • Click No
  • Click the Options icon and select Global tab
    • Specify Your Name
    • Specify any port in "Listen on Port" (e.g., 5521)
      • At least one user should enable UPnP or forward the port(s) on the router
        • All used TCP and UDP ports are displayed in the Protocol selection
        • Legacy TCP port is unnecessary if all users are able to connect via RUDP
      • If nobody can set up port forwarding (stuck behind NAT)
        • Lanemu might be able to connect peers by using STUN and UDP hole-punching
          • STUN only works if all peers set Protocol to RUDP + UDP or RUDP
          • Created network must include BitTorrent Trackers / DHT Nodes
          • Peers behind Symmetric NAT won't be able to connect to anyone
        • In case of Symmetric NAT, all users can try hyper-nat (everyone must set Protocol to TCP + UDP)
        • If connection via hyper-nat is unsuccessful, all users can route Tailscale or other similar VPN through Lanemu
          • Lanemu allows Layer 3 VPNs to work in games that require Broadcast / Multicast
          • Replace all instances of PublicIP:Port with Tailscale or other VPN IP (e.g., 100.111.88.108:5521)
        • Alternatively, one user (Host PC) can create a tunnel (e.g., playit.gg)
          • Lanemu supports TCP+UDP or UDP-only / TCP-only tunnels
          • Tunnel type requirements (TunnelIP:TunnelPort -> 127.0.0.1:LanemuPort)
            • TCP+UDP
              • Lanemu Protocol: RUDP + UDP (Legacy TCP) or TCP + UDP
                • Example: tcp-udp-tunnel.gl.at.ply.gg:6411 -> 127.0.0.1:6411
                • TunnelPort and LanemuPort must be identical
                • RUDP + UDP needs 1 tunnel with 2 sequent ports (e.g., 6411 & 6412)
                  • STUN server field in the Network tab must be empty
              • Lanemu Protocol: RUDP (Legacy TCP)
                • Example: tcp-udp-tunnel.gl.at.ply.gg:6411 -> 127.0.0.1:5521
                • TunnelPort and LanemuPort can be the same or different
            • UDP-only
              • Lanemu Protocol: RUDP + UDP
                • Example: udp-tunnel.gl.at.ply.gg:6411 -> 127.0.0.1:6411
                • TunnelPort and LanemuPort must be identical
                • RUDP + UDP needs 1 tunnel with 2 sequent ports (e.g., 6411 & 6412)
                  • STUN server field in the Network tab must be empty
              • Lanemu Protocol: RUDP
                • Example: udp-tunnel.gl.at.ply.gg:6411 -> 127.0.0.1:5521
                • TunnelPort and LanemuPort can be the same or different
            • TCP-only
              • Lanemu Protocol: TCP
                • Example: tcp-tunnel.gl.at.ply.gg:6411 -> 127.0.0.1:5521
                • TunnelPort and LanemuPort can be the same or different
    • Click OK
  • Steps for Host PC
    • If you are using hyper-nat
      • Modify hyper-nat options.json file
        {
            "schema": [
                {
                    "mode": "server",
                    "proto": "tcp",
                    "port": "5521",
                    "host": "127.0.0.1",
                    "secret": "SomeUniqueTextThatIsTheSameForAllPorts"
                },
                {
                    "mode": "server",
                    "proto": "udp",
                    "port": "5521",
                    "host": "127.0.0.1",
                    "secret": "SomeUniqueTextThatIsTheSameForAllPorts"
                }
            ]
        }
      • Launch hyper-nat
        • Windows
          • Run hyper-nat.exe
        • Linux
          • Open the Terminal in Lanemu -> hyper-nat folder
            • npm install
            • npm run start
      • Windows : Allow hyper-nat through Windows Firewall
        • Check both Private and Public networks
        • Click Allow access
      • Copy your public key from the Console / Terminal
        • Windows
          • Highlight it and press CTRL + C
        • Linux
          • Highlight it and press CTRL + SHIFT + C
      • Send your public key to every Client
    • Create a network
      • Click the New Network icon
      • Select Simple tab
        • Specify Network Name
      • Select Advanced tab
        • If you are using UPnP / Port Forwarding or Tunneling Services
          • Specify your PublicIP:Port or TunnelIP:Port in Known Hosts
            • Example: 82.129.80.111:5521 or udp-tunnel.gl.at.ply.gg:6411
        • If you are using hyper-nat
          • Specify these network settings
            • Known Hosts: 127.0.0.1:5521
            • BitTorrent Trackers: Empty
            • BitTorrent DHT Nodes: Empty
      • Click OK
    • Windows : Allow OpenJDK through Windows Firewall
      • Check both Private and Public networks
      • Click Allow access
    • Create an invitation
      • Click the Invite Someone icon
      • Check Allow invitation of others
      • Click Generate Invitation
      • Click Save to a File
      • Click Close
    • Send the invitation file to every Client
      • You may also send a pre-configured profile.ini file that automatically accepts your invitation on first launch
        default.autoInvite=invitation_file.txt
  • Steps for Client PC
    • If you are using hyper-nat
      • Temporarily close Lanemu
        • Right click Lanemu tray icon and select Quit
      • Modify hyper-nat options.json file
        {
            "schema": [
                {
                    "mode": "client",
                    "proto": "tcp",
                    "port": "5521",
                    "serverport": "5521",
                    "publicKey": "CopyPasteTheServerPublicKeyHere"
                },
                {
                    "mode": "client",
                    "proto": "udp",
                    "port": "5521",
                    "serverport": "5521",
                    "publicKey": "CopyPasteTheServerPublicKeyHere"
                }
            ]
        }
      • Launch hyper-nat
        • Windows
          • Run hyper-nat.exe
        • Linux
          • Open the Terminal in Lanemu -> hyper-nat folder
            • npm install
            • npm run start
      • Windows : Allow hyper-nat through Windows Firewall
        • Check both Private and Public networks
        • Click Allow access
      • Wait until hyper-nat establishes connection to the server
        • The window closes if connection fails, you might have to retry several times
      • Relaunch Lanemu
    • Join a network
      • Click the Accept Invitation icon
      • Click Load from File
      • Click OK
    • Windows : Allow OpenJDK through Windows Firewall
      • Check both Private and Public networks
      • Click Allow access
    • Wait for connection
      • If connection did not occur automatically
        • Option 1 : Click the Connect to Known IPs icon at the bottom
        • Option 2 : Click the Information icon at the bottom and select Connections tab
          • If you are using hyper-nat
            • Enter 127.0.0.1:Port (e.g., 127.0.0.1:5521) next to the Connect To button and click it
          • If you are using other connection method
            • Enter a peer PublicIP:Port or TunnelIP:Port next to the Connect To button and click it

Troubleshooting (Linux)

Troubleshooting (Windows)

  • Disable SSDP Discovery
    • Open Control Panel
    • Click System and Security
    • Click Administrative Tools
    • Open Services
    • Right click SSDP Discovery and select Properties
    • Click Stop
    • Startup type: Disabled
    • Click Apply and OK
  • Enable DirectPlay and Media Features
    • Open Control Panel
    • Click Programs
    • Click Turn Windows features on or off
    • Expand Legacy Components
      • Check DirectPlay
    • Check Media Features
    • Click OK
  • Allow DirectPlay and game through Windows Firewall
    • Open Control Panel
    • Click System and Security
    • Click Allow an app through Windows Firewall
    • Click Change settings
    • Click Allow another app
    • Click Browse
      • DirectPlay
        • Go to C:\Windows\SysWOW64
        • Select dplaysvr.exe and click Open
      • DirectPlay 8 (x32)
        • Go to C:\Windows\System32
        • Select dpnsvr.exe and click Open
      • DirectPlay 8 (x64)
        • Go to C:\Windows\SysWOW64
        • Select dpnsvr.exe and click Open
      • Game
        • Go to game directory
        • Select game executable and click Open
    • Click Network types
      • Check Private and Public
      • Click OK
    • Click Add
    • Click OK

Recommendations

@Nachlor

Nachlor commented Aug 3, 2025

Copy link
Copy Markdown
Author

Then i just have to use the VPS Public IP if i hosted a hyper-nat server on VPS , right ?

What's i truly mean is that can both client connected to each other using hyper-nat but without VPN if i specify VPS public IP on hyper-nat server?

Keep it simple and host both Lanemu and hyper-nat on the same VPS:

Lanemu

  • I'd recommend adding both IPs to Known Hosts (VPS_PublicIP:6666;127.0.0.1:6666). If your VPS ever shuts down, some other user can copy your hyper-nat options.json file and act as a server :)

hyper-nat

  • Don't change the "host" section from options.json file, just leave it at "127.0.0.1".

Yes, it's always repeat when i open Lanemu then ping the VPN IP after few second . There is no spikes when i ping the public IP itself

Perhaps it's not noticeable during gameplay? If everything feels smooth, I wouldn't worry about it.

@Monsterovich

Monsterovich commented Aug 8, 2025

Copy link
Copy Markdown

And latency from Lanemu Virtual IP are not stable sometimes, you can see the suddenly 85ms latency while the Pubic IP got stable ~25ms

This is unlikely to be related to Lanemu. Packets are being lost. I can reproduce this randomly on any public IP address. Just make sure you have UDP mode enabled. I would avoid TCP/UDP in TCP when possible.

@pftmclub

Copy link
Copy Markdown

@Nachlor : Hyper-NAT are switch to read-only repo and they are dead, TCP connection does not work anymore.
image

i hope there is a way to fix this in future

@Nachlor

Nachlor commented May 30, 2026

Copy link
Copy Markdown
Author

@Nachlor : Hyper-NAT are switch to read-only repo and they are dead, TCP connection does not work anymore.

You can ignore this "error", it only appears if the exposed app hasn't been launched for a while.

I just opened Lanemu a bit later and everything went back to normal.

There's another similar project being developed, but the client config only seems to support one protocol (TCP or UDP) at a time:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment