Najprostszym sposobem na skonfigurowanie Ubuntu jako serwera VPN

68

Wiem, że w sieci jest wiele samouczków dotyczących konfigurowania klienta VPN i serwera.

Znalazłem taki, który jest prosty / krótki , interesuje mnie tylko część serwerowa.

W przypadku klienta będę korzystać z systemu OS X, więc wolę rozwiązanie, które używa L2TP over IPseclub PPTPponieważ podejrzewam, że Cisco IPsec by coś kosztował.

Nie chcę spędzać zbyt wielu godzin na konfigurowaniu. Wiesz, może ktoś już stworzył skrypt instalacyjny :)

Uwaga: używam mikro instancji EC2 z systemem Ubuntu 12.04.

sorin
źródło
3
Uwaga: CISCO IPSec można osiągnąć za pomocą StrongSwan i wielu konfiguracji, ale jest to trudne. PPTP nie jest już bezpieczny. ANd L2TP przez IPSec wymaga zarówno konfiguracji L2TP, jak i IPSec. Wybierz w wolnym czasie, chociaż moja odpowiedź wyjaśnia PPTP
Thomas Ward

Odpowiedzi:

24

AKTUALIZACJA : Począwszy od Sierra, macOS nie obsługuje już PPTP VPN. Ta odpowiedź nie dotyczy klientów MacOS Sierra i innych.

PPTP przez PoPToP jest łatwe

  1. apt-get install pptpd
  2. edytuj /etc/pptpd.confi ustaw opcję remoteip na zakres w sieci, który NIE jest obsługiwany przez serwer DHCP.
  3. edytuj /etc/ppp/chap-secretsi dodaj nazwę użytkownika i hasło

na przykład

vpnuser pptpd vpnpassword *

To wszystko, czego potrzeba, aby skonfigurować pptp. Teraz przetestuj go za pomocą klienta OS X.

Jay _silly_evarlast_ Wren
źródło
Zastanawiam się także, które wartości localip i remoteip są najbezpieczniejsze, biorąc pod uwagę, że zamierzam połączyć się z tym serwerem z dowolnej lokalizacji. Zdecydowanie domyślne wartości z 192.168.0.i 192.168.1.są prawdopodobnie jednym z najgorszych możliwe.
sorin
12 maja 13:28:06 zork pppd [9447]: Załadowano wtyczkę /usr/lib/pptpd/pptpd-logwtmp.so. 12 maja 13:28:06 zork pppd [9447]: pppd 2.4.5 rozpoczęty przez root, uid 0 12 maja 13:28:06 zork pppd [9447]: Korzystanie z interfejsu ppp0 12 maja 13:28:06 zork pppd [9447 ]: Connect: ppp0 <--> / dev / pts / 3 May 12 13:28:36 zork pppd [9447]: Hangup (SIGHUP) 12 maja 13:28:36 zork pppd [9447]: Hangout modemu 12 maja 13 : 28: 36 zork pppd [9447]: Połączenie zakończone. 12 maja 13:28:36 zork pppd [9447]: Wyjdź. To jeszcze nie działa! Twój przewodnik jest niekompletny (jeszcze);)
sorin
Tak, to nie działa.
bkerensa
1
nie działało dla mnie
Tyler Gillies,
@SorinSbarnea te Ips są prywatne i nigdy nie korzystają z Internetu, więc nie wiem, co rozumiesz przez „najbezpieczniejszy”. Będziesz miał szczęście, jeśli nie będą one miały takiego samego zakresu adresów IP jak kawiarnia lub miejsce pracy, z którego się łączysz. Spróbuj 192.168.42. * :)
Jay _silly_evarlast_ Wren
86

OSTRZEŻENIE: PPTP TO PROTOKÓŁ BEZPIECZEŃSTWA! Szyfrowanie zostało nie tylko naruszone, ale wysyła twoje uwierzytelnienie czystym tekstem i jest łatwe do przechwycenia. Oszacowano, że czas wymagany do brutalnej siły hasła jest w przybliżeniu równy czasowi wymaganemu do brutalnej siły pojedynczego klucza DES. Rozważ użycie OpenVPN lub innej architektury VPN zamiast PPTP!

