bitearnings

DePIN node connection errors: fixing port forwarding issues

A Storj node showing "offline" on the dashboard is the DePIN equivalent of a long position with broken clearing access: the collateral is still on the books, the protocol is still minting the reward…

DePIN node connection errors: fixing port forwarding issues

A Storj node showing "offline" on the dashboard is the DePIN equivalent of a long position with broken clearing access: the collateral is still on the books, the protocol is still minting the reward pool, but no auditor can reach your endpoint to issue a proof of service. The position is alive on your side and dead on the chain's side. Across Pi Network, Mysterium, and Storj — three of the larger retail-accessible DePIN deployments by node count — port forwarding failures account for the overwhelming majority of "why is my node offline" support tickets. The fixes are mechanical once you isolate the layer that's broken.

The diagnostic path runs through three structural breaks in order of frequency: Carrier-Grade NAT at the ISP, dynamic local IP assignment on the router, and OS-level firewall rules that swallow forwarded traffic after it reaches the machine. Each has a defined remediation. Below is the operational framework for isolating the culprit and restoring inbound reachability without compromising the unit economics of the node.

The Mechanics of Node Connectivity: Why Port Forwarding Matters

DePIN rewards are settled against proofs of service, not against uptime claims. A Storj storage node is audited by remote satellite nodes that initiate TCP and UDP connections to your public IP on a fixed port; a Mysterium relay accepts peer VPN sessions on a UDP range; a Pi Network node listens on a contiguous TCP block for incoming consensus traffic. In each case the protocol is the dialer, your node is the callee, and the public internet is the only path between them.

This is the structural difference between a DePIN yield and a staking yield. Staking rewards accrue against bonded capital and on-chain validation logic — the protocol already trusts your address. DePIN rewards accrue against reachability, and reachability is a function of network configuration you don't directly control. A node returning a paper 9% on bandwidth sharing earns the full 9% only while it can accept peer connections; the moment a port closes or an IP changes, accrual pauses. Treat the port forwarding layer the way you'd treat a broker's API access: it's plumbing, but if it breaks, the strategy is dead.

In DePIN, uptime is not a vanity metric — it is the sole input for accrual. An offline node loses the proofs it would have generated, and the rewards follow the proofs, not the calendar.

Two traffic types matter for the configuration. TCP handles reliable, ordered delivery — file transfers on Storj, consensus traffic on Pi Network. UDP handles low-latency, connectionless packets — QUIC on Storj, OpenVPN on Mysterium. Forwarding only the TCP leg when the protocol needs both produces a node that resolves on local diagnostics but fails every external health check, producing the classic "it's open on my machine but the protocol says offline" symptom.

Identifying the Culprit: CGNAT and Local IP Instability

The two highest-frequency causes of port forwarding failure sit upstream of your router entirely. Resolving them is the difference between a node that reliably serves traffic and one that ghosts off the network every few weeks.

Carrier-Grade NAT (CGNAT) is the silent killer most operators never think to check. Residential ISPs facing IPv4 exhaustion place thousands of customers behind a single public IP, using a private address space reserved for this purpose: 100.64.0.0/10. If your router's WAN IP falls inside that range, your public IP and your WAN IP are different addresses — and there is no port forwarding rule you can write on a consumer router that punches through a CGNAT. Traffic stops at the ISP's carrier-grade device. To confirm, compare the IP shown on your router's WAN status page against what an external lookup like whatismyip.com reports. If they differ, and especially if your WAN IP starts with 100.64, you're behind CGNAT.

The WAN IP shown on your router and the public IP shown on an external lookup must match. If they don't, no consumer-grade port forward will fix the problem — you're punching at a wall behind another wall.

Dynamic local IPs are the second most common failure mode. Consumer routers hand out local IPs via DHCP with a finite lease time. When the lease expires — or when the node machine reboots — the router may assign a different local IP than the one your port forwarding rule points to. The rule still exists in the router's table; it just routes forwarded traffic to the wrong machine or to a black hole. The fix is a DHCP reservation (also called a static DHCP lease) that binds the node machine's MAC address to a fixed local IP. Once the reservation is in place, the port forwarding rule resolves to the same address every reboot and every lease renewal.

