Konsola vs SSH Architektura Pułapka Diagnostyka Dlaczego tak Rozwiązanie HTTPS 443 Zapis na stałe
ovhcloud · qemu/kvm · tailscale · iptables

Z awaryjnej konsoli
na wygodne SSH.

Konsola ratunkowa OVH nie obsługuje schowka — zero wklejania. Ten poradnik pokazuje, jak bezpiecznie przejść na SSH przez Tailscale, nie psując przy tym istniejącego przekierowania ruchu do serwera domowego, i jak dorzucić do tego HTTPS.

ovh-console: ~
vps 57.128.255.40 dom 100.96.49.10 ssh :22 → dom ssh :2222 → vps
01 — Zanim cokolwiek klikniesz

Konsola ratunkowa to nie terminal SSH

Awaryjna konsola QEMU/KVM w panelu OVHcloud to podgląd ekranu VPS-a na żywo — jak fizyczny monitor podłączony do serwera. Nie ma tam obsługi schowka, więc każdą komendę trzeba przepisać ręcznie. OVHcloud sam rekomenduje zarządzanie serwerem przez SSH.

na wejście

Adres Tailscale VPS-a

Potrzebny, zanim spróbujesz połączyć się z zewnątrz.

bash — konsola ovh
tailscale ip -4
docelowo

Zwykłe logowanie z komputera

Dopiero stąd zadziała normalne wklejanie: Ctrl+Shift+V albo prawy przycisk myszy.

powershell / terminal
ssh debian@100.x.x.x
02 — Zrozum układ, zanim dotkniesz iptables

VPS to tylko brama

Prawdziwy serwer stoi w domu. VPS ma publiczny adres IP i tylko przekazuje ruch dalej przez Tailscale, korzystając z reguł NAT/DNAT. To dlatego zmiana reguły w jednym miejscu potrafi zepsuć coś zupełnie innego.

Twój komputer │ internet, publiczne IP ▼ VPS OVH — 57.128.255.40 │ DNAT (iptables PREROUTING) ▼ tailscale0 → sieć prywatna Tailscale │ ▼ serwer domowy — 100.96.49.10 │ ▼ Apache / usługi
03 — Częsty błąd przy pierwszej próbie

Wyjątek na złym interfejsie

Pierwszy odruch to dodanie wyjątku dla ruchu wchodzącego przez tailscale0. Brzmi logicznie, ale w tej architekturze ruch od Ciebie wcale nie przychodzi tym interfejsem — przychodzi publicznym adresem VPS-a. Efekt: reguła nic nie chroni, a osobny port do samego VPS-a i tak trzeba dorobić inaczej.

niepoprawne

Wyjątek na tailscale0 dla portu 22

Nie zadziała dla ruchu przychodzącego publicznym interfejsem VPS-a — a o taki ruch tu chodzi.

bash — nie używaj
sudo iptables -t nat -I PREROUTING 1 -i tailscale0 -p tcp --dport 22 -j ACCEPT
krok pośredni

Osobny port dla VPS-a przez Tailscale

Działa tylko, gdy łączysz się już przez sieć Tailscale — nie z zewnątrz.

bash
sudo iptables -t nat -I PREROUTING 1 -i tailscale0 -p tcp --dport 2222 -j REDIRECT --to-ports 22
!

Efekt uboczny do zapamiętania

Port 22 przez Tailscale nadal prowadzi do serwera domowego — to się nie zmienia. Nowy port ma za zadanie dać dostęp wyłącznie do samego VPS-a, równolegle, bez ruszania istniejącego przekierowania.

04 — Gdy nowy port nie odpowiada

Zanim dodasz kolejną regułę

Timeout na porcie 2222 może mieć kilka przyczyn: komputer nie jest w tym samym Tailnecie, brak reguły dla właściwego interfejsu, albo usługa SSH w ogóle nie nasłuchuje tam, gdzie myślisz. Sprawdź to po kolei, zamiast zgadywać kolejną regułą.

na komputerze

Czy Tailscale w ogóle działa

Jeśli komenda nie istnieje — klient Tailscale nie jest zainstalowany albo uruchomiony.

powershell
tailscale status
łączność

Test bezpośredniej komunikacji

Odpowiedź pong potwierdza, że oba urządzenia widzą się w Tailnecie.

powershell
tailscale ping 100.88.8.12
na VPS

Czy SSH w ogóle nasłuchuje

Potwierdza, że usługa SSH żyje i jest widoczna na porcie 22 na serwerze.

bash
sudo ss -ltnp | grep ':22'
na VPS

Co naprawdę robią reguły NAT

Pokazuje kolejność i cel każdej reguły PREROUTING — kluczowe przy kilku regułach naraz.

bash
sudo iptables -t nat -L PREROUTING -n -v --line-numbers
i

Zasada na czas diagnostyki

Nie dodawaj kolejnej reguły "na próbę", zanim nie zobaczysz wyników powyższych czterech komend. Reguły NAT wykonują się w kolejności — jedna nietrafiona reguła wcześniej w łańcuchu potrafi ukryć efekt każdej kolejnej.

05 — Układ jest już jasny

Skąd naprawdę przychodzi ruch

Zanim przejdziesz do poprawnej reguły, warto zobaczyć dokładnie, dlaczego wcześniejsza próba nie mogła zadziałać. To jedno zdanie tłumaczy resztę tego poradnika.

Twój komputer │ publiczne IP ▼ VPS OVH — 57.128.255.40 │ DNAT ▼ serwer domowy przez Tailscale
dlatego błędne

Reguła na interfejsie tailscale0

