Skip to main content

COMMUNITY KNOWLEDGE FORUM Independent Hosting Community • Not affiliated with netcup GmbH.

NETCUP GUIDE
FORUM · LIVE VOUCHER POOL
Tutorials LEVEL: Intermediate TIME: 30 minutes // 19 MIN READ • VERIFIED:

How to Troubleshoot Netcup VPS & Root Server Networking: AS197540 MTR, IPv6 fe80::1, MTU & VNC Recovery

When a production Netcup VPS or Root Server stops responding to SSH after a kernel upgrade, drops IPv6 connections after 15 minutes of uptime, or exhibits intermittent latency to a specific ISP, random reboots only obscure the root cause. Netcup’s KVM network architecture (AS197540) uses specific routing conventions—most notably a /32 or /22 IPv4 gateway and a deterministic link-local fe80::1 IPv6 default gateway—alongside two independent firewall layers (the hypervisor-level SCP Stateful Firewall and your guest OS ufw/nftables). This diagnostic runbook provides a structured Layer-2 through Layer-7 methodology to isolate and resolve every major Netcup networking failure.

THREAD OP // AUTHOR Elena Rostova Senior Network & Storage Verification Editor
MOD VERIFIED // CO-MAINTAINER Marcus Vance Principal Systems Architect
THREAD STATUS // UPDATED Community Standards →
MODERATOR NOTE // TEST ENVIRONMENT & TRANSPARENCY Verified against Netcup (AS197540 netcup GmbH / Anexia backbone) routing topology, Netplan 1.0+ on-link: true IPv6 link-local gateway behavior, and SCP HTML5 VNC / Debian Live Rescue System workflows.

PREREQUISITES // ENVIRONMENT REQUIREMENTS

CHECKLIST
  • ✓ Access to the Netcup Server Control Panel (SCP) for HTML5 VNC Screen, Firewall, and Rescue System controls
  • ✓ A Netcup VPS or Root Server running Ubuntu, Debian, AlmaLinux, or Rocky Linux

Key Takeaways

EXECUTIVE BRIEFING
  • 01 When locked out of SSH, immediately open the Netcup SCP -> Screen (HTML5 VNC Console) for out-of-band terminal access, or boot the SCP Rescue System and chroot into /dev/vda1.
  • 02 After major Debian or Ubuntu release upgrades (do-release-upgrade), systemd-udevd predictable interface naming frequently renames eth0 to ens3—pin your Netplan configuration by MAC address (match.macaddress) so interface renames never break boot networking.
  • 03 Netcup routes your entire IPv6 /64 block via the link-local gateway fe80::1; always configure static IPv6 with accept-ra: false and via: fe80::1 (on-link: true) in Netplan.
  • 04 Distinguish genuine end-to-end packet loss from harmless core-router ICMP control-plane rate-limiting (CoPP) using bidirectional mtr -rwzc 100 -4 and mtr -rwzc 100 -6 reports.
  • 05 Use tcpdump -ni any inside the guest VM to immediately prove whether inbound packets are being dropped upstream by the Netcup SCP Firewall or locally by ufw / nftables.
📑 Quick Jump Table of Contents (5 Sections) ▼
§ 01

Step 1: Out-of-Band Recovery via SCP HTML5 VNC Console & Rescue System chroot

If a syntax error in /etc/netplan/, a botched /etc/ssh/sshd_config edit, or an overly broad ufw/nftables rule cuts off SSH access, do not reinstall the server. Netcup’s Server Control Panel (SCP) provides two hardware-level out-of-band recovery mechanisms that operate completely independently of your guest OS network stack.