Skorzystałem z tego przewodnika, aby skonfigurować serwer PPTP VPN na moim serwerze Ubuntu 12.04.


Podsumowując główne punkty łącza:

1: Zainstaluj pptpdi ufw. iptablesmoże być stosowany zamiast ufw, ale ze względu na łatwość ufwjest lepszy, jeśli nie wiesz iptables.

sudo apt-get install pptpd ufw

2: Otwórz potrzebne porty. Przewodnik sugeruje 22 (SSH) i 1723 dla VPN PPTP.

sudo ufw pozwalają 22
sudo ufw pozwalają 1723
sudo ufw enable

3: Edytuj /etc/ppp/pptpd-options. Otwórz plik w swoim ulubionym edytorze (mój nano, więc dla mnie jest to polecenie sudo nano /etc/ppp/pptpd-options) i skomentuj te wiersze, umieszczając #przed nimi, jeśli chcesz, aby działało to uniwersalnie na wszystkich systemach operacyjnych:

odmówić
odmówić
refuse-mschap

Możesz skomentować ten wiersz, jeśli chcesz wyłączyć szyfrowanie: require-mppe-128

4: Podczas edycji /etc/ppp/pptpd-optionsdodaj serwery DNS dla VPN. W tym przykładzie wykorzystano serwery OpenDNS:

ms-dns 208,67.222.222
ms-dns 208,67.220,220

5: Edytuj /etc/pptpd.conf. Otwórz plik w swoim ulubionym edytorze (mój nano, więc dla mnie to polecenie sudo nano /etc/pptpd.conf). Musisz dodać lokalne adresy IP VPN dla systemu, więc dodaj:

localip 10.99.99.99
remoteip 10.99.99.100-199

Jeśli twój system to VPS, użyj publicznego adresu IP dla „localip”. Jeśli nie ma go i jest w sieci lokalnej, użyj adresu IP sieci komputera. Użyj różnych adresów IP i zakresów, jeśli istnieją one w twojej podsieci! Jeśli nie znasz swojego publicznego adresu IP swojego VPS, znajdź go, uruchamiającdig +short myip.opendns.com @resolver1.opendns.com

6: Edytuj /etc/ppp/chap-secrets. Otwórz plik w swoim ulubionym edytorze (mój nano, więc dla mnie jest to polecenie sudo nano /etc/ppp/chap-secrets) i dodaj dane uwierzytelniające.
Format /etc/ppp/chap-secretsto:

[Nazwa użytkownika] [Usługa] [Hasło] [Dozwolony adres IP]

Przykładem może być: sampleuser pptpd samplepassword *

7: Uruchom ponownie pptpd. Uruchom to polecenie w terminalu:sudo /etc/init.d/pptpd restart

