Mam nieco dziwną konfigurację serwera VPN z systemem OS X Mountain Lion. Zasadniczo jest wykorzystywany jako pomost do ominięcia zapory ogniowej mojej firmy do naszego połączenia ekstranetowego - pewne rzeczy, które musi zrobić nasz zespół, wymagają nieograniczonego dostępu na zewnątrz, a zmiana zasad IT w celu umożliwienia ruchu przez główną zaporę ogniową nie jest opcją.
Połączenie ekstranetowe jest zapewniane przez router Wireless-N (nazwijmy to Wi-Fi X). Mój serwer Mac Mini jest skonfigurowany tak, aby połączenie z tym routerem było podstawowym połączeniem, a tym samym nieograniczony dostęp do Internetu za pośrednictwem routera. Połączenia z tym urządzeniem w bezpośredniej podsieci są możliwe przez port LAN, ale poza podsiecią rzeczy są mniej niezawodne.
Byłem w stanie skonfigurować serwer VPN, aby zapewniał adresy IP klientom w zakresie 192.168.11.150-192.168.11.200, używając zarówno PPTP, jak i L2TP, i jestem w stanie połączyć się z ekstranetem przez VPN przy użyciu standardowego Mac OS X VPN klient w Preferencjach systemowych, jednak nie jest zaskoczeniem, że adres lokalny (nazwijmy go wewnętrzna.firma.com) nic nie zwraca.
Próbowałem ominąć ograniczenia serwera VPN, konfigurując Trasy w ustawieniach VPN. Nasza firma używa 13.xxx dla całego ruchu wewnętrznego, zamiast 10.xxx, więc tabela routingu wyglądała mniej więcej tak:
IP Address ---------- Subnet Mask ---------- Configuration
0.0.0.0 248.0.0.0 Private
8.0.0.0 252.0.0.0 Private
12.0.0.0 255.0.0.0 Private
13.0.0.0 255.0.0.0 Public
14.0.0.0 254.0.0.0 Private
16.0.0.0 240.0.0.0 Private
32.0.0.0 224.0.0.0 Private
64.0.0.0 192.0.0.0 Private
128.0.0.0 128.0.0.0 Private
Miałem wrażenie, że jeśli nic tu nie wprowadzono, cały ruch był kierowany przez VPN. Po wprowadzeniu czegoś tylko ruch specjalnie oznaczony do przejścia przez VPN przechodzi przez VPN, a cały pozostały ruch zależy od klienta, aby uzyskać dostęp za pomocą własnego domyślnego połączenia. Właśnie dlatego musiałem specjalnie oznaczyć każdą podsieć oprócz 13.xxx jako prywatną.
Podejrzewam, że skoro nie mogę połączyć się z serwerem VPN spoza lokalnej podsieci, nie nawiązuje on połączenia z głównym serwerem DNS, a zatem nie można nawiązać połączenia z większą siecią. Wydaje mi się, że wprowadzenie nazw hostów, takich jak wewnętrzna.firma.com, nie jest przenoszone z powrotem do klienta w celu rozwiązania, ponieważ serwer nie ma pojęcia, że adres IP należy do zakresu publicznego, ponieważ podejrzewam (prawdopodobnie ping powinien go przetestować, ale nie mam do niej dostępu teraz), że nie może połączyć się z serwerem DNS, aby dowiedzieć się czegoś o tej nazwie hosta.
Wydaje mi się, że wszystkie moje opcje rozwiązania tego wszystkiego sprowadzają się do tego samego rodzaju rozwiązania:
Dowiedz się, jak połączyć się z DNS za pomocą drugiego połączenia na serwerze. Myślę, że jeśli jestem w stanie zrobić [coś], aby mój serwer rozpoznał, że powinien również sprawdzić moją bramę lokalną (powiedzmy IP serwera == 13.100.100.50 i IP bramy == 13.100.100.1). Stamtąd adres IP bramy może mi powiedzieć, żebym szukał serwera DNS 13.1.1.1 i przekazywał mi informacje o mojej sieci wewnętrznej. Jestem bardzo zdezorientowany tą ścieżką - naprawdę nie jestem pewien, czy w ogóle mam sens.
Myślałem o próbie zrobienia tego po stronie klienta, ale to też nie ma sensu, ponieważ wydłużyłoby to czas każdej konfiguracji po stronie klienta. Co więcej, wydaje się bardziej logiczne rozwiązanie go na serwerze - mógłbym całkowicie pozbyć się mojej tabeli routingu lub ją zachować - myślę, że jedyną różnicą byłoby to, że wewnętrzny ruch przechodzi również przez serwer - prawdopodobnie niepotrzebne obciążenie dla to.
Czy jest tam jakaś pomoc? A może jestem nad głową? Przekazywanie proxy lub transparentne proxy jest dla mnie również opcją, chociaż nie mam pojęcia, jak skonfigurować jedno z nich. (Wiem, Google jest moim przyjacielem).