⬡ network routing setup // active

VPS → Home
Bridge

Publiczne IP  ·  iptables DNAT  ·  socat  ·  Tailscale tunnel

VPS · BRAMKA217.154.216.165
→
TAILSCALE · HOME100.96.49.10
217.
Public IP
5+
Usługi
0ms
Lag Tailscale
24/7
Uptime
Architektura routingu§ 01
🌐
INTERNET
Ruch
przychodzący
▶
PUBLIC IP
ENTRY POINT
🖥
VPS
217.154.216.165
iptables · socat
▶
TAILSCALE VPN
🏠
HOME
100.96.49.10
Serwer domowy
▶
SERVICES
⚡
SERVICES
MC · Crafty
Proxmox · Immich
root@vps-217 ~ — status check
root@vps:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
root@vps:~# iptables -t nat -L --line-numbers -n
Chain PREROUTING (policy ACCEPT)
1  DNAT  all -- 0.0.0.0/0  0.0.0.0/0  to:100.96.49.10
Chain POSTROUTING (policy ACCEPT)
1  MASQUERADE  all -- 0.0.0.0/0  0.0.0.0/0
root@vps:~# tailscale status | grep home
100.96.49.10  home-server  mikolaj@  linux  active; relay "waw", tx 1234567 rx 987654
root@vps:~# 
Konfiguracja krok po kroku§ 02
01
IP FORWARDING
sysctl
# Włącz routing pakietów na żywo
$ sudo sysctl -w net.ipv4.ip_forward=1

# Utrwal zmiany w pliku konfiguracyjnym
$ sudo nano /etc/sysctl.conf
    # → dodaj lub odkomentuj: net.ipv4.ip_forward=1

# Przeładuj sysctl i zastosuj zmiany
$ sudo sysctl -p
ℹBez włączonego IP forwarding kernel po prostu odrzuci pakiety przeznaczone dla innego hosta. To pierwszy i konieczny krok — bez niego nic nie zadziała.
02
DNAT — PREROUTING
iptables nat
# Przekieruj cały ruch do home serwera przez Tailscale
$ sudo iptables -t nat -A PREROUTING -j DNAT --to-destination 100.96.49.10

  # Alternatywnie — konkretny port (np. Minecraft 25565):
  # sudo iptables -t nat -A PREROUTING -p tcp --dport 25565 \
  #   -j DNAT --to-destination 100.96.49.10:25565
ℹDNAT (Destination NAT) podmienia docelowy adres IP pakietu przed routingiem. Kernel "myśli", że pakiet idzie do 100.96.49.10 — czyli home serwera przez Tailscale.
03
FORWARD RULES
iptables filter
# Zezwól na forward pakietów do home serwera
$ sudo iptables -A FORWARD -d 100.96.49.10 -j ACCEPT

# Zezwól na powrotny ruch z aktywnych połączeń
$ sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ℹReguła ESTABLISHED,RELATED to kluczowy element — bez niej odpowiedzi serwera domowego nie mogą wrócić do klienta. Connection tracking kernela śledzi aktywne sesje TCP/UDP.
04
MASQUERADE
⚠ ważne!
# Podmień źródłowy adres — pakiety odpowiedzi muszą wrócić przez VPS
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE
⚠Bez MASQUERADE home serwer widzi prawdziwe IP klienta i próbuje mu odpowiedzieć bezpośrednio — co jest niemożliwe. MASQUERADE sprawia, że odpowiedzi zawsze wracają przez VPS.
05
ZAPIS NA STAŁE
iptables-persistent
# Zainstaluj pakiet do trwałego zapisu reguł
$ sudo apt install iptables-persistent

# Zapisz reguły do /etc/iptables/rules.v4 i rules.v6
$ sudo netfilter-persistent save

  # Sprawdź że reguły zostały zapisane:
$ cat /etc/iptables/rules.v4
ℹReguły iptables nie przeżywają restartu serwera. iptables-persistent automatycznie ładuje je przy starcie systemu — bez tego po rebocie VPS wszystko przestanie działać.
Mapa sieci — adresy IP§ 03
RolaAdres IPTypUsługa / Uwagi
VPS — Proxy / Bramka217.154.216.165PUBLICWejście zewnętrzne, iptables
Home Server100.96.49.10TAILSCALECel DNAT, serwer docelowy
Minecraft Server217.154.216.165:25565TCPplay.mikolajfiuk.xce.pl
Crafty Controller100.96.49.10:8443HTTPSPanel zarządzania MC
Proxmox VE100.96.49.10:8006HTTPSWirtualizacja / Hypervisor
Immich100.96.49.10:2283HTTPGaleria zdjęć / self-hosted Photos
Port Matrix§ 04
TCP
25565
Minecraft Java
play.mikolajfiuk.xce.pl
HTTPS
8443
Crafty Controller
Panel MC — home only
HTTPS
8006
Proxmox VE
Wirtualizacja — home only
HTTP
2283
Immich
Galeria zdjęć
TCP
22
SSH
Dostęp do VPS / home
UDP
41641
Tailscale
WireGuard tunnel
⚠ WAŻNE — Tailscale wymagany na obu maszynach Reguła DNAT --to-destination 100.96.49.10 przekierowuje cały ruch TCP/UDP.
Adres 100.96.49.10 to adres Tailscale — VPS i home serwer muszą być w tej samej sieci Tailscale. Bez aktywnego połączenia Tailscale pakiety wylatują w próżnię.
OS: Debian 12
VPN: Tailscale
NAT: iptables
PROXY: socat
VPS IP: 217.154.216.165
HOME IP: 100.96.49.10
PERSIST: iptables-persistent
ROUTING: DNAT + MASQUERADE