8: Edytuj /etc/sysctl.conf. Otwórz plik w swoim ulubionym edytorze (mój nano, więc dla mnie to polecenie sudo nano /etc/sysctl.conf). Usuń komentarz z następującego wiersza (usuwając #jego początek) w /etc/sysctl.conf: net.ipv4.ip_forward=1
Przeładuj konfigurację: sudo sysctl -p

9: Ten krok zakłada, że ​​masz ufw.
Edytuj /etc/default/ufwi zmień opcję DEFAULT_FORWARD_POLICYz DROPnaACCEPT

10: Ten krok zakłada, że ​​masz ufw.
Edytuj /etc/ufw/before.rulesi dodaj następujące na początku /etc/ufw/before.ruleslub tuż przed *filterregułami (zalecane):

# Reguły tabeli NAT
* nat

: AKCEPTACJA POSTROUTINGU [0: 0]
# Zezwól na przesyłanie dalej do eth0
-A POSTROUTOWANIE -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# Przetwarzaj reguły tabeli NAT
POPEŁNIĆ

Jeśli masz jądro w wersji 3.18 i nowsze (możesz to sprawdzić, uruchamiając uname -r), dodaj także następujące wiersze przed # drop INVALID packets ...wierszem:

-A ufw-before-input -p 47 -j ACCEPT

11: Uruchom ponownie zaporę, aby odświeżyć zestawy reguł i zastosować reguły dodane do /etc/ufw/*.rulesplików: sudo ufw disable && sudo ufw enable

Ostrzeżenie: jeśli masz inne porty, które potrzebujesz otworzyć, na przykład dla HTTPS, jeśli serwer obsługuje witrynę internetową, musisz osobno dodać te porty do dozwolonej listy za pomocąsudo ufw allow <PORT>

Thomas Ward
źródło
4
Co do cholery robię: D Mam to działa na serwerze, nie mam pojęcia, jak się z nim połączyć lol
Jamie Hutber
1
@Jamie Istnieje mnóstwo innych dokumentów i wpisów na Ask Ubuntu na temat łączenia się z VPN, nie wspominając już o dokumentacji wewnątrz Network Managera. To pytanie dotyczy tylko konfiguracji sieci VPN i po stronie serwera. NIE część łącząca się z nią.
Thomas Ward
: D super szybka reakcja: DI Myślę, że mogłem to wypracować, musiałem po prostu coś źle ustawić. To powiedział, że ufw jest aktywny i pozwala na większość portów. Będę grał z iptables, czy i tak mnie to
złapie
@Jamie Mogę dać ci polecenia iptables do użycia, kiedy wrócę do ciebie, wolę iptables od ufw.
Thomas Ward
1
iptables / netfilter jest używany z ufw, ufw jest po prostu ładniejszy dzięki obsłudze reguł i poleceń dla użytkowników końcowych.
Thomas Ward
19

PPTP VPN na Ubuntu 12.04 Przykład

Oto krótki samouczek, jak skonfigurować podstawowy serwer PPTP VPN w systemie Ubuntu 12.04.

Zainstaluj niezbędne pakiety

                          sudo apt-get install ppp pptpd

Skonfiguruj zakresy adresów IP PPTP na serwerze

                          sudo nano /etc/pptpd.conf

Dodaj na końcu następujące wiersze

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

Spowoduje to skonfigurowanie serwera PPTP do korzystania z adresu IP 10.89.64.1 przy dystrybucji zakresu adresów IP 10.89.64.100 do 10.89.64.150 wśród klientów PPTP. Zmień je tak, jak chcesz, o ile są to prywatne adresy IP i nie powodują konfliktu z adresami IP już używanymi przez serwer.

Skonfiguruj serwery DNS, które będą używane podczas łączenia się klientów z tym serwerem PPTP

                          sudo nano /etc/ppp/pptpd-options

Zmodyfikuj LUB Dodaj na końcu następujące wiersze

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

Utwórz użytkownika PPTP

                          sudo nano /etc/ppp/chap-secrets

Dodaj linię na dole, aby Twój plik wyglądał mniej więcej tak:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

Skonfiguruj NAT dla połączeń PPTP

Bez tego kroku będziesz mógł się połączyć, ale twoje połączenie nie będzie mogło załadować żadnego połączenia internetowego z tego serwera.

                          sudo nano /etc/rc.local

Dodaj następujący tekst w prawym dolnym rogu przed wierszem „exit 0”:

                          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Zakładając eth0, możesz użyć ifconfigdo sprawdzenia nazwy sieci.

Włącz forwading IPv4:

                          sudo nano /etc/sysctl.conf

Odkomentuj następujący wiersz:

                          net.ipv4.ip_forward=1

Następnie ponownie załaduj konfigurację:

                          sudo sysctl -p

Uruchom ponownie VPS i wszystko powinno działać płynnie z dowolnego klienta PPTP.


Konfiguracja po stronie klienta

W przypadku komputerów Mac upewnij się, że dodano połączenie PPTP VPN. Poza tym musisz tylko skonfigurować adres serwera, nazwę konta i hasło w ustawieniach uwierzytelniania. Tutaj nie ma bólu.

W przypadku systemu Linux NetworkManager dodaje połączenia VPN. Upewnij się, że dodałeś połączenie PPTP VPN. A konfiguracja, której używam, jest tutaj:

Jak debugować i naprawić połączenie klienta PPTP / VPN

wprowadź opis zdjęcia tutaj

I dla Windows

wprowadź opis zdjęcia tutaj

Qasim
źródło
Czy ta metoda działa również w wersji Ubuntu 12.04 innej niż serwer? Jakiego numeru IP klient musi użyć, aby połączyć się z tą siecią VPN?
Rasoul
Tak, dotyczy to również wersji innej niż serwer. Musisz użyć serwera ip na kliencie, aby połączyć się z VPN @Rasoul
Qasim
Nie działa, serwer Ubuntu 13.04. Klient utknął w poszukiwaniu DNS.
knutole
@knutole sprawdź, czy reguły IPTables są poprawnie kierowane. Upewnij się, że masz interfejs en0 i nie jest nazwany inaczej. Powinien zostać wyświetlony publiczny adres IP.
Nick Woodhams,
ok, więc w twoim przykładzie, który ip to ip serwera? 10.89.64.1? Czy w menedżerze sieci Ubuntu klient wymienia 10.89.64.1 jako Bramę?
dranxo
9

Pozostałe odpowiedzi w tym wątku były w moim przypadku tylko częściowymi odpowiedziami. Oto, co działało dla mnie na Ubuntu 12.04.3

sudo apt-get install pptpd

Dodaj następujące informacje do /etc/pptpd.conf (adres IP nie ma znaczenia, to tylko adresy IP interfejsu ppp0).

localip 10.0.0.1
remoteip 10.0.0.100-200

Dodaj serwery DNS do opcji / etc / ppp / pptpd

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Włącz przekazywanie adresów IP

sudo vim /etc/sysctl.conf

Odkomentuj tę linię

net.ipv4.ip_forward=1

Zapisz zmiany

sudo sysctl -p /etc/sysctl.conf

Edytuj / etc / ppp / chap-secrets, dodaj użytkownika VPN w tym formacie:

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

Uruchom ponownie PPTP

service pptpd restart

Uruchom ifconfigi znajdź domyślny interfejs, w moim przypadku był to br0 (zmieniłem go, aby umożliwić maszynom wirtualnym na mojej maszynie fizycznej udostępnianie interfejsu. Twój prawdopodobnie będzie en0 )

wprowadź opis zdjęcia tutaj

Utwórz kopię zapasową iptables

iptables-save > ~/iptables.save

Teraz spraw, aby zmiany w iptables korzystały z domyślnego interfejsu ujawnionego przez ifconfig.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface br0 -j ACCEPT

Aby zachować jego trwałość podczas ponownego uruchamiania systemu;

sudo apt-get install iptables-persistent

Dodaj VPN na komputerze klienckim (Mac)

Preferencje systemowe> Sieć> [+]> VPN

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Następnie wybierz Ustawienia uwierzytelniania> Hasło, a następnie wpisz swoje hasło tutaj

wprowadź opis zdjęcia tutaj

Nick Woodhams
źródło
7

Oto całkiem słodki projekt, który eliminuje ból związany z OpenVPN:

https://github.com/Nyr/openvpn-install

Po prostu uruchom go, a zainstaluje otwarty VPN i skonfiguruje go. Na koniec wyskoczy plik client.ovpn, którego można użyć do skonfigurowania klienta. Wydaje się, że działa całkiem dobrze.

HappyCoder86
źródło
Święta krowa. To po prostu działa. Zastanawiam się, dlaczego nie ma powszechnego uznania.
Marcus,