różnica w równoważeniu obciążenia między DNS a IP - przekazywanie a przekierowywanie

9

Natknąłem się na sytuację, której nie rozumiem. Posiadamy zaporę Fortigate, która umożliwiła równoważenie obciążenia na dwóch serwerach WWW Apache. Nazwa DNS jest następnie mapowana na wirtualny adres IP modułu równoważenia obciążenia.

Zgodnie z oczekiwaniami podczas przeglądania nazwy DNS / adresu URL (np. Www.something.com) moduł równoważenia obciążenia wyświetla stronę z jednego z serwerów WWW Apache. Adres URL w przeglądarce pozostaje na stronie www.something.com . Z tego, co rozumiem, moduł równoważenia obciążenia w tym przypadku po prostu przesyła pakiety między przeglądarką a Apache, pozostając zawsze na dobrej drodze.

Jeśli jednak przejdę do adresu IP , na który mapowany jest DNS, moduł równoważenia obciążenia zwraca znaleziony HTTP 302, z nagłówkiem lokalizacji ustawionym na adres URL DNS jednego z Apache. Adres URL w przeglądarce zmienia się na DNS serwera zaplecza.

Dlaczego moduł równoważenia obciążenia przekierowuje po zapytaniu przez IP, ale poprawnie przekazuje w ścieżce po zapytaniu przez nazwę DNS.

Yusuf
źródło

Odpowiedzi:

10

Nie używałem Fortigate FW do równoważenia obciążenia, więc odpowiem na niektóre pytania bardziej ogólnie.

Po pierwsze, jeśli chodzi o twój problem, moduł równoważenia obciążenia działa dokładnie tak, jak powinien, i myślę, że twoje serwery mogą nie być poprawnie skonfigurowane, aby odpowiadać na żądanie na ich adres IP. Jeśli miałbyś to sprawdzić za równoważeniem obciążenia, możesz ustawić nazwę domeny w pliku hostów klienta lokalnego, za zaporą ogniową z serwerem i uzyskać do niej dostęp zarówno za pomocą nazwy domeny, jak i wewnętrznego adresu IP. Prawdopodobnie uzyskasz ten sam wynik, co teraz.

Domyślam się, że masz włączony wirtualny hosting (do obsługi wielu domen na jednym serwerze), a „domyślny” nie obsługuje tych samych stron co twoja domena. W obu przypadkach otrzymujesz stronę internetową z serwera. Jeśli potrzebujesz pomocy w konfigurowaniu serwera WWW, możesz spróbować ServerFault .

Po drugie, aby uzyskać więcej szczegółów. Moduł równoważenia obciążenia zwykle działa w warstwie L7 dla co najmniej klastrów HTTP i HTTPS. Oznacza to, że nie tylko patrzą na adres IP i przekazują go dalej, ani nie „przekierowują” strony.

Po otrzymaniu żądania analizują je i przekazują je do serwera po przetworzeniu. Jest wiele rzeczy, które mogą zrobić w tym momencie, takie jak przepisywanie nagłówków w obu kierunkach, potencjalne dodawanie plików cookie (w celu utrwalenia) do danych wracających do klienta, kończenie sesji SSL, dopasowywanie na podstawie adresu URL itp.

Polecam poświęcić trochę czasu na pełne przeczytanie dokumentów dostawcy, aby lepiej zrozumieć, jak działa równoważenie obciążenia (dzięki Fortigate możesz odczytać zarówno ich, jak i Coyote Point - kolejną firmę zajmującą się równoważeniem obciążenia, którą nabyła Fortigate). Zrozumienie tego, co robi, pomoże ci w takich przypadkach i pozwoli ci odblokować funkcje, o których istnieniu nie wiedziałeś.

YLearn
źródło
Problemem była konfiguracja na wewnętrznym serwerze Apache. Nowa nazwa DNS musiała zostać dodana jako Alias.
Yusuf
3

Po przeczytaniu opartego na hoście HTTP równoważenia obciążenia w dokumencie Fortigate równoważenia obciążenia widzę, jak można uzyskać nietypową konfigurację równoważenia obciążenia, która może skutkować tym, co opisujesz . Jednak bez części konfiguracji nie możemy być pewni, czy tak jest w Twoim przypadku.

Fortigate FortiOS pozwala na utworzenie wirtualnego serwera powiązanego z Real Server, z których każdy ma inną konfigurację nagłówka hosta . Jeśli jakiekolwiek żądania będą pasować do adresu VIP serwera wirtualnego, żądania z równoważeniem obciążenia trafią tylko do prawdziwych serwerów, które pasują do tego host header. Najważniejszą częścią, która ładnie wyjaśnia twoje objawy, jest to, że jeden z prawdziwych serwerów może pominąć nagłówek hosta, aby pasował do dowolnego nagłówka hosta.

Real Server bez nagłówka hosta mógł zostać skonfigurowany jako rodzaj „catch-all”, który wyląduje na stronie, która dokonuje przekierowania.

Korzystając z poniższego przykładu, tylko pierwszy i drugi serwer obsługują ruch zgodny z preferowaną nazwą DNS za pośrednictwem nagłówka hosta, ale trzeci serwer pobiera wszystko pasujące do wszystkich innych nagłówków hosta, w tym sam DNS VIP i wysyła do witryny, która może wykonać przekierowanie .

config firewall vip
 edytuj „http-host-ldb”
  ustaw typ równoważenia obciążenia serwera
  ustaw końcówkę 192.0.2.1
  ustaw extintf „lan”
  ustaw typ serwera http
  ustaw ldb-method http-host
  ustaw rozszerzenie 80
  config realservers
    edycja 1
      ustaw serwer HTTP „www.example.com”
      ustaw ip 192.168.2.1
      ustaw port 80
      Kolejny
    edycja 2
      ustaw serwer HTTP „www.example.com”
      ustaw ip 192.168.2.2
      ustaw port 80
      Kolejny
    edycja 3
      ustaw ip 192.168.2.3
      ustaw port 80
      Kolejny
    koniec
 koniec

Przypuszczam, że równoważenie obciążenia zapory ogniowej może samo przekierowywać, ale nie możemy tego stwierdzić przy podanych ograniczonych informacjach.

generalnetworkerror
źródło
W tej konfiguracji ustawia się dopasowanie oparte na nazwie. I o to chodzi. Jeśli pójdziesz do VIP według adresu, nie będzie wiedział, co z tym zrobić. (wówczas będą obowiązywać normalne zasady NAT)
Ricky Beam
Głównym powodem, dla którego nie wierzyłem, że jest to odpowiedź, jest to, że żaden FW / moduł równoważenia obciążenia, o którym wiem, nie zwróci 302 z lokalizacją ustawioną na nazwę hosta / domenę zasobu wewnętrznego (przynajmniej bez konkretnej konfiguracji więc, co nie brzmiało tak w przypadku pytania).
YLearn
@RickyBeam, tylko pierwsi na serwerach dokonują dopasowywania nazw hostów. Ostatni serwer byłby zgodny z adresem VIP jako host.
generalnetworkerror,
@YLearn, zgadzam się, że byłoby to dziwne; Mówiłem, że serwer, a nie LB, zrobiłby 302 i byłby skonfigurowany do tego. Nie znam też LB, który by to zrobił.
generalnetworkerror