Jak skonfigurować PPTP VPN na własnym serwerze Ubuntu?


16

Zakładając, że mam wirtualny prywatny serwer od kogoś takiego jak Linode , z systemem Ubuntu, w jaki sposób mogę łatwo skonfigurować PPTP VPN, aby klienci Ubuntu mogli się z nim połączyć?

Domyślnie Ubuntu oferuje połączenie z tymi sieciami PPTP. Chcę to skonfigurować w taki sposób, aby bardzo łatwo było się z nim połączyć (tj. Bez instalowania żadnych pakietów na kliencie).

Odpowiedzi:


28

Absolutna minimalna konfiguracja serwera

Poniżej znajdują się absolutnie minimalne instrukcje, których potrzebujesz, aby uzyskać podstawowy serwer PPTP VPN działający pod Ubuntu. Klienci będą wtedy mogli połączyć się z serwerem VPN i przekierować swój ruch internetowy, aby przechodził przez serwer do Internetu. Jak zawsze, zapoznaj się z pełną dokumentacją aby zrozumieć, co robi wszystko.

Najpierw zainstaluj wymagane oprogramowanie:

sudo apt-get install pptpd

Po drugie, włącz ip_forwardw jądrze dla IPv4, odkomentowując powiązaną linię w /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

Po trzecie, włącz NAT (jeśli jeszcze nie jest włączony), aby użytkownicy prywatnej sieci VPN mogli skierować swoje pakiety do Internetu:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Uwaga: ten przewodnik zakłada, że ​​na serwerze nie ma skonfigurowanej zapory ogniowej. Jeśli masz na serwerze zaporę ogniową, taką jak UFW , zajrzyj do odpowiedniej dokumentacji .

Po czwarte, dla każdego użytkownika VPN utwórz konto w pliku / etc / ppp / chap-secrets . Zastąp $USERrzeczywistą nazwą użytkownika, którego chcesz używać dla tego użytkownika VPN.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Wreszcie jesteś gotowy do ...

Skonfiguruj klienta

W aplecie Network Manager wybierz Połączenia VPNKonfiguruj VPN , a następnie kliknij Dodaj . Na następnym ekranie wybierz PPTP dla typu VPN, a następnie kliknij Utwórz .

wprowadź opis zdjęcia tutaj

W tym oknie wprowadź nazwę hosta lub adres IP swojego serwera wraz z nazwą użytkownika i kluczem dodanym do pliku / etc / ppp / chap-secrets na serwerze.

Teraz kliknij Zaawansowane .

wprowadź opis zdjęcia tutaj

W tym oknie włącz opcję „Użyj szyfrowania punkt-punkt (MPPE)” i wybierz zabezpieczenia 128-bitowe . Wyłącz korzystanie z uwierzytelniania MSCHAP (pozostaw włączone MSCHAPv2 ).

Na koniec kliknij OK, a następnie Zapisz, aby zamknąć poprzednie okno.

Możesz teraz przetestować połączenie VPN, przechodząc do apletu Menedżer sieci → Połączenia VPN i wybierając właśnie utworzone połączenie. Upewnij się, że pojawi się komunikat informujący, że połączenie VPN powiodło się, a następnie przejdź do witryny sprawdzającej adres IP aby sprawdzić, czy Twój adres IP jest teraz wyświetlany jako adres IP serwera.

Jeśli pojawi się komunikat, że połączenie VPN z serwerem nie powiodło się: najpierw sprawdź, czy poprawnie wprowadziłeś ustawienia klienta; po drugie, sprawdź, czy klient ma połączenie sieciowe z portem TCP 1723 na serwerze; na koniec sprawdź plik dziennika / var / log / messages na serwerze w celu uzyskania dalszych wskazówek. Jeśli połączenie VPN się powiedzie, ale później nie możesz przeglądać stron internetowych od klienta, zapoznaj się z tym niezwykle pomocnym przewodnikiem diagnostycznym na stronie internetowej pptpd.

Notatki

Jeśli sieć lokalna, z którą jesteś podłączony, korzysta z podsieci 192.168.0.0/24 i 192.168.1.0/24, napotkasz problemy, ponieważ domyślnie używa tego serwer PPTP. Będziesz musiał skonfigurować PPTP, aby używał różnych podsieci w pptpd.conf .

