Wdrażanie wielu jednostek 3CX MCU i silników transkrypcji AI w jednej sieci LAN.

Uruchamianie wielu instancji usług, które wymagają publicznych domen FQDN i certyfikatów SSL, może być sporym wyzwaniem pod kątem zarządzania.

Aby pokazać, co można osiągnąć (a czego nie), posłużymy się powszechnym scenariuszem jako punktem wyjścia, a następnie omówimy, jak różne warianty wpływają na Twoją strategię zarządzania certyfikatami SSL.

Przykładowa konfiguracja

Dla ułatwienia przyjmijmy, że dysponujemy zestawem trzech maszyn wewnątrz tej samej sieci lokalnej (LAN):

  • 3CX PhoneSystem – adres IP 192.168.0.10
  • 3CX On-Board MCU – adres IP 192.168.0.20
  • 3CX On-Board AI – adres IP 192.168.0.30

Domeny FQDN dostarczane przez 3CX

Standardowe wdrożenie 3CX wykorzystuje własnego klienta ACME do automatycznego wystawiania i odnawiania certyfikatów Let’s Encrypt. Ta metoda wiąże certyfikat bezpośrednio z instalacją 3CX i domeną FQDN. Aby to rozwiązanie działało, muszą zostać spełnione trzy poniższe wymagania:

1. Dedykowane publiczne adresy IP

W tej konfiguracji każda z trzech maszyn wymaga dedykowanego, publicznego adresu IP. Spójrz na poniższy przykład:

FQDN System Adres IP LAN Publiczny adres IP
mypbx.3cx.com.cy 3CX PhoneSystem 192.168.0.10 20.20.20.20
mymcu.my3cx.net (przypisany automatycznie) 3CX On-Board MCU 192.168.0.20 20.20.20.21
myai.my3cx.net (przypisany automatycznie) 3CX On-Board AI 192.168.0.30 20.20.20.22

2. Split DNS

Twój serwer DNS w sieci LAN musi być skonfigurowany tak, aby:

  • Wewnątrz sieci LAN domeny FQDN wskazywały na lokalne adresy IP.
  • Na zewnątrz sieci LAN domeny FQDN wskazywały na publiczne adresy IP.

Najprostszym sposobem jest utworzenie rekordów A (lub AAAA) dla konkretnych domen FQDN na lokalnym serwerze DNS w następujący sposób:

  • FQDN: mypbx.3cx.com.cy – 3CX PhoneSystem – Adres IP 192.168.0.10
  • FQDN: mymcu.my3cx.net – 3CX On-Board MCU – Adres IP 192.168.0.20
  • FQDN: myai.my3cx.net – 3CX On-Board AI – Adres IP 192.168.0.30

Tego typu konfiguracje funkcjonują pod różnymi nazwami, takimi jak:

  • Strefy Pinpoint DNS (Pinpoint DNS Zones)
  • Response Policy Zone (RPZ)
  • Split-Horizon DNS lub Widoki (Views)
  • Strefy Shadow (Shadow Zones)

3. Przekierowanie portów do automatycznej aktualizacji certyfikatów

Musisz skonfigurować firewall lub router brzegowy tak, aby:

  • Przekierowywał cały ruch (dla mymcu.my3cx.net ) z 20.20.20.21:80 na 192.168.0.20:80
  • Przekierowywał cały ruch (dla myai.my3cx.net) z 20.20.20.22:80 na 192.169.0.30:80

Pozwoli to Let’s Encrypt połączyć się z Twoją maszyną w celu aktualizacji certyfikatu.

System 3CX PhoneSystem (mypbx.3cx.com.cy) nie wymaga tego przekierowania, ponieważ wykorzystuje infrastrukturę chmurową 3CX do aktualizacji swoich certyfikatów 3CX FQDN.

UWAGA: Jeśli nie możesz zapewnić oddzielnych publicznych adresów IP dla wszystkich jednostek MCU i AI w sieci LAN, musisz skorzystać z własnych, niestandardowych domen FQDN.

Własne domeny FQDN z Let’s Encrypt i automatyzacją DNS

To podejście jest odpowiednie, jeśli masz wszystkie trzy maszyny 3CX w sieci LAN i żadna z nich nie jest bezpośrednio dostępna z publicznego internetu. Wymaga to ręcznych ustawień, które wykraczają poza standardową konfigurację 3CX. Na potrzeby tego przykładu przyjmijmy następujące domeny:

  • mypbx.example.com
  • mymcu.example.com
  • myai.example.com

W tym przypadku również należy spełnić konkretne wymagania:

1. Skrypt automatyzacji

W sieci LAN musi znajdować się maszyna ze skryptem automatyzacji, który:

  • Wykorzystuje mechanizm Let’s Encrypt DNS-01 challenge.
  • Uruchamia się cyklicznie, aby zapewnić odnowienie certyfikatów z odpowiednim wyprzedzeniem.
  • Komunikuje się z Let’s Encrypt, wysyłając żądanie odnowienia.
  • Komunikuje się z API Twojego dostawcy DNS, aby tworzyć rekordy niezbędne do weryfikacji Let’s Encrypt.
  • Zapisuje pobrane pliki certyfikatu (.pem) oraz klucza (.key) w odpowiednim folderze, na przykład:
/etc/letsencrypt/live/mymcu.example.com/fullchain.pem
/etc/letsencrypt/live/mymcu.example.com/privkey.pem

2. Skrypt aktualizacji certyfikatu

Następnie potrzebny będzie skrypt aktualizujący certyfikat, który:

  • Sprawdza dostępność nowych plików certyfikatów.
  • W przypadku ich znalezienia, kopiuje je do właściwych lokalizacji docelowych.
  • Usuwa pliki źródłowe, aby uniknąć niepotrzebnego kopiowania przy każdym uruchomieniu.

Poniżej znajduje się przykładowy skrypt dla maszyny mymcu.example.com, który możesz zapisać jako „/root/certupdate.sh” (analogicznie dla myai.example.com):

#!/bin/bash
cp /etc/letsencrypt/live/mymcu.example.com/fullchain.pem /opt/3cxwm/cert/server.crt
cp /etc/letsencrypt/live/mymcu.example.com/privkey.pem /opt/3cxwm/cert/server.key
chown www-data:www-data /opt/3cxwm/cert/server.*
chmod 600 /opt/3cxwm/cert/server.*

Nadaj skryptowi odpowiednie uprawnienia:

chmod +x /root/certupdate.sh

…i dodaj go do swojego harmonogramu crontab, aby uruchamiał się np. codziennie o 3:00 nad ranem.

Własna domena FQDN – ręczne odnawianie certyfikatu

Jeśli w Twoim przypadku możliwe jest jedynie ręczne odnawianie certyfikatów (np. Twój dostawca DNS nie oferuje API do automatyzacji lub korzystasz z certyfikatów typu wildcard), procedura wygląda niemal identycznie jak powyżej. Różnica polega na tym, że musisz samodzielnie wprowadzać zmiany, rezygnując z zalet automatyzacji.

Alternatywne urzędy certyfikacji (CA)

W przypadku korzystania z usług innych urzędów niż Let’s Encrypt, przygotowaliśmy ogólny przewodnik z poradami, jak wybrać odpowiedniego dostawcę – znajdziesz go tutaj.