Your fastest option is the SCP "Screen" tab (HTML5 VNC Console), which attaches directly to the emulated QEMU VGA display and PS/2 keyboard of your running KVM instance. Even if eth0 is completely down (DOWN), you can log in on tty1 with your local console password, inspect journalctl -u systemd-networkd, or run sudo ufw disable. When using the VNC console on a German or US keyboard layout, avoid typing complex passwords blindly into the username prompt; test special characters at the login line first or use SCP’s virtual clipboard paste button. If you disabled local password login or the guest kernel failed to mount root (initramfs prompt), boot the SCP Rescue System instead and chroot into /dev/vda1:

  • ▪ SCP "Screen" Tab (HTML5 VNC Console): Attaches directly to the emulated QEMU VGA display and PS/2 keyboard of your running KVM instance. If your root/sudo user has a local console password set, you can log in directly on tty1, run ip -br link, or flush firewall rules (sudo ufw disable).
  • ▪ SCP "Media / Rescue System" Tab (Live Debian Netboot): If you disabled local password authentication or the guest kernel fails to boot (initramfs drop), activate the Rescue System in SCP. It boots your VM into a clean, networked Debian Live RAM disk and displays a temporary root SSH password in SCP, allowing you to mount /dev/vda1 and repair any file via chroot.
Mount Root NVMe Partition & Enter chroot from Netcup SCP Rescue System
bash
# 1. After activating Rescue System in SCP and connecting via SSH as root:
lsblk -f

# 2. Mount your primary Linux root filesystem (typically /dev/vda1 or /dev/vda2; /dev/sda1 on older SCSI profiles)
mkdir -p /mnt/sysroot
mount /dev/vda1 /mnt/sysroot

# 3. If your system uses a separate /boot or /boot/efi partition, mount it as well:
# mount /dev/vda15 /mnt/sysroot/boot/efi

# 4. Bind-mount virtual kernel filesystems and enter the chroot environment
for dir in /dev /dev/pts /proc /sys /run; do
  mount --bind "$dir" "/mnt/sysroot$dir"
done
chroot /mnt/sysroot /bin/bash

# 5. Inside chroot: inspect logs, fix /etc/netplan or /etc/ssh/sshd_config, or disable ufw
journalctl -b -1 -u systemd-networkd --no-pager
sshd -t
ufw disable

# 6. Exit chroot cleanly, unmount, and deactivate Rescue System in SCP
exit
umount -R /mnt/sysroot
sync

Command Explanation: Mounts the server’s root disk inside the Netcup Live Rescue environment, binds /dev, /proc, /sys, and /run, enters chroot, inspects the previous boot’s network logs (journalctl -b -1), validates SSHD syntax (sshd -t), and unmounts cleanly.

EXPECTED OUTPUT
NAME    FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
vda
├─vda1  ext4   1.0         8b14c9a2-41e0-4d91-9b1a-7c30e192a401  192.4G    18% /mnt/sysroot
§ 02

Step 2: Fix eth0 vs ens3 Interface Renames & IPv6 fe80::1 Default Gateway Drops

Two Netcup-specific Layer-2/Layer-3 pitfalls account for the vast majority of post-reboot and IPv6 connectivity failures.

First, when upgrading Debian (11 -> 12) or Ubuntu (22.04 -> 24.04), systemd-udevd predictable interface naming (net.ifnames=1) evaluates the PCI slot topology of the QEMU virtio-net adapter and frequently renames it from eth0 to ens3 (or enp0s3). If /etc/netplan/01-netcfg.yaml or /etc/network/interfaces hardcodes eth0 without matching the adapter’s hardware MAC address (match.macaddress), systemd-networkd waits for a non-existent eth0 device at boot and leaves the server offline.

Second, Netcup routes your dedicated /64 IPv6 subnet (e.g., 2a03:4000:xx:xxxx::/64) across the hypervisor bridge using the static link-local router address fe80::1. Unlike residential ISPs that broadcast continuous SLAAC Router Advertisements (RA), Netcup’s hypervisor bridge expects you to configure your /64 addresses statically with accept-ra: false and an explicit default route via: fe80::1 with on-link: true. If accept-ra: true is left enabled without a static fe80::1 route, IPv6 works for 10 to 15 minutes after reboot and then silently drops once the initial router lifetime expires.

Netcup Dual-Stack Addressing Parameters (Lookup in SCP -> Network Tab)
ParameterWhere to Find in Netcup SCPExample Value (AS197540)Netplan Configuration Requirement
Interface MAC AddressSCP -> Server -> Network -> MAC52:54:00:4a:8b:1cUse in match.macaddress to prevent eth0/ens3 rename lockouts
IPv4 Address & PrefixSCP -> Network -> IPv4152.53.12.34/22 (or /32)Configure with gateway shown in SCP (or on-link: true for /32)
IPv6 Subnet (/64)SCP -> Network -> IPv62a03:4000:61:a1b2::1/64Assign ::1/64 (and any extra IPs) statically with dhcp6: false
IPv6 Default GatewayStandard across all Netcup KVM hostsfe80::1Must declare route to: default, via: fe80::1, on-link: true
Inspect Live Link Names, MAC Addresses, and IPv6 Neighbor Cache (ip neigh)
bash
# 1. Check exact interface name (eth0 vs ens3), operational state (UP/DOWN), and MAC address
ip -br link show

# 2. Check bound IPv4 and IPv6 addresses
ip -br addr show

# 3. Check IPv4 and IPv6 routing tables and confirm fe80::1 neighbor reachability
ip -4 route show
ip -6 route show
ip -6 neigh show dev "$(ip -4 route show default | awk '{print $5; exit}')"

Command Explanation: Verifies active NIC naming, assigned addresses, default routes, and NDP neighbor discovery status (REACHABLE vs STALE/FAILED) for the fe80::1 IPv6 gateway.

EXPECTED OUTPUT
eth0             UP             52:54:00:4a:8b:1c <BROADCAST,MULTICAST,UP,LOWER_UP>
default via fe80::1 dev eth0 proto static metric 1024 onlink pref medium
fe80::1 lladdr aa:bb:cc:dd:ee:ff router REACHABLE
/etc/netplan/50-cloud-init.yaml (MAC-Pinned Dual-Stack Netcup Config)
yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    primary_nic:
      match:
        macaddress: "52:54:00:4a:8b:1c"
      set-name: "eth0"
      dhcp4: true
      dhcp6: false
      accept-ra: false
      addresses:
        - "2a03:4000:61:a1b2::1/64"
      routes:
        - to: "::/0"
          via: "fe80::1"
          on-link: true
      nameservers:
        addresses:
          - 46.38.225.230
          - 46.38.252.230
          - 2a03:4000:0:1::e1e6
          - 1.1.1.1

Command Explanation: Matches the Netcup virtio-net interface by hardware MAC address, forces its name to eth0 across all future kernel upgrades, keeps DHCPv4 enabled, and pins static IPv6 routing via fe80::1 with Netcup’s dual-stack DNS resolvers.

SECURITY NOTE: Always set sudo chmod 0600 /etc/netplan/*.yaml and test changes with sudo netplan try --timeout 60 instead of netplan apply. If a typo breaks routing, netplan try automatically reverts to the working configuration after 60 seconds.

§ 03

Step 3: Diagnose AS197540 Routing & Interpret Bidirectional mtr Reports

Netcup operates autonomous system AS197540 (netcup GmbH), peering at major European and international internet exchanges (including DE-CIX Frankfurt, VIX Vienna, and AMS-IX Amsterdam) alongside upstream Tier-1/Tier-2 transit providers (such as Anexia AS42473, Arelion/Telia AS1299, NTT AS2914, and Cogent AS174).

When investigating suspected packet loss or elevated latency between your Netcup server and an end-user ISP, a one-way ping or traceroute is insufficient because BGP internet routing is almost always asymmetric: outbound packets from Nuremberg to a residential user might exit via DE-CIX peering, while return packets from the user’s ISP might enter via a congested transit handoff in Frankfurt or Vienna. Always collect a 100-packet report using mtr -rwzc 100 in both directions (Server -> Client IP and Client -> Server IP).

When reading mtr output, pay close attention to the difference between Control Plane Policing (CoPP) and genuine forwarding-plane packet loss. High-capacity core routers prioritize hardware ASIC packet forwarding over generating ICMP TIME_EXCEEDED replies on their management CPU. If Hop 3 shows 65% loss but Hop 4, Hop 5, and the final destination show 0.0% loss and steady Avg/StDev latency, that intermediate router is simply rate-limiting ICMP diagnostic replies. Real packet loss only exists when loss begins at a specific hop and persists across every subsequent hop all the way to the final destination.

Run 100-Cycle ASN-Enriched IPv4 & IPv6 MTR Diagnostics
bash
sudo apt update && sudo apt install -y mtr-tiny

# 1. Run 100-packet IPv4 MTR report with ASN lookup (-z) and wide hostnames (-w)
mtr -rwzc 100 -4 1.1.1.1

# 2. Run 100-packet IPv6 MTR report to verify IPv6 transit health
mtr -rwzc 100 -6 2606:4700:4700::1111

# 3. If ICMP is deprioritized by an intermediate router, run TCP SYN MTR on port 443
sudo mtr -rwzc 50 -T -P 443 1.1.1.1

Command Explanation: Generates a non-interactive 100-cycle MTR report displaying the Autonomous System Number (ASxxxxx) of every hop, loss percentage, and standard deviation (StDev), plus a TCP Port 443 probe (-T -P 443).

EXPECTED OUTPUT
Start: 2026-11-06T20:50:12+0000
HOST: netcup-rs1000-nue                         Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. AS197540 gw-nue1.netcup.net                 0.0%   100    0.3   0.4   0.2   1.8   0.2
  2. AS197540 core-nue-fra.netcup.net            0.0%   100    2.6   2.7   2.5   4.9   0.3
  3. AS???    de-cix.fra.cloudflare.com          0.0%   100    2.9   3.0   2.8   6.1   0.4
  4. AS13335  one.one.one.one                    0.0%   100    2.8   2.9   2.7   3.5   0.1
How to Read Intermediate Hop Packet Loss (Control Plane Policing vs Real Loss)

If Hop 3 or Hop 4 in an mtr output shows 40.0% or 80.0% Loss, look immediately at the final destination hop (and subsequent hops). If the final destination hop shows 0.0% Loss, there is zero actual packet loss on the data path—the intermediate core router simply applies Control Plane Policing (CoPP) to rate-limit ICMP TTL-expired responses on its management CPU. Real packet loss only exists when loss starts at Hop N and persists continuously on every single hop from Hop N all the way to the final destination.

§ 04

Step 4: Isolate SCP Edge Firewall vs Guest ufw/nftables Drops & PMTU Blackholes

When a service port (such as HTTPS 443, WireGuard 51820/udp, or a custom API port) appears unreachable from the outside world, three layers can be responsible: the daemon is bound only to 127.0.0.1 instead of 0.0.0.0/[::], the guest OS firewall (ufw/nftables/iptables) is dropping the packet, or the Netcup SCP Stateful Firewall is dropping the packet upstream on the hypervisor bridge before it ever reaches your VM’s virtual network card.

You can prove which firewall layer is dropping the connection in 10 seconds by running sudo tcpdump -ni any inside the guest while initiating a connection from an external client. Because libpcap hooks into the Linux kernel’s AF_PACKET tap immediately after the virtio-net driver receives an Ethernet frame—before netfilter (iptables/nftables/ufw) evaluates PREROUTING or INPUT rules—any packet that reaches your VM will appear in tcpdump even if ufw drops it microseconds later. Therefore, if tcpdump shows zero incoming SYN packets, the packet was blocked upstream (either in the Netcup SCP Firewall or by an active DDoS scrubbing profile). If tcpdump shows incoming SYN packets arriving on eth0 with no SYN-ACK reply leaving the server, your local guest firewall or socket binding is the culprit.

Finally, if TCP connections establish (SYN -> SYN-ACK -> ACK) but stall immediately when transferring large TLS certificates, Docker image layers, or SSH output, test for a Path MTU Discovery (PMTUD) blackhole using ping -M do (Don’t Fragment). On a standard 1500-byte Ethernet link, the maximum unfragmented ICMPv4 payload is 1472 bytes (1472 + 20B IPv4 + 8B ICMP = 1500) and the maximum ICMPv6 payload is 1452 bytes (1452 + 40B IPv6 + 8B ICMPv6 = 1500):

Verify Socket Bindings, Live Packet Arrival (tcpdump), and Exact Path MTU (ping -M do)
bash
# 1. Confirm your daemon is listening on 0.0.0.0 / [::] (NOT just 127.0.0.1)
sudo ss -tulnp | grep -E "Local Address|:80 |:443 |:22 "

# 2. Listen for incoming packets on the raw interface while attempting a connection from outside
# -> If tcpdump shows ZERO incoming SYN packets: the Netcup SCP Firewall (upstream) is blocking the port!
# -> If tcpdump shows incoming SYN packets with no SYN-ACK reply: guest UFW / nftables is dropping it!
sudo tcpdump -ni any 'tcp port 443 and (tcp-syn|tcp-ack)!=0' -c 10

# 3. Audit active guest firewall rules (both UFW/iptables and native nftables)
sudo ufw status verbose
sudo nft list ruleset | head -n 45

# 4. Test Path MTU (1472 payload + 20 IPv4 + 8 ICMP = 1500 bytes) with Don't Fragment (-M do)
ping -4 -M do -s 1472 -c 3 1.1.1.1
ping -6 -M do -s 1452 -c 3 2606:4700:4700::1111

Command Explanation: Checks socket bindings via ss, uses tcpdump to distinguish upstream Netcup SCP Firewall drops from local guest firewall drops, inspects ufw/nftables chains, and tests 1500-byte unfragmented Path MTU across IPv4 (1472 payload) and IPv6 (1452 payload).

EXPECTED OUTPUT
PING 1.1.1.1 (1.1.1.1) 1472(1500) bytes of data.
1480 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=2.84 ms
§ 05

Step 5: Debug systemd-resolved DNS Failures & Verify IPv4/IPv6 Reverse DNS (PTR)

If ping 1.1.1.1 succeeds with 0% loss but apt update or curl https://github.com fails with Temporary failure in name resolution, your IP routing table is healthy and only local DNS resolution is broken. On Ubuntu 24.04 LTS, /etc/resolv.conf should be a symbolic link to /run/systemd/resolve/stub-resolv.conf pointing to the local 127.0.0.53 stub listener managed by systemd-resolved.

When switching a Netcup server from DHCPv4 to a static Netplan configuration, administrators occasionally forget to declare a nameservers: block under eth0. Because DHCPv4 was previously supplying Netcup’s recursive DNS servers (46.38.225.230 and 46.38.252.230), disabling dhcp4 without adding explicit nameservers leaves systemd-resolved with zero upstream resolvers (Current Scopes: none in resolvectl status).

Finally, if you operate a mail server or send transactional notifications from your Netcup server, verify that forward (A/AAAA) and reverse (PTR) DNS records match symmetrically (FCrDNS) across both IPv4 and IPv6.

Repair systemd-resolved Stub Resolver & Verify Forward-Confirmed Reverse DNS (PTR)
bash
# 1. Inspect systemd-resolved status and active upstream DNS servers per interface
resolvectl status

# 2. Test direct DNS queries against Netcup's official recursive resolvers & Cloudflare
dig @46.38.225.230 netcup.com +short
dig @1.1.1.1 ubuntu.com +short

# 3. If /etc/resolv.conf was overwritten by a broken script, restore the systemd-resolved symlink
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved

# 4. Verify your server's public IPv4 and IPv6 Reverse DNS (PTR) records
SERVER_IPV4=$(ip -4 addr show "$(ip -4 route show default | awk '{print $5; exit}')" | awk '/inet / {split($2,a,"/"); print a[1]; exit}')
SERVER_IPV6=$(ip -6 addr show "$(ip -4 route show default | awk '{print $5; exit}')" scope global | awk '/inet6 / {split($2,a,"/"); print a[1]; exit}')
echo "IPv4 PTR: $(dig -x "${SERVER_IPV4}" +short @1.1.1.1)"
echo "IPv6 PTR: $(dig -x "${SERVER_IPV6}" +short @1.1.1.1)"

Command Explanation: Checks systemd-resolved upstream health, tests Netcup’s internal resolvers (46.38.225.230), restores the /etc/resolv.conf stub symlink if corrupted, and queries public PTR records for your IPv4 and IPv6 addresses.

EXPECTED OUTPUT
IPv4 PTR: mail.example.com.
IPv6 PTR: mail.example.com.

Common Troubleshooting Scenarios

DIAGNOSTIC RUNBOOK

[SYMPTOM] Server Completely Unreachable via SSH After Upgrading Debian 11 -> 12 or Ubuntu 22.04 -> 24.04

Root Cause: udev renamed the primary virtual network interface from eth0 to ens3 during the kernel upgrade, while /etc/network/interfaces or /etc/netplan/ still references eth0.

Resolution: Open the Netcup SCP -> Screen (VNC) console, log in locally, run ip -br link to view the new interface name (ens3), and update /etc/netplan/*.yaml using the MAC-pinned configuration in Step 2 (match.macaddress + set-name: eth0).

[SYMPTOM] IPv6 Connectivity Works for 5–15 Minutes After Reboot and Then Stops Responding Completely

Root Cause: Netplan or /etc/network/interfaces has accept-ra: true (or lacks an explicit fe80::1 static route), and the kernel flushes the default route when the router advertisement timer expires.

Resolution: Configure accept-ra: false, dhcp6: false, and an explicit static route to: "::/0", via: "fe80::1", on-link: true in /etc/netplan/50-cloud-init.yaml, then run sudo netplan apply.

[SYMPTOM] Docker Containers Hang When Fetching Large HTTPS Files or git clone Overlays

Root Cause: The host interface or an intermediate tunnel (such as WireGuard or a VLAN) has an MTU smaller than 1500 bytes while the docker0 / Compose bridge network defaults to MTU 1500, causing dropped TCP segments.

Resolution: Match Docker’s bridge MTU to your lowest outbound interface MTU by adding "mtu": 1420 (or 1450) in /etc/docker/daemon.json and running sudo systemctl restart docker.

[SYMPTOM] Netcup DDoS Protection Notification Email Received and Inbound Traffic Is Temporarily Filtered

Root Cause: Netcup’s automated volumetric DDoS mitigation system (AS197540) detected an inbound UDP amplification or SYN flood targeting your IPv4 address and engaged scrubbing filters.

Resolution: Check the SCP -> Network -> DDoS Protection status tab, ensure your server is not running an open UDP reflector (such as an exposed DNS port 53, NTP, or Memcached), and allow the automated scrubbing window (typically 15–30 minutes after the flood stops) to clear.

[SYMPTOM] SCP HTML5 VNC Console Shows a Blank Black Screen When Opened

Root Cause: Linux console blanking (consoleblank) put the virtual VGA framebuffer into power-saving sleep mode.

Resolution: Click inside the VNC canvas window and press the Shift or Space key (do not press Enter blindly in case a root prompt is active) to wake the virtual display immediately.

Frequently Asked Questions

VERIFIED Q&A

What information does Netcup Technical Support require when reporting a routing or packet loss issue?

Netcup’s network engineering team (noc@netcup.de / Helpcenter ticket) requires bidirectional MTR reports (mtr -rwzc 100) showing at least 100 packets in both directions: (1) from your Netcup server to the external client IP, and (2) from the external client IP back to your Netcup server IP, along with timestamps in UTC.

What are Netcup’s official internal recursive DNS server IP addresses?

Netcup operates fast, low-latency dual-stack recursive DNS resolvers inside AS197540 at 46.38.225.230 and 46.38.252.230 (IPv4) and 2a03:4000:0:1::e1e6 and 2a03:4000:8000::fce6 (IPv6). Combining these with 1.1.1.1 or 9.9.9.9 as fallback resolvers provides sub-millisecond DNS lookups.

How does the Netcup SCP Firewall interact with UFW and Docker on my server?

The Netcup SCP Firewall is a stateful hypervisor-edge firewall applied outside your KVM virtual machine on the host bridge. Packets dropped by the SCP Firewall never reach your VM (tcpdump inside the VM will not see them), and—crucially—the SCP Firewall cannot be bypassed by Docker’s DOCKER iptables chain. Best practice is to use the SCP Firewall as your outer perimeter and ufw/nftables inside the guest OS for defense-in-depth.

Can I assign multiple IPv6 addresses from my /64 subnet to my Netcup server?

Yes. Every Netcup VPS and Root Server includes a full /64 IPv6 subnet (18,446,744,073,709,551,616 addresses). You can add 2a03:4000:xx:xxxx::2/64, ::3/64, or any address within your /64 under the addresses: list in /etc/netplan/50-cloud-init.yaml and configure separate Reverse DNS (PTR) records for each address in the SCP -> Network tab.

REFERENCES // VERIFIED TECHNICAL SOURCES

FURTHER READING // ARCHITECTURE AUDITS & GUIDES

Active Coupons →