Menu

Proxmox – konfiguracja sieci NAT

2026-05-14 - Proxmox, Wirtualizacja

Dodajemy kolejny bridge vmbr1 dla sieci NAT

Włączamy routing

# Tworzymy nowy plik:
nano /etc/sysctl.d/99-proxmox-nat.conf

dodajemy linie:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

aktywacja bez restartu:

sysctl --system

lub

sysctl -p /etc/sysctl.d/99-proxmox-nat.conf

sprawdzenie:

cat /proc/sys/net/ipv4/ip_forward

wynik: 1

Konfiguracja nftables.conf

#!/usr/sbin/nft -f

flush ruleset

define WAN = "vmbr0"
define LAN_NAT = "vmbr1"
define LAN_NET = 10.0.0.0/24

table inet filter {
        chain input {
                type filter hook input priority filter;
                iif "lo" accept
                ct state established,related accept
                ct state invalid drop

                # SSH do Proxmox - opcjonalnie ogranicz do swojej sieci LAN
                iifname $WAN tcp dport 22 accept

                # ICMP/ping
                ip protocol icmp accept
                ip6 nexthdr icmpv6 accept

                # GUI Proxmox
                tcp dport 8006 accept

        }
        chain forward {
                type filter hook forward priority filter;

                ct state established,related accept
                ct state invalid drop

                # VM z sieci NAT mogą wychodzić do internetu/LAN
                iifname $LAN_NAT oifname $WAN ip saddr $LAN_NET accept

                # Ruch z zewnątrz tylko wtedy, gdy jest DNAT/port forwarding
                iifname $WAN oifname $LAN_NAT ct status dnat accept

        }
        chain output {
                type filter hook output priority filter;
        }
}

table ip nat {
        chain prerouting {
                type nat hook prerouting priority -100; policy accept;

                # Przykład: Proxmox:8080 -> VM 10.0.0.10:80
                iifname $WAN tcp dport 8080 dnat to 10.0.0.10:80

                # Przykład: Proxmox:2222 -> VM 10.0.0.10:22
                iifname $WAN tcp dport 2222 dnat to 10.0.0.10:22
        }
        chain postrouting {
                type nat hook postrouting priority 100; policy accept;

                # NAT dla VM wychodzących przez vmbr0
                oifname $WAN ip saddr $LAN_NET masquerade
        }
}

Weryfikacja konfiguracji nftables:

# weryfikacja konfiguracji:
nft -c -f /etc/nftables.conf

# załadowanie pliku:
nft -f /etc/nftables.conf

# restart zapory:
systemctl restart nftables

Konfiguracja sieci: nano /etc/network/interfaces

auto lo
iface lo inet loopback

iface nic0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.0.30/24
        gateway 192.168.0.1
        bridge-ports nic0
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        address 10.0.0.1/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0

source /etc/network/interfaces.d/*

Dla maszyny wirtualnej wybieramy vmbr1 i ustawiamy ręcznie adres IP np.

IP:      10.0.0.10/24
Gateway: 10.0.0.1
DNS:     8.8.8.8 albo adres routera