Struktur NAT Modular, Redireksi VNC, dan Internet Gateway

Ditulis oleh Ketut Kumajaya | 5 September 2025

Konteks Operasional

Dalam sistem industri yang mengandalkan remote access yang aman, integrasi jaringan virtual seperti ZeroTier ke subnet lokal fisik menjadi kebutuhan penting. Artikel ini menyajikan struktur konfigurasi gateway Ubuntu yang modular, memungkinkan konektivitas eksplisit serta redireksi layanan seperti VNC melalui NAT serta akses internet saat diperlukan.


Topologi & Mapping IP

Komponen IP Address Fungsi
ZeroTier Gateway 192.168.194.72 Interface ZeroTier & NAT
LAN Gateway 192.168.71.130 Interface lokal LAN
Target LAN 192.168.71.247 Tujuan akses dari ZeroTier
VNC Server 128.128.1.134 Tujuan DNAT port 5900
--- config: theme: neutral --- flowchart TD ZTClient["ZeroTier Client
192.168.194.x"]:::client ZTGateway["Gateway Ubuntu
192.168.194.72"]:::gateway LANTarget["Target LAN
192.168.71.247"]:::lan ZTClient -->|Ping / VNC Request| ZTGateway ZTGateway -->|FORWARD Rule
zt+ → eth0| LANTarget LANTarget -->|Response| ZTGateway ZTGateway -->|FORWARD Rule
eth0 → zt+| ZTClient classDef client fill:#d1ecf1,stroke:#0c5460,stroke-width:2px classDef gateway fill:#fff3cd,stroke:#856404,stroke-width:2px classDef lan fill:#d4edda,stroke:#155724,stroke-width:2px

Topologi ini memungkinkan node ZeroTier mengakses subnet lokal melalui gateway Ubuntu, sekaligus merelay koneksi VNC secara eksplisit.


IP Forwarding & Kebijakan Routing

Aktifkan IP forwarding dengan mengedit konfigurasi UFW:

sudo nano /etc/ufw/sysctl.conf

Set:

net/ipv4/ip_forward = 1

Ubah kebijakan default forwarding:

sudo nano /etc/default/ufw

Set:

DEFAULT_FORWARD_POLICY="ACCEPT"

Untuk memastikan interface yang digunakan sesuai, cek dengan:

ip a | grep inet

Struktur NAT & Rule UFW

Edit /etc/ufw/before.rules sebelum COMMIT:

*nat
:POSTROUTING ACCEPT [0:0]

# MASQUERADE: NAT ZeroTier ke internet via eth0
-A POSTROUTING -s 192.168.194.0/24 -o eth0 -j MASQUERADE

COMMIT

*filter
:FORWARD ACCEPT [0:0]

# FORWARD: Trafik ZeroTier ke subnet lokal
-A FORWARD -i zt+ -o eth0 -s 192.168.194.0/24 -d 192.168.71.0/24 -j ACCEPT

# FORWARD: Trafik subnet lokal ke ZeroTier
-A FORWARD -i eth0 -o zt+ -s 192.168.71.0/24 -d 192.168.194.0/24 -j ACCEPT

COMMIT

Catatan: aturan NAT ditempatkan di before.rules agar diproses lebih awal sebelum aturan filter default UFW.


Route di ZeroTier Controller

Tambahkan route:

Destination Via
192.168.71.0/24 192.168.194.72

Route ini mengarahkan trafik subnet lokal melalui gateway ZeroTier. Jika menggunakan ZTNET self-hosted controller, konfigurasi dapat dilakukan melalui dashboard web.


Redireksi VNC via DNAT

Lakukan perubahan di blok *nat di /etc/ufw/before.rules:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# DNAT: Redirect port 5900 (VNC) ke server 128.128.1.134
-A PREROUTING -p tcp -d 192.168.194.72 --dport 5900 \
   -j DNAT --to-destination 128.128.1.134:5900

# MASQUERADE: NAT ZeroTier ke internet via eth0
-A POSTROUTING -s 192.168.194.0/24 -o eth0 -j MASQUERADE

# MASQUERADE: NAT untuk balasan dari VNC Server ke ZeroTier client
-A POSTROUTING -s 192.168.194.0/24 -d 128.128.1.0/24 -j MASQUERADE

COMMIT
--- config: theme: neutral --- flowchart TD DNATRequest["ZeroTier Client
→ port 5900"]:::client DNATGateway["Gateway Ubuntu
DNAT Rule"]:::gateway VNCServer["VNC Server
128.128.1.134"]:::vnc DNATRequest --> DNATGateway DNATGateway -->|DNAT port 5900| VNCServer VNCServer -->|Response| DNATGateway DNATGateway -->|MASQUERADE
balasan ke client| DNATRequest classDef client fill:#d1ecf1,stroke:#0c5460,stroke-width:2px classDef gateway fill:#fff3cd,stroke:#856404,stroke-width:2px classDef vnc fill:#d4edda,stroke:#155724,stroke-width:2px

DNAT ini memungkinkan client ZeroTier mengakses VNC server secara langsung. Sebagai tambahan, tetap disarankan menggunakan password kuat atau tunneling (misalnya SSH) karena protokol VNC secara default tidak terenkripsi.


Rule UFW untuk Port VNC

sudo ufw allow from 192.168.194.0/24 to any port 5900 proto tcp comment "VNC gateway"

Untuk meninjau aturan secara urut dan mudah dihapus bila salah:

sudo ufw status numbered

Gateway Ubuntu sebagai Internet Gateway

Selain berfungsi sebagai relay VNC, gateway Ubuntu juga dapat memberikan akses internet ke subnet lokal 128.128.1.0/24, selama memiliki dua interface aktif:

  • enxf8e43b8c14c6 → terhubung ke subnet 128.128.1.0/24
  • eth0 → terhubung ke subnet 192.168.71.0/24 dan memiliki akses internet
--- config: theme: neutral --- flowchart TD HostSubnet["Host Industri
128.128.1.134"]:::client GatewayUbuntu["Gateway Ubuntu
IP: 128.128.1.140"]:::gateway Internet["Internet
(8.8.8.8, example.com)"]:::internet HostSubnet -->|Default Gateway: 128.128.1.140| GatewayUbuntu GatewayUbuntu -->|MASQUERADE via eth0| Internet Internet -->|Response| GatewayUbuntu GatewayUbuntu -->|Balasan NAT ke host| HostSubnet classDef client fill:#d1ecf1,stroke:#0c5460,stroke-width:2px classDef gateway fill:#fff3cd,stroke:#856404,stroke-width:2px classDef internet fill:#d4edda,stroke:#155724,stroke-width:2px

IP forwarding telah diaktifkan sebelumnya, sehingga gateway siap meneruskan trafik antar subnet.

Tambahkan ke blok *nat di /etc/ufw/before.rules:

# MASQUERADE: NAT subnet industri (128.128.1.0/24) ke internet via eth0
-A POSTROUTING -s 128.128.1.0/24 -o eth0 -j MASQUERADE

Tambahkan ke blok *filter:

# FORWARD: Trafik dari subnet industri ke internet
-A FORWARD -i enxf8e43b8c14c6 -o eth0 -s 128.128.1.0/24 -j ACCEPT

# FORWARD: Trafik balasan dari internet ke subnet industri
-A FORWARD -i eth0 -o enxf8e43b8c14c6 -d 128.128.1.0/24 -j ACCEPT

Reload & Verifikasi Konfigurasi

sudo ufw reload
sudo ufw status verbose

Struktur lengkap /etc/ufw/before.rules setelah perubahan:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# DNAT: Redirect port 5900 (VNC) ke server 128.128.1.134
-A PREROUTING -p tcp -d 192.168.194.72 --dport 5900 \
   -j DNAT --to-destination 128.128.1.134:5900

# MASQUERADE: NAT ZeroTier ke internet via eth0
-A POSTROUTING -s 192.168.194.0/24 -o eth0 -j MASQUERADE

# MASQUERADE: Balasan dari VNC Server ke client ZeroTier
-A POSTROUTING -s 192.168.194.0/24 -d 128.128.1.0/24 -j MASQUERADE

# MASQUERADE: NAT subnet industri (128.128.1.0/24) ke internet via eth0
-A POSTROUTING -s 128.128.1.0/24 -o eth0 -j MASQUERADE

COMMIT

*filter
:FORWARD ACCEPT [0:0]

# FORWARD: Trafik ZeroTier ke subnet lokal
-A FORWARD -i zt+ -o eth0 -s 192.168.194.0/24 -d 192.168.71.0/24 -j ACCEPT

# FORWARD: Trafik subnet lokal ke ZeroTier
-A FORWARD -i eth0 -o zt+ -s 192.168.71.0/24 -d 192.168.194.0/24 -j ACCEPT

# FORWARD: Trafik dari subnet industri ke internet
-A FORWARD -i enxf8e43b8c14c6 -o eth0 -s 128.128.1.0/24 -j ACCEPT

# FORWARD: Trafik balasan dari internet ke subnet industri
-A FORWARD -i eth0 -o enxf8e43b8c14c6 -d 128.128.1.0/24 -j ACCEPT

COMMIT

Validasi Runtime

Akses Subnet Lokal dari Node ZeroTier:

ping 192.168.71.247

Verifikasi Trafik di Gateway:

sudo tcpdump -i eth0 host 192.168.71.247

Uji Koneksi VNC via Telnet:

telnet 192.168.194.72 5900

Jika berhasil:

RFB 003.008

Respons RFB menandakan bahwa protokol VNC aktif dan DNAT berfungsi. Jika gagal, gunakan:

sudo tcpdump -i <interface> port 5900

Uji Koneksi Internet dari Subnet 128.128.1.0/24:
Dari host 128.128.1.134, arahkan default gateway ke 128.128.1.140, lalu uji koneksi:

ping 8.8.8.8
curl https://example.com

Penutup

Dengan konfigurasi ini, gateway Ubuntu berfungsi sebagai penghubung antara jaringan ZeroTier dan subnet lokal, serta sebagai relay layanan seperti VNC. Struktur NAT dan UFW yang modular mendukung konektivitas eksplisit dan dokumentasi yang siap diadopsi lintas proyek industri.