Istnieje wiele innych zmian w konfiguracji, które możesz chcieć wprowadzić. Na przykład wszystkie wyszukiwania nazw domen będą nadal wysyłane za pomocą lokalnego serwera DNS zamiast przez serwer PPTP. Poświęć trochę czasu na przeczytanie pełnej dokumentacji, aby dowiedzieć się, jak zmienić to ustawienie i wiele innych.


4

Ten samouczek, który napisałem , poprowadzi cię przez. Powinno to pomóc uniknąć typowych błędów popełnianych przez osoby korzystające z VPS.

Najpierw zaloguj się do swojego panelu VPS i włącz TUN / TAP i PPP . Jeśli nie masz takiej opcji, skontaktuj się z usługodawcą internetowym, aby ją włączyć.

wprowadź opis zdjęcia tutaj

Najpierw zainstaluj ten pakiet:

sudo apt-get install pptpd

Ponieważ nie chcemy, aby nasza sieć VPN była publiczna, stworzymy użytkowników.
Używam VI, możesz używać NANO lub dowolnego edytora tekstu, który ci się podoba

vi /etc/ppp/chap-secrets

Format to

[username] [service] [password] [ip]

Przykład

john pptpd johnspassword *

* oznacza, że ​​dostęp ze wszystkich adresów IP jest dozwolony, podaj adres IP tylko wtedy, gdy masz adres statyczny.

Edycja ustawień PPTPD

vi /etc/pptpd.conf

Poszukaj ustawień localip i remoteip. Usuń #(znak komentarza) dla obu, aby te ustawienia zostały faktycznie rozpoznane. Zmień adres IP na adres IP swojego serwera. Jeśli nie znasz adresu IP swojego serwera, możesz zajrzeć do panelu sterowania VPS.

Remoteip to w zasadzie zakres adresów IP, do którego zostaną przypisani klienci (komputery podłączone do sieci VPN). Na przykład, jeśli chcesz mieć następujący zakres adresów IP: 192.168.120.231-235, twój serwer VPN będzie mógł przypisać 192.168.120.232, 192.168.120.233, 192.168.120.234 i 192.168.120.235 do klientów. Od Ciebie zależy, czego chcesz użyć w tym polu.

Osobiście wybieram te ustawienia:

localip 10.0.0.1
remoteip 10.0.0.100-200

Mogę uzyskać około 200 klientów podłączonych.

Dodaj serwery DNS do /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Możesz dodać to na końcu pliku lub znaleźć te wiersze, odkomentować je i zmienić adresy IP na żądany publiczny DNS.

Skonfiguruj przekazywanie

Ważne jest, aby włączyć przekazywanie IP na serwerze PPTP. Umożliwi to przekazywanie pakietów między publicznym adresem IP a prywatnym adresem IP skonfigurowanym za pomocą PPTP. Po prostu edytuj plik /etc/sysctl.conf i dodaj następujący wiersz, jeśli jeszcze tam nie istnieje:

net.ipv4.ip_forward = 1

Aby aktywować zmiany, uruchom sysctl -p

Utwórz regułę NAT dla iptables

Jest to ważna część, jeśli używasz VPS, prawdopodobnie nie użyjesz eth0, ale venet0, powinieneś sprawdzić, który interfejs posiadasz ifconfig

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

Jeśli chcesz, aby Twoi klienci PPTP ze sobą rozmawiali, dodaj następujące reguły iptables:

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 eth0 -j ACCEPT

Ponownie, jeśli używasz VPS, musisz zastąpić eth0 venet0.

Polecam bieganie

sudo iptables-save

Teraz twój serwer PPTP działa również jako router.

Możesz uruchomić to polecenie, aby usługa VPN była uruchamiana podczas rozruchu

systemctl enable pptpd

Zalecam zainstalowanie iptables-persistent, aby reguły pozostały nawet po ponownym uruchomieniu

sudo apt-get install -y iptables-persistent

Link nigdzie nie pójdzie, głównie nigdy nie wypuszczę tej nazwy domeny, po drugie to mój serwer hostingowy, po trzecie uwierz mi: DI naprawdę nie mogę po prostu skopiować samouczka tutaj, jest zbyt długi.
Luka

Obawiam się, że nie akceptujemy odpowiedzi tylko do linków na tej stronie. Tak więc odpowiedź ta prawdopodobnie wkrótce zostanie usunięta, jak widać, jest już w kolejce recenzji (link w moim poprzednim komentarzu).