A clean diagnostic sequence:

1. Log into your router and record the WAN IP shown on the status page.

2. Compare it to the IP returned by an external "what is my IP" lookup from a device on the same network.

3. If they match and your WAN IP is not in 100.64.0.0/10, CGNAT is ruled out — proceed to local IP and firewall checks.

4. If they differ or your WAN IP begins with 100.64, CGNAT is confirmed — move to the VPS relay or VPN workaround.

5. Verify the node machine's current local IP against the destination of your forwarding rule. If they differ, set a DHCP reservation and rewrite the rule to point at the reserved address.

Protocol-Specific Port Requirements for Major DePIN Networks

Before you change anything, confirm exactly what the protocol expects. Each network has a defined set of ports, and forwarding the wrong range is a common time-sink. The reference table below covers the retail-accessible deployments most likely to appear in a node operator's stack:

ProtocolPort(s)ProtocolPurpose
Pi Network31400–31409TCPIncoming consensus peer connections
Storj28967TCP + UDPStorage node audits and QUIC transport
Mysterium10000–60000UDPPeer VPN relay session rotation
Mysterium (OpenVPN)1194UDPSingle-port OpenVPN-based setup
Helium (legacy Hotspot)44158TCPPre–mid-2022 validator traffic

The Helium row deserves explicit attention. Following the transition to Light Hotspots in mid-2022, Helium miners no longer require TCP 44158 to be forwarded — the device initiates outbound connections to validators and no inbound socket is needed. Operators still configuring port 44158 on current-generation hardware are solving a problem the protocol no longer presents. Confirm your hardware generation before opening or closing ports.

Storj requires attention to both legs. TCP 28967 handles standard satellite audits, and UDP 28967 enables the QUIC protocol that Storj increasingly uses for faster, more resilient transport. Forwarding only TCP produces a node that completes some audits but fails QUIC-based ones — the dashboard shows intermittent online status and reduced earnings as the missed proofs stop accruing. Forward both.

Mysterium's wide port range is deliberate: the protocol rotates ports for peer connections, and restrictive forwarding breaks the rotation. Some operators prefer the cleaner OpenVPN-based setup on UDP 1194, but the broad 10000–60000 range is what the standard node implementation requests. Pick one approach and forward consistently. Mixing partial forwards across the range produces flaky connectivity that looks like a node bug but is actually a configuration drift.

Bypassing Network Restrictions with VPS Relays and Reverse Proxies

When CGNAT is confirmed and the ISP will not issue a public IP — or charges a non-trivial monthly fee for one, common in mobile and some fiber markets — the workaround is to terminate the public socket on a VPS that already has a public IP and tunnel back to the home node over an outbound connection the ISP cannot block. This adds a small latency overhead and a recurring VPS line item, but it converts an unreachable home network into a fully reachable one.

The standard toolset for the bypass:

  • A small VPS with 1 vCPU and 1 GB of RAM running Linux, located geographically close to your node to minimize round-trip latency. Monthly cost typically lands in the $5–$10 range.
  • frp (Fast Reverse Proxy) or a comparable tunnel daemon, configured so the VPS listens on the protocol's required public port and forwards traffic over an outbound TCP connection to your home node's local port.
  • Home node outbound connectivity to the VPS on a fixed tunnel port. Outbound connections are almost never blocked by residential ISPs, which is the structural reason this pattern works at all.
  • Firewall rules on the VPS restricting the tunnel port to the protocol's expected source ranges where feasible, and on the home node allowing the inbound tunnel traffic on the loopback or tunnel interface.

