Mac OS X 10.8 VPN Server: Omiń VPN dla ruchu w sieci LAN (kierowanie ruchu w sieci LAN do połączenia dodatkowego)

10

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).

Dan Robson
źródło
może ten inny post może być pomocny: superuser.com/questions/453766/…
Lorenzo Von Matterhorn

Odpowiedzi:

2

Cóż, daję temu szansę:

Nie jestem pewien, jak uzyskać tylko niewielki ruch do przejścia. Mogę rozwiązać Twój problem, ale zajęłoby to trochę zmiany konfiguracji. Zakładam, że Twój komputer Mac ma dwa interfejsy sieciowe, nazwijmy je eth0 i eth1 :-)

założymy, że eth0 jest podłączony do sieci służbowej i ma wewnętrzny (sieć służbową) adres 13.1.1.6, podsieć 255.0.0.0.

założymy również, że eth1 jest podłączony do Wi-Fi X i ma adres (sieć eth1 <---> WiFi X) 192.168.1.10, podsieć 255.0.0.0, aby uprościć sprawę.

Skonfigurowałem serwery VPN na BSD i Linux, ale nie na Macu, jednak koncepcja pozostanie taka sama, masz opcje, wymienię jeden:

1) Upewnij się, że tabela routingu na komputerze Mac ma następujący wpis:

$>sudo route add 13.0.0.0/8 eth0

Pozwoli to upewnić się, że ruch przychodzący przez interfejs WiFi X lub VPN, który jest przeznaczony dla sieci twojej firmy (sieć 13), tam dotrze. Bez tego komputer Mac (który zapewnia most) naprawdę nie ma sposobu, aby dowiedzieć się, jak kierować ruchem między dwoma interfejsami, i domyślnie spróbuje wysłać go z dowolnego domyślnego interfejsu, którym jest WiFi X.

Cofnąłbym to, co zrobiłeś z powyższą tabelą routingu VPN i spróbuję tego, jeśli nie ma (mam nadzieję) już tam.

Jeśli powyższe nie spowoduje tego, zaktualizuj w / w tabeli routingu i liście adresów IP serwera VPN lub zaktualizuj w / w jakiejkolwiek napotkanej poprawce. Mam nadzieję, że to wskaże ci właściwy kierunek.

MDMoore313
źródło