Twoje połączenie z komputera dociera do VPS-a jego publicznym interfejsem — nie przez tailscale0. Reguła celująca w ten interfejs nigdy nie zobaczy tego ruchu. Dodatkowo ogólna reguła DNAT wysyłała port 2222 od razu do serwera domowego, gdzie nic na nim nie nasłuchiwało — stąd timeout.

bash — dlatego nie zadziałało
sudo iptables -t nat -I PREROUTING 1 -i tailscale0 …
wniosek

Reguła musi celować w publiczny adres

REDIRECT na -d 57.128.255.40 przechwytuje ruch lokalnie, do samego VPS-a, zanim zadziała ogólne przekierowanie do domu — dokładnie tam, gdzie ruch naprawdę wchodzi.

bash — dlatego zadziała
sudo iptables -t nat -I PREROUTING 1 -d 57.128.255.40 …
06 — Poprawna reguła dla ruchu z zewnątrz

Interfejs publiczny, nie Tailscale

Skoro łączysz się z komputera przez publiczny adres VPS-a, reguła musi celować w ten adres — nie w tailscale0. REDIRECT kieruje ruch lokalnie, do samego VPS-a, zanim zadziała ogólne DNAT do domu.

poprawna reguła

Publiczny port 2222 → lokalny SSH

Musi znaleźć się przed ogólną regułą DNAT do serwera domowego, stąd numer 1.

bash — konsola ovh
sudo iptables -t nat -I PREROUTING 1
  -d 57.128.255.40
  -p tcp --dport 2222
  -j REDIRECT --to-ports 22
test

Logowanie na sam VPS

Osobny port, osobne polecenie — nie zastępuje dotychczasowego dostępu do domu.

powershell
ssh -p 2222 debian@57.128.255.40
bez zmian

Dostęp do domu zostaje jak był

To samo polecenie co zawsze — nadal prowadzi tam, gdzie prowadziło.

powershell
ssh debian@57.128.255.40 # nadal → serwer domowy
jeśli nadal timeout

Firewall VPS-a lub OVH Network Firewall

Reguła iptables to jedno, a osobna zapora (np. Network Firewall w panelu OVHcloud) to drugie — port trzeba dopuścić w obu miejscach.

info
# sprawdź: panel OVHcloud → Network Firewall → dopuść TCP 2222
# oraz lokalny firewall na samym VPS (ufw / iptables INPUT)
07 — Ta sama logika dla ruchu WWW

Przekierowanie HTTPS 443 do domu

Gdy SSH do VPS-a już działa wygodnie, ten sam mechanizm DNAT przekazuje ruch HTTPS z publicznego adresu VPS-a na konkretny port serwera domowego przez Tailscale.

reguła DNAT

Publiczny 443 → dom 9443

Ruch trafiający na publiczny adres VPS-a na porcie 443 zostaje przekazany na wskazany port serwera domowego.

bash — na vps, przez ssh -p 2222
sudo iptables -t nat -I PREROUTING 1
  -d 57.128.255.40/32
  -p tcp --dport 443
  -j DNAT --to-destination 100.96.49.10:9443
kontrola

Sprawdzenie kolejności reguł

Powinieneś zobaczyć wpis kierujący ruch dokładnie na 100.96.49.10:9443.

bash
sudo iptables -t nat -L PREROUTING -n -v --line-numbers
tcp dpt:443 to:100.96.49.10:9443
test z zewnątrz

Sprawdzenie z Windowsa

Szybki test bez otwierania przeglądarki.

powershell
curl.exe -Iv https://57.128.255.40/
jeśli nadal timeout

Firewall blokuje też 443

Ten sam Network Firewall OVHcloud i lokalny firewall na VPS, który mógł blokować port 2222, tak samo potrafi zablokować 443 — sprawdź oba miejsca, zanim zaczniesz szukać błędu w regule DNAT.

info
# panel OVHcloud → Network Firewall → dopuść TCP 443
# na VPS: sudo ufw status  (albo iptables -L INPUT -n -v)
08 — Bez tego zniknie po restarcie

Zapisz reguły na stałe

Reguły iptables domyślnie żyją tylko w pamięci. Po restarcie VPS-a — czy to zaplanowanym, czy awaryjnym — wszystko, co tu ustawiłeś, zniknie, jeśli nie zapiszesz reguł na dysk.

instalacja

Pakiet do trwałego zapisu

Podczas instalacji potwierdź zapis reguł IPv4, gdy zapyta instalator.

bash
sudo apt update
sudo apt install iptables-persistent
zapis

Zachowanie aktualnych reguł

Zapisuje bieżący stan tablicy NAT, żeby przetrwał restart.

bash
sudo netfilter-persistent save
bash — pełna weryfikacja końcowa
sudo iptables -t nat -L PREROUTING -n -v --line-numbers
sudo ss -ltnp | grep -E ':(22|2222|443)'
systemctl status netfilter-persistent --no-pager -l
!

Kolejność, żeby niczego nie zablokować sobie samemu

1) Zweryfikuj nowe reguły zanim zapiszesz je na stałe.
2) Utrzymuj dwa oddzielne, działające dostępy SSH (port 22 do domu, port 2222 do VPS-a) — jeśli jeden padnie, drugi zostaje ratunkiem.
3) Po każdej kolejnej zmianie reguł uruchom netfilter-persistent save ponownie — stary zapis nie aktualizuje się sam.
4) Trzymaj gdzieś zanotowaną pełną listę reguł (iptables -t nat -L PREROUTING -n -v --line-numbers) — przyda się, jeśli kiedyś trzeba będzie odtworzyć konfigurację od zera.

↑