A VPN that supports dedicated IPs and inbound port forwarding is the lighter-touch alternative. Not every commercial VPN allows this — most explicitly disable inbound forwarding to prevent abuse — so the operator needs a provider that explicitly offers it and follows the provider's documentation for the assigned port. Setup is faster than frp, but a recurring subscription and a third party in the trust path are the trade-off. For a single-node operator, frp on a cheap VPS is usually the cleaner long-term play. For multi-node operators, a VPN with port forwarding centralizes the configuration across all endpoints.

The structural reason these workarounds function at all is that outbound TCP is almost never blocked by residential ISPs. The tunnel reverses the direction of the troublesome traffic and side-steps the asymmetry.

Configuring OS-Level Firewalls for Uninterrupted Node Traffic

A node can have every port forwarding rule correctly written on the router and still appear offline if the operating system's host firewall silently drops the forwarded traffic. This is the third layer and the most commonly missed, because the symptoms are identical to a forwarding failure but the diagnostic lives in a completely different place.

On Windows, Windows Defender Firewall blocks unsolicited inbound traffic on all profiles except those explicitly allowed. The remediation is to create inbound rules in Windows Defender Firewall with Advanced Security for the specific ports and protocols the node uses — TCP 31400–31409 for Pi Network, TCP and UDP 28967 for Storj, the relevant UDP range for Mysterium — and verify the rules apply to the correct network profile. A node running on a machine whose network is set to "Public" with rules scoped to "Private" will still be blocked at the host.

On Linux, the default firewall depends on distribution. On modern Ubuntu and Debian, the relevant layer is ufw or nftables; on CentOS and RHEL derivatives, it's firewalld. The pattern is consistent: allow inbound on the specific protocol ports, scope the rule to the correct zone or interface, and reload the firewall so the new ruleset is active. A ufw status verbose after configuration should show the rules as active, not just defined — a defined rule that hasn't been reloaded is invisible to live traffic.

The single highest-value diagnostic when a node appears offline despite correct router forwarding: from a machine outside your network (a mobile phone on cellular, or the VPS you're already paying for), attempt to connect to the public IP on the protocol's port. A closed port returns connection refused; a filtered port typically times out with no response. Connection refused points at the OS layer; timeout points at the router or upstream layer. This one test isolates the failing component in under a minute and prevents hours of misdirected configuration.

Connectivity as Yield Insurance

For operators running multiple nodes or significant capital tied to a single DePIN position, the cost-benefit on these workarounds is straightforward. A $5–$10 monthly VPS plus an hour of configuration is cheap insurance against a node that silently drops off the network and forfeits proofs for days before the operator notices the dashboard. The protocol doesn't pay you for the time you spent troubleshooting; it pays you for the proofs it could verify while you were troubleshooting.

The strategic framing: DePIN yields are not passive in the same sense as staking yields. They are uptime-conditioned yields, and uptime is a function of network configuration discipline. Before sizing up a node deployment, run the connectivity audit first. Confirm no CGNAT, assign static local IPs, forward the protocol-specific ports correctly, and verify the host firewall is not eating the traffic. Once those four layers are clean, the node is a yield-generating position rather than a recurring support ticket.

FAQ

Why does my node show offline even though I configured port forwarding?
The issue may be an OS-level firewall blocking traffic, a mismatch between your local IP and the forwarding rule, or the use of Carrier-Grade NAT by your ISP.
How do I know if my ISP is using Carrier-Grade NAT?
Compare your router's WAN IP address to the public IP shown on an external lookup site like whatismyip.com. If they differ, or if your WAN IP starts with 100.64, you are behind CGNAT.
Do I need to forward both TCP and UDP ports for my Storj node?
Yes, you must forward both. TCP handles standard satellite audits, while UDP is required for the QUIC protocol, which is essential for resilient transport and avoiding intermittent offline status.
What is the purpose of a DHCP reservation for a DePIN node?
A DHCP reservation binds your node's MAC address to a fixed local IP, ensuring that your port forwarding rules do not break when the router assigns new IP addresses after a reboot or lease renewal.
Do I still need to forward port 44158 for my Helium miner?
No, current-generation Helium Light Hotspots initiate outbound connections to validators and do not require inbound port forwarding.