Skip to content

Instantly share code, notes, and snippets.

@Nachlor
Last active July 17, 2026 21:32
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
  • 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 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