Zanna wielkie dzięki! @Paranoid Panda, więc powinieneś usunąć odpowiedź nad moją, która ma 2 głosy, ponieważ zawiera link: P
Luka

1
Problem polegał na tym, że odpowiedź była tylko linkiem. Oznacza to, że gdyby link zszedł z jakiegokolwiek powodu (nawet jeśli link prawdopodobnie nigdy nie zostanie zerwany), odpowiedź stałaby się nieprawidłowa. Teraz, gdy odpowiedź stała się samodzielna (i używa linku jako odnośnika), odpowiedź jest w porządku, jak jest. Ta odpowiedź jest obecnie usuwana, chyba że zostanie dostosowana tak jak twój post.
Kaz Wolfe

1
Bardzo proszę, dziękuję za zrobienie tego samouczka. Następnym razem nie bój się zrobić postu o takiej długości; jest całkowicie do przyjęcia.
Zanna

3

Wykonaj ten samouczek: Serwer PPTP VPN z systemem Ubuntu

  1. W obszarze wyboru oprogramowania wybierz serwer OpenSSH - do zdalnego zarządzania maszyną - i ręczny wybór pakietu dla rzeczywistego pakietu pptpd. Jeśli chcesz więcej usług, na przykład jeśli chcesz używać komputera również jako serwera WWW, możesz oczywiście wybrać dodatkowe oprogramowanie. Ze względów bezpieczeństwa ogólnie radzę ludziom, aby uruchomili tylko jedną zewnętrzną usługę dostępną na maszynę, jeśli są skonfigurowane w środowisku krytycznym, ale tak naprawdę to zależy od ciebie.

  2. W ręcznym wyborze przejdź do niezainstalowanych pakietów> net, gdzie znajdziesz pptpd. Wybierz i naciśnij dwa razy „g”, aby zainstalować pakiet.

  3. Pozwól, aby instalacja się zakończyła i uruchom ponownie system.

  4. SSH na nowo skonfigurowanej maszynie i uruchom sudo aptitude update && sudo aptitude safe-upgradenajpierw, aby zaktualizować wszystkie pakiety. Uruchom ponownie, jeśli to konieczne.

  5. Otwórz plik pptpd.conf: sudo nano /etc/pptpd.confDostosuj ustawienia IP u dołu do swoich potrzeb. W obszarze lokalnego adresu IP wprowadź adres IP w sieci lokalnej serwera VPN (jeśli nie wiesz, wpisz „sudo ifconfig”, a wyświetli się interfejs sieciowy i przypisane adresy IP). W tym celu zalecam ustawienie statycznego adresu IP w / etc / network / interfaces lub w konfiguracji routera.

  6. Jeśli chcesz, możesz zmienić nazwę hosta w /etc/ppp/pptpd-options

  7. Określić nazwy użytkownika i hasła, które chcesz dać dostęp do sieci VPN: sudo nano /etc/ppp/chap-secrets. Jeśli wcześniej zmieniłeś nazwę hosta, upewnij się, że wpisałeś teraz tę samą nazwę hosta w obszarzeserver

    Przykład:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Podobnie jak w pptp, brak bezpieczeństwa pliku klucza zależy wyłącznie od hasła. Dlatego powinieneś wybrać długie (np. 32 znaki), losowe hasło. Możesz wygenerować takie hasło tutaj.

  8. Teraz musimy skonfigurować ip-maskaradę: sudo nano /etc/rc.local

    Dodaj następujące wiersze powyżej linii z napisem „exit 0”

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Opcjonalnie zalecam zabezpieczenie twojego serwera SSH przed atakami siłowymi:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    UPUSZCZAĆ

    (należy wstawić także powyżej „wyjścia 0”)

    Może być konieczna zmiana „eth 0” na inny interfejs, w zależności od tego, który interfejs jest skonfigurowany do łączenia się z Internetem na twoim komputerze.

  9. Na koniec odkomentuj tę linię w /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Restart

  11. Jeśli twój serwer VPN nie łączy się bezpośrednio z Internetem, może być konieczne przekierowanie portu 1723 TCP i GRE na IP LAN twojego serwera VPN. Instrukcje dotyczące konkretnego dostawcy można znaleźć w instrukcji obsługi routera lub na stronie portforward.com. Ponownie może być konieczne przypisanie statycznego adresu IP do /etc/network/interfaces.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.