openSUSE Leap Network Troubleshooting for VPS Reachability

When a VPS is up but still unreachable
If your server boots but SSH still times out, the problem is usually not “the internet.” It is almost always one of four things: address assignment, routing, firewall policy, or service binding. This tutorial walks you through openSUSE Leap network troubleshooting on a fresh VPS, then shows you how to restore reachability without locking yourself out.
We will work on openSUSE Leap because the stack differs a little from Ubuntu or RHEL-family systems. You will use zypper, firewalld, and AppArmor-aware checks, and you will confirm network state with systemd tools before changing anything. If you are moving a customer server, finishing a migration, or recovering access after a firewall change, this is the safest order to follow. For larger deployments, Hostperl VPS hosting at Hostperl VPS gives you room to test these changes without pushing production traffic onto a fragile setup.
What you will fix
By the end, you will be able to:
- Confirm the server’s IP, route, and DNS state.
- Test ICMP, SSH, and service ports from inside and outside the VPS.
- Repair common firewalld mistakes on openSUSE Leap.
- Check whether SSH or an app is listening on the right interface.
- Verify IPv4 and IPv6 reachability separately.
- Roll back a bad change safely if you break connectivity.
This guide focuses on a real support scenario: the VPS responds in the provider panel, but clients cannot connect. If you are also hardening SSH access, keep SSH hardening without lockouts open in another tab, because the order of operations matters.
1) Connect and identify the operating system
On your local computer, open your terminal and connect as root first. Keep the original session open until you have tested a second login.
ssh root@203.0.113.10203.0.113.10 is a reserved documentation address. Replace it with the real public IP assigned to your VPS.
If your provider gives you a default non-root account, use that first, then elevate with sudo after verification:
ssh deploy@203.0.113.10On the VPS as root, confirm the operating system before making any changes:
cat /etc/os-releaseYou should see openSUSE Leap details such as the NAME and VERSION fields. If you do not, stop here and follow the correct OS guide for that system.
2) Refresh packages and inspect the current network state
openSUSE Leap uses zypper. Refresh metadata first so you are not troubleshooting with stale packages or tools.
zypper refreshzypper update -yNow inspect interfaces, addresses, and routes. These commands show whether the VPS has the expected public IP and a default gateway.
ip addr showip route showip -6 addr showip -6 route showLook for three clues: the expected IPv4 address on the main interface, a default route, and any IPv6 address that should actually be reachable. If the address is missing, this is usually a provider-side assignment issue or a bad netconfig profile.
3) Test basic connectivity from the VPS itself
Before you blame the outside world, check whether the server can reach its own gateway and a public resolver. That separates local routing problems from upstream packet filtering.
ping -c 4 203.0.113.1ping -c 4 1.1.1.1ping -c 4 8.8.8.8Replace 203.0.113.1 with your actual gateway if your provider documents one. If gateway ping fails but public ping works, your route table may still be wrong. If public ping fails too, check the interface state and the provider network.
For name resolution, test DNS separately. Broken DNS often looks like “the internet is down” when it is really just lookup failure.
resolvectl statusgetent hosts hostperl.comIf getent returns an IP, DNS resolution is working. If it hangs or returns nothing, fix resolver settings before touching the firewall.
4) Check listening services and interface binding
Many reachability failures are not network failures at all. The service is simply listening on 127.0.0.1 instead of the public interface, or it is not running.
ss -tulpnLook for SSH on port 22 and any application port you expect to expose, such as 8000. A healthy SSH daemon usually shows 0.0.0.0:22, [::]:22, or both. If you only see 127.0.0.1:22, SSH is bound to localhost and remote access will fail.
Check service status next:
systemctl status sshd --no-pagerOn openSUSE Leap, the SSH service is usually sshd. If the unit is inactive or failed, read the journal:
journalctl -u sshd -b --no-pagerIf you are publishing an app on port 8000, verify the process is listening on all required interfaces. For a local-only test service, 127.0.0.1 is fine. For public access, it is not.
5) Confirm firewalld is not blocking the port
openSUSE Leap commonly uses firewalld. That is good, but it also means you need to check zone rules before blaming routing. Start by confirming the service is running.
systemctl status firewalld --no-pagerList the active zone and its allowed services or ports:
firewall-cmd --get-active-zonesfirewall-cmd --zone=public --list-allIf SSH is missing from the active zone, add it before closing any other access method. Do not remove the current session or change SSH settings yet.
firewall-cmd --permanent --zone=public --add-service=sshfirewall-cmd --reloadIf your application uses port 8000, open it explicitly:
firewall-cmd --permanent --zone=public --add-port=8000/tcpfirewall-cmd --reloadCheck the result immediately:
firewall-cmd --zone=public --list-portsfirewall-cmd --zone=public --list-servicesIf you use a custom zone, replace public with that zone name. The rule must match the interface’s actual zone assignment, or the port will stay blocked.
6) Add a non-root admin safely
If you are still working as root, create the non-root admin now. This is the right moment because network access is already stable and you can test a second login before changing anything else.
On the VPS as root, create the account, add it to wheel, and prepare SSH access:
useradd -m -G wheel -s /bin/bash deploypasswd deploymkdir -p /home/deploy/.sshchmod 700 /home/deploy/.sshCopy your public key into the account. Replace the example key with your own:
cat > /home/deploy/.ssh/authorized_keys <<'EOF'
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEexampleKeyHereReplaceMe user@example.com
EOFchmod 600 /home/deploy/.ssh/authorized_keyschown -R deploy:deploy /home/deploy/.sshNow open a second terminal on your local computer and test the account before touching root access:
ssh deploy@203.0.113.10After logging in, confirm sudo works:
sudo -vIf sudo asks for your password and then succeeds, your admin path is ready. Leave the root session open until this works.
7) Repair SSH only after firewall access is confirmed
If SSH is still unreachable from outside, inspect its configuration. On openSUSE Leap, the file is usually /etc/ssh/sshd_config. Use a safe edit and keep a rollback copy.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakgrep -E '^(Port|ListenAddress|PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_configIf you need SSH on the default port with key-based access only, make the following minimal changes with vi or your preferred editor:
vi /etc/ssh/sshd_configUse these settings if they are missing or commented out:
Port 22
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yesSave and exit the editor, then validate syntax before restart:
sshd -tNo output means the config syntax is valid. Then reload safely:
systemctl reload sshdTest the new session from your local computer before ending the original root connection:
ssh deploy@203.0.113.10For lockout prevention, do not disable password authentication or root login until this second connection succeeds.
8) Diagnose IPv6 separately from IPv4
IPv6 failures are common because the address exists, but the route or firewall does not. Treat IPv6 as its own path.
ping -6 -c 4 google.comping -6 -c 4 2606:4700:4700::1111ss -tulpn | grep -E ':22|:8000'If IPv4 works and IPv6 fails, verify the default route and the firewall zone again. Some providers deliver IPv6 only when you add a routed prefix or enable the correct virtual NIC settings in the control panel. That is a provider-side configuration issue, not an OS bug.
For DNS on dual-stack hosts, check both A and AAAA records from your workstation:
dig A server.example.com +shortdig AAAA server.example.com +shortReplace server.example.com with your hostname. A missing AAAA record can make IPv6-only clients fail even when the server is otherwise healthy.
9) NetworkManager and persistent interface issues
If the server reboots and loses the IP, the problem may be in the persistent profile rather than the live interface. openSUSE Leap uses NetworkManager on many installs, so inspect its active connection.
nmcli device statusnmcli connection shownmcli connection show --activeFind the connection profile tied to your main NIC, then inspect it:
nmcli connection show "Wired connection 1"If the profile is wrong, modify the connection rather than editing random files. For example, to set static IPv4 on the main profile:
nmcli connection modify "Wired connection 1" ipv4.addresses 203.0.113.10/24 ipv4.gateway 203.0.113.1 ipv4.method manualnmcli connection modify "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"nmcli connection up "Wired connection 1"Replace the example address, prefix, and gateway with the values supplied for your VPS. Then recheck the route and test connectivity again.
10) WireGuard reachability check for private tunnels
If your server is supposed to be reachable over a WireGuard tunnel, the failure may sit in the tunnel rather than the public interface. Confirm the tunnel state and the peer handshake.
systemctl status wg-quick@wg0 --no-pagerwg showip addr show wg0A healthy tunnel shows a recent handshake and an address on wg0. If the handshake is stale, check firewall rules for UDP port 51820 and verify the peer’s endpoint IP and allowed IPs. If you need a dedicated address for a tunnel-facing service, Hostperl’s IP resources at Hostperl IP address rental can help with routed public addressing on the service side.
11) Roll back safely if you break access
When a change causes a lockout, revert in the least risky order. First, keep an active session open if you still have one. Second, restore the last known-good firewall or SSH config. Third, reboot only if the network stack is wedged and the provider panel shows a console.
To restore the SSH backup:
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_configsshd -tsystemctl restart sshdTo remove a temporary firewall port you no longer need:
firewall-cmd --permanent --zone=public --remove-port=8000/tcpfirewall-cmd --reloadIf the interface profile is wrong, return it to DHCP or the previous static settings with nmcli, then reconnect. Avoid random file edits under /etc/sysconfig/network/ unless you know which profile is in use.
Verification from server and client
On the VPS, confirm that the services are active and the sockets are listening:
systemctl is-active sshdsystemctl is-active firewalldss -tulpn | grep -E ':22|:8000'journalctl -u sshd -b --no-pager | tail -n 20On your local computer, test both SSH and the public port from outside:
ssh deploy@203.0.113.10curl -I http://203.0.113.10:8000If the SSH login works and the HTTP check returns a valid response, the server is reachable again. If the service is not HTTP, substitute the correct protocol-specific client test, such as nc -vz 203.0.113.10 25 for SMTP or nc -vz 203.0.113.10 5432 for PostgreSQL.
Troubleshooting the most likely failures
- Symptom: SSH times out, but the panel console works. Check:
firewall-cmd --zone=public --list-all. Fix: addsshto the active zone and reload. - Symptom: The service starts only on localhost. Check:
ss -tulpn. Fix: change the app or SSH to bind to0.0.0.0or the public IP. - Symptom: IPv4 works, IPv6 does not. Check:
ip -6 route showandfirewall-cmd --list-all. Fix: add the routed prefix and allow the needed IPv6 port. - Symptom: Reachability fails after reboot. Check:
nmcli connection show --active. Fix: correct the persistent NetworkManager profile.
Why this matters for production hosting
Reachability issues consume support time fast. A server that is “up” but unreachable still misses customer traffic, mail, or API calls. On a production VPS or migration project, a clean network checklist saves you from guessing and shortens downtime.
If you are planning a new deployment rather than repairing one, Hostperl VPS hosting gives you a practical place to stage the network design before cutover. For larger or traffic-sensitive environments, compare that with dedicated server hosting when you need more control over NIC layout, routing, and performance isolation.
If you want a clean base for production networking, Hostperl can help you start on the right footing with Hostperl VPS or, for heavier traffic and tighter network control, dedicated server hosting. That makes it easier to test firewall rules, IPv6, and tunnel access before a customer launch.
FAQ
Why can I ping the server but not SSH into it?
ICMP and SSH use different paths. The firewall may allow ping but block port 22, or SSH may be listening only on localhost.
Should I disable root login immediately?
No. First verify that your non-root sudo account works from a second terminal. Only then reduce root access.
How do I know if the problem is DNS or routing?
Test both. Use getent hosts or dig for DNS, then ping or traceroute for routing.
Can I use this process for a web app on port 8000?
Yes. Replace the SSH-specific checks with your app’s port and service name, then confirm the app binds to the correct interface and the firewall allows that port.
What if firewalld is not installed?
Then your image may use a different firewall path, but on openSUSE Leap it is common. Check systemctl status firewalld first before assuming another tool is active.
