Poradnik: Konfiguracja prywatnej sieci 172.16.61.0/24 z DHCP i NAT
Środowisko: Proxmox / Debian / Ubuntu Server
1. Założenia architektury
- Sieć prywatna: 172.16.61.0/24
- Brama: 172.16.61.1 (vmbr1)
- Dostęp do Internetu przez: vmbr0
- DHCP z rezerwacjami statycznymi (fixed-address)
- NAT (MASQUERADE) dla całej podsieci
2. Konfiguracja mostu vmbr1
Plik: /etc/network/interfaces
source /etc/network/interfaces.d/*
auto vmbr1
iface vmbr1 inet static
address 172.16.61.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '172.16.61.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '172.16.61.0/24' -o vmbr0 -j MASQUERADE
Co robi ta konfiguracja?
- Tworzy prywatny bridge bez fizycznej karty sieciowej
- Ustawia bramę 172.16.61.1
- Włącza IP forwarding
- Tworzy NAT (masquerade) do Internetu przez vmbr0
Po zmianach wykonaj: systemctl restart networking lub reboot.
3. Instalacja serwera DHCP
apt update
apt install isc-dhcp-server -y
Ustaw interfejs w pliku:
/etc/default/isc-dhcp-server
INTERFACESv4="vmbr1"
4. Konfiguracja DHCP
Plik: /etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;
subnet 172.16.61.0 netmask 255.255.255.0 {
authoritative;
default-lease-time 21600000;
max-lease-time 432000000;
option routers 172.16.61.1;
option domain-name-servers 8.8.8.8,4.2.2.1;
host VM_1 {
hardware ethernet 02:00:00:2e:3f:c5;
fixed-address 172.16.61.3;
}
host VM_2 {
hardware ethernet 02:00:00:2e:3f:b5;
fixed-address 172.16.61.4;
}
host VM_3 {
hardware ethernet 02:00:00:2d:3f:b5;
fixed-address 172.16.61.6;
}
}
Wyjaśnienie:
- authoritative – serwer jest głównym DHCP dla tej sieci
- option routers – brama domyślna
- option domain-name-servers – DNS
- host – rezerwacja IP po MAC
5. Uruchomienie usługi
systemctl restart isc-dhcp-server
systemctl enable isc-dhcp-server
systemctl status isc-dhcp-server
6. Test działania
Sprawdzenie NAT
iptables -t nat -L -n -v
Sprawdzenie IP Forwarding
cat /proc/sys/net/ipv4/ip_forward
Sprawdzenie logów DHCP
journalctl -u isc-dhcp-server
7. Schemat działania
VM (172.16.61.x)
↓
vmbr1 (172.16.61.1)
↓
NAT (iptables MASQUERADE)
↓
vmbr0 (public IP)
↓
Internet
↓
vmbr1 (172.16.61.1)
↓
NAT (iptables MASQUERADE)
↓
vmbr0 (public IP)
↓
Internet
8. Najczęstsze błędy
- Brak ustawienia INTERFACESv4=”vmbr1″
- IP forwarding wyłączony
- Firewall blokuje ruch
- VM nie ma ustawionej karty na vmbr1
9. Podsumowanie
Konfiguracja tworzy całkowicie odseparowaną sieć prywatną z pełnym dostępem do Internetu
przez NAT. Każda maszyna wirtualna dostaje stały adres IP na podstawie MAC.
Rozwiązanie idealne dla środowisk testowych, VPS prywatnych oraz izolowanych klastrów.
10. Przykłady DNAT (Port Forwarding z vmbr0 do VM)
Jeżeli chcesz przekierować ruch z publicznego IP (vmbr0) do konkretnej maszyny w sieci prywatnej 172.16.61.0/24, używasz reguły DNAT w tablicy nat, łańcuch PREROUTING.
Przykład 1: Przekierowanie portu 3000 → 172.16.61.3:8007
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 3000 \
-j DNAT --to-destination 172.16.61.3:8007
Co robi ta reguła?
- -t nat – użycie tablicy NAT
- PREROUTING – modyfikacja pakietu przed routingiem
- -i vmbr0 – ruch przychodzący z Internetu
- –dport 3000 – port publiczny
- DNAT – zmiana adresu docelowego
- Ruch trafia finalnie na 172.16.61.3:8007
Wymagane dodatkowe reguły FORWARD
iptables -A FORWARD -p tcp -d 172.16.61.3 --dport 8007 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -s 172.16.61.3 --sport 8007 -m state --state ESTABLISHED,RELATED -j ACCEPT
Przykład 2: HTTP → VM_2
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 \
-j DNAT --to-destination 172.16.61.4:80
Usuwanie reguły
iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 3000 \
-j DNAT --to-destination 172.16.61.3:8007
Trwałość po restarcie
Aby reguły przetrwały restart systemu:
apt install iptables-persistent -y
netfilter-persistent save
Internet → vmbr0 (public IP:3000)
↓
DNAT
↓
172.16.61.3:8007 (VM)
↓
DNAT
↓
172.16.61.3:8007 (VM)
Dodaj komentarz