Konfiguracja Split-Horizon DNS na CentOS/AlmaLinux
Ten poradnik przeprowadzi Cię przez proces konfiguracji Split-Horizon DNS przy użyciu BIND na systemach CentOS lub AlmaLinux. Split-Horizon DNS pozwala serwerowi DNS zwracać różne rekordy w zależności od źródła zapytania (sieć wewnętrzna vs zewnętrzna).
1. Wymagania wstępne
- CentOS, AlmaLinux lub RedHat z dostępem root lub sudo
- Zainstalowany BIND (
bind
ibind-utils
)
2. Instalacja BIND
sudo dnf install bind bind-utils -y
3. Przygotowanie plików stref
Utworzenie katalogu stref:
sudo mkdir -p /etc/named/zones
Plik strefy wewnętrznej
Utwórz plik /etc/named/zones/internal.example.com.zone
:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025011501 ; Numer seryjny
3600 ; Odświeżanie
1800 ; Ponawianie
1209600 ; Wygaśnięcie
86400 ) ; Minimalny TTL
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.1
www IN A 192.168.1.2
mail IN A 192.168.1.3
Plik strefy zewnętrznej
Utwórz plik /etc/named/zones/external.example.com.zone
:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025011501 ; Numer seryjny
3600 ; Odświeżanie
1800 ; Ponawianie
1209600 ; Wygaśnięcie
86400 ) ; Minimalny TTL
@ IN NS ns1.example.com.
ns1 IN A 203.0.113.1
www IN A 203.0.113.2
mail IN A 203.0.113.3
4. Konfiguracja BIND
Edytuj plik /etc/named.conf
aby zdefiniować widoki dla zapytań wewnętrznych i zewnętrznych.
Widok wewnętrzny
view "internal" {
match-clients { 192.168.1.0/24; localhost; }; // Sieć wewnętrzna
zone "example.com" {
type master;
file "/etc/named/zones/internal.example.com.zone";
};
};
Widok zewnętrzny
view "external" {
match-clients { any; }; // Wszystkie pozostałe źródła
zone "example.com" {
type master;
file "/etc/named/zones/external.example.com.zone";
};
};
5. Walidacja konfiguracji
Sprawdź plik konfiguracyjny:
sudo named-checkconf
Sprawdź pliki stref:
sudo named-checkzone example.com /etc/named/zones/internal.example.com.zone
sudo named-checkzone example.com /etc/named/zones/external.example.com.zone
6. Restart BIND
Włącz i zrestartuj usługę BIND:
sudo systemctl enable named
sudo systemctl restart named
Sprawdź status:
sudo systemctl status named
7. Konfiguracja firewalla
Zezwól na ruch DNS przez firewall:
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
8. Testowanie
Test sieci wewnętrznej
Uruchom to polecenie z maszyny w sieci wewnętrznej:
dig @localhost www.example.com
Oczekiwany wynik: IP z internal.example.com.zone
(np. 192.168.1.2
)
Test sieci zewnętrznej
Uruchom to polecenie z maszyny zewnętrznej:
dig @<PUBLICZNE_IP_SERWERA_BIND> www.example.com
Oczekiwany wynik: IP z external.example.com.zone
(np. 203.0.113.2
)
9. Opcjonalnie: Włączenie logowania
Dodaj konfigurację logowania
Edytuj /etc/named.conf
aby dodać logowanie:
logging {
channel query_log {
file "/var/log/named_queries.log";
severity dynamic;
};
category queries { query_log; };
};
Utwórz plik logów
sudo touch /var/log/named_queries.log
sudo chmod 640 /var/log/named_queries.log
sudo chown named:named /var/log/named_queries.log
Zrestartuj BIND
sudo systemctl restart named
Serwer Split-Horizon DNS jest teraz skonfigurowany i gotowy do użycia. W przypadku problemów, sprawdź dokładnie pliki konfiguracyjne i logi w celu rozwiązania problemów.
Porady dotyczące rozwiązywania problemów
- Sprawdź status usługi BIND używając
systemctl status named
- Przejrzyj logi systemowe:
journalctl -u named
- Upewnij się, że porty są otwarte:
netstat -tulpn | grep named
- Sprawdź uprawnienia do plików konfiguracyjnych