Próbuję używać serwera Google Compute Engine jako serwera VPN dla całego mojego ruchu (mieszkam w Rosji, mamy tutaj pewne problemy z cenzurą).
Istnieje mini-poradnik na temat VPN na GCE , ale dotyczy sieci między 2 serwerami wewnątrz GCE, a nie z OpenVPN.
Zrobiłem wszystkie kroki z innego samouczka, dotyczącego konfiguracji VPN z OpenVPN na Debianie , mogę połączyć się z VPN z klienta, ale potem nie mogę otworzyć połączeń (nie mogę nawet pingować google). Na serwerze mogę pingować i pobierać wszystko jak zwykle.
Mam VPN na Linode z tą samą konfiguracją i działa dobrze. Problem dotyczy reguł routingu sieciowego lub zapory sieciowej GCE.
Próbowałem wielu wariantów, ale nic nie działa. Proszę spojrzeć na ustawienia i powiedzieć, co powinienem zmienić.
// usunięto wiersze konfiguracji, ponieważ problem został rozwiązany //
Odpowiedzi:
Przede wszystkim dziękuję @Shivox za odpowiedź .
A oto krótkie instrukcje:
sudo su
apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
https://instance_ip:9700
pritunl
jako nazwy użytkownika i hasłaUżywam Viscosity dla OS X i OpenVPN Connect dla iOS jako klientów. W opcji Lepkość włącz opcję „Wyślij cały ruch przez połączenie VPN” na karcie „Sieć”.
źródło
Możesz rozwiązać problem niemożności przeglądania sieci przez VPN, mimo że możesz pingować, traceroute ... jednym z dwóch poniższych sposobów:
Po pierwsze, możesz użyć protokołu TCP zamiast UDP, zmieniając „proto udp” na „proto tcp” zarówno w plikach conf klienta, jak i serwera.
Po drugie, możesz użyć urządzenia tap zamiast tun, zmieniając „dev tun” na „dev tap” w plikach conf klienta i serwera.
Nie jestem pewien, na czym polega problem, wydaje się, że jest to problem od końca Google.
źródło
Pamiętaj, że Google VPC upuszcza pakiety, które mają
source_ip
inne niż wewnętrzny adres IP maszyny wirtualnej mającej zewnętrzny adres IP.Ten dokument https://cloud.google.com/compute/docs/vpc/advanced-vpc stwierdza:
Więc jeśli twoja openVPN po prostu przesyła pakiety z innej sieci, wówczas pakiety do publicznego wewnętrznego zostaną odrzucone, ponieważ
source_ip
nie są zgodne z wewnętrznym IP istniejącej maszyny wirtualnej. Z tego powodu musisz NAT przesłać pakiety wychodzące z sieci lokalnej, np. W węźle VPN.„Pritunl” wspomniany w odpowiedzi OZ_ działa, ponieważ automatycznie konfiguruje NAT.
źródło
To nie jest tak naprawdę odpowiedź, ale strona nie pozwoliła mi dodać go jako komentarza do twojego pytania.
Niemniej jednak mam prawie taką samą konfigurację, jak opisana powyżej (nie skonfigurowałem dnsmaq na serwerze trudnym)
Niestety VPN nie działa zgodnie z oczekiwaniami. Mogę rozwiązać adres, wysłać polecenie ping do niektórych hostów internetowych, a nawet dokonać pełnego śledzenia podczas połączenia z VPN. Jednak po otwarciu przeglądarki i przejściu do witryny połączenie jest naprawdę wolne. Nie wiem, co może mieć wpływ na połączenie, ale to naprawdę dziwny problem.
Może ktoś z Google może pomóc nam wiedzieć, co się dzieje.
PS 1. Jak sugerowały wcześniej inne osoby, czy możesz sprawdzić, czy przekazywanie adresów IP jest włączone? Dla mnie jedynym sposobem na prawidłowe przywrócenie wartości net.ipv4.ip_forward po ponownym uruchomieniu było użycie niestandardowej reguły na /etc/sysctl.d
Na przykład możesz dodać regułę za pomocą następującego polecenia:
PS 2. Jeśli przekazywanie działa dla Ciebie, czy możesz przetestować trasę śledzenia do hosta zewnętrznego, gdy jest podłączony do sieci VPN ?. Dane wyjściowe, które otrzymałem, gdy to robię, są nieco dziwne (dlaczego istnieje wiele przeskoków w tym samym adresie IP ????):
PS 3. Jedyne, co wydaje się działać poprawnie, to VPN korzysta z zewnętrznego adresu IP mojego hosta w celu uzyskania dostępu do Internetu
źródło
Edytuj
/etc/sysctl.conf
przez odkomentowanie#net.ipv4.ip_forward=1
To powinno pozwolić OpenVPN na kierowanie ruchem.
źródło
Musisz włączyć przekazywanie IP dla instancji maszyny wirtualnej w chmurze Google, w przeciwnym razie pakiety nie dotrą do maszyny wirtualnej. Uwaga: jest to oddzielne od
net.ipv4.ip_forward = 1
tego, które można ustawić na maszynie wirtualnej.Przekazywanie IP można ustawić tylko raz przed utworzeniem maszyny wirtualnej i nie można go później modyfikować. Aby włączyć to dla nowej maszyny wirtualnej, kliknij
Management, security, disks, networking, sole tenancy
:Następnie w
Networking
zakładce kliknijNetwork Interface
i ustaw Przekazywanie IP naON
:źródło
Musisz dodać regułę, która zezwala na ruch dla samego OpenVPN:
źródło
O sieci.
1) Włącz cały ruch z podsieci OpenVPN (np. 10.8.0.0/24) w konsoli
2) Zdecydowanie zalecam dodanie Masquerade do swojej sieci
3) Nie zapomnij włączyć routingu pakietów w jądrze
raz
b) na zawsze w /etc/sysctl.conf:
źródło