Homelab #3: DNS oraz firewall

— 4 min read

PL
Table of Contents

Ta część jest bardziej techniczna. W tej części opiszę jak organizowałem sieć w szczegółach, pokaże serwisy których używam i jak ich konfigurowałem.

Sieć

Po tym jak dodałem serwer do homelab musiałem trochę modyfikować sieć oraz zrobić porządek z IP adresami. Tak zmieniała się sieć:

  • default (VLAN ID: 1, subnet: 192.168.0.1/24)
  • homelab (VLAN ID: 2, subnet: 192.168.2.1/24)
  • iot (VLAN ID: 5, subnet: 192.168.5.1/24)
  • guest (VLAN ID: 6, subnet: 192.168.6.1/24)

Networks

Pozostawiłem VLAN ID 3 oraz 4 na przyszłość, jakbym kiedyś miał więcej serwerów. Każda wirtualna maszyna w proxmox dostaje ip adres z sieci homelab. W poprzednim materiale opisałem jak działa u mnie dns. Każda maszyna dns ma tą samą końcówkę 33:

  • dns: 192.168.2.33
  • Raspberry Pi Zero: 192.168.5.33

Serwery DNS są ustawione dla każdej sieci w takiej samej kolejności: dns, rpi.

DNS

Tak jak pisałem wcześniej żeby nie trzymać w pamięci IP każdej maszyny lub serwisu użyłem lokalnego DNS. Daje to możliwość przypisać każdemu IP własny „adres”. Np zamiast wpisywać w przeglądarce http://192.168.5.233 (synology NAS) mogę po prostu wpisać http://nas. Ponieważ już mam pihole, zrobienia czegoś takiego zajmuje dosłownie kilka minut. W zakładce Local DNS wpisuje nazwę którą chce i IP adres do którego ta nazwa powinna być przypisana. Na tym koniec. Zdecydowałem na następujące nazewnictwo: każde urządzenie (lub maszyna wirtualna) będzie posiadać jedno słowo. A lokalne serwisy będę mieć końcówkę .home.

Na ten moment mam takie DNS:

  • ui (konsola unifi)
  • proxmox (Dell Optiplex)
  • nas (synology NAS)
  • pizero (Raspberry Pi Zero)
  • dns (VC)
  • tools (VC)
  • services (VC)
  • tasks (VC)
  • media (VC)
  • iot (VC)
  • git.home (gitea)
  • auth.home (oauth)
  • main.home (dashboard)
  • notes.home (notatki)
  • uptime.home (monitoring)

Kiedyś usiądę i zrobię jakąś automatyzacje oby nie wpisywać tego ręczenie do PiHole. Ale na razie jest mi ok z tym. Tym bardziej że nie dodaje nowe rzeczy codziennie.

Firewall

Unifi console pozwała na ustawienie reguł dla sieci. Co pozwała np ograniczyć dostęp z jednej podsieci do innej. Np żeby urządzenie z sieci iot nie mogły się dostać do sieci default lub homelab (a lepiej do żadnej).

Networks

Poniżej jest opis wszystkich ip grup oraz reguł firewall które mam w network.

IP Groups

  • RFC1918 - Adress: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
  • PiHole - Adress: 192.168.2.33, 192.168.5.33
  • PiHole port - Port Group: 53
  • Gateway - Adress: 192.168.0.1, 192.168.2.1, 192.168.5.1, 192.168.6.1
  • Gateway port - Port Group: 443, 8443

Firewall Rules

Bardzo ważna jest kolejność reguł. Czym wyżej znajduje się na liście tym większy priorytet ma. Więc blokada na sam koniec, a wszystko co powinno pozwalać na dostęp wyżej blokady. Inaczej reguła z blokadą będzie blokować pozwolenie.

  1. Allow established & related

    • Name: Allow established & related
    • Advanced: Manual
    • Match State: Established, Related
  2. Allow default to all vlans: pozwolić na dostęp z default do każdej innej sieci

    • Name: Allow default to all vlans
    • Source:
      • Source Type: Network
      • Network: Default
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: RFC1918
  3. Allow from homelab to iot: pozwolić na dostęp z homelab do iot

    • Name: Allow from homelab to iot
    • Source:
      • Source Type: Network
      • Network: Homelab
    • Destination:
      • Source Type: Network
      • Network: IoT
  4. Allow dns from vlans: pozwolić na dostęp do dns z każdej sieci

    • Name: Allow dns from vlans
    • Source:
      • Source Type: Port/IP Group
      • Address Group: RFC1918
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: PiHole
      • Port Group: PiHole port
  5. Allow TV to jellyfin: pozwolić na dostęp telewizora do jellyfin

    • Name: Allow TV to jellyfin
    • Source:
      • Source Type: Port/IP Group
      • Address Group: TV
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: Media
      • Port Group: Jellyfin port
  6. Drop traffic between vlans: zabronić dostęp wszystkich sieci do innej

    • Name: Drop traffic between vlans
    • Action: Drop
    • Source:
      • Source Type: Port/IP Group
      • Address Group: RFC1918
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: RFC1918
  7. Drop invalid: resetować „martwe” połączenia

    • Name: Drop invalid
    • Action: Drop
    • Advanced: Manual
    • Match State: Invalid
  8. Allow default to gateway: pozwolić na dostęp z default do konsoli unifi

    • Type: Lan Local
    • Name: Allow default to gateway
    • Source:
      • Source Type: Network
      • Network: Default
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: Gateway
      • Port Group: Gateway port
  9. Block vlans to gateway: zabronić dostęp wszystkich sieci do konsoli unifi

    • Type: Lan Local
    • Name: Allow established & related
    • Action: Drop
    • Source:
      • Source Type: Port/IP Group
      • Address Group: Any
      • Port Group: Any
    • Destination:
      • Source Type: Port/IP Group
      • Address Group: Gateway
      • Port Group: Gateway port