nat-timeout

Configure OS-level TCP keepalive parameters to prevent FritzBox NAT timeouts.

Updated Mar 6, 2026
One-click install
npx skills add https://github.com/renne/skills --skill nat-timeout
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: nat-timeout
Source: https://github.com/renne/skills/tree/main/fritzbox-7690/nat-timeout
Command: npx skills add https://github.com/renne/skills --skill nat-timeout

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill addresses the issue where the FritzBox 7690 silently drops long-lived TCP connections after 60-90 minutes of inactivity, causing VPN tunnels and other persistent connections to fail.

Core Features & Use Cases

  • Diagnose Connection Drops: Identifies intermittent VPN disconnects or long-lived connection failures that occur after a period of uptime.
  • Root Cause Analysis: Explains the FritzBox NAT timeout mechanism and its interaction with OS-level TCP keepalive settings.
  • Implement Fix: Provides a direct, system-wide solution by adjusting TCP keepalive parameters to prevent NAT entries from expiring.
  • Use Case: Troubleshoot why your Netbird VPN connection keeps dropping every hour, even though the internet connection itself is stable.

Quick Start

Apply the recommended TCP keepalive settings to prevent NAT timeouts.

Frequently Asked Questions about nat-timeout

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my FritzBox VPN connection keep dropping after an hour of inactivity?

The FritzBox NAT timeout mechanism silently drops long-lived TCP connections after 60-90 minutes of inactivity, causing VPN tunnels to fail. Adjusting OS-level TCP keepalive parameters forces periodic traffic, maintaining the NAT state and preventing disconnects.

How do I configure TCP keepalive settings to prevent NAT timeout on a FritzBox?

To prevent FritzBox NAT timeout, configure system-wide TCP keepalive parameters to send packets before the 60-minute expiry window. This ensures persistent connection stability for long-lived VPN tunnels, gRPC streams, and WebSocket relays.

What is the FritzBox NAT timeout behavior and how does it affect long-lived TCP connections?

FritzBox NAT timeout is a router-level connection management behavior that silently expires idle NAT entries after 60-90 minutes. This causes long-lived TCP connections, including VPN tunnels and gRPC streams, to fail without an explicit network outage.

Does configuring OS-level TCP keepalive fix intermittent disconnects for gRPC streams and WebSocket relays?

Configuring OS-level TCP keepalive fixes intermittent disconnects for gRPC streams and WebSocket relays by generating traffic before the FritzBox NAT timeout triggers. This maintains connection stability for persistent network tunnels.

Can I fix Netbird VPN disconnects caused by router-level connection management without changing routers?

You can fix Netbird VPN disconnects without changing routers by adjusting your OS TCP keepalive settings to override router-level connection management. This system-wide solution maintains the NAT state required for stable persistent connections.