1

Temat: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

OpenWRT staje się coraz bardziej popularny, podobnie jak korzystanie z połączeń VPN. Cezary przygotował świetny tutorial dotyczący konfiguracji OpenVPN https://eko.one.pl/?p=openwrt-openvpntun
Tutorial ten zakłada pewną podstawową znajomość korzystania z terminala i komend tekstowych. Z tego co widzę na forum, trafiają tu również osoby absolutnie początkujące. Z myślą o nich przygotowałem materiał uzupełniający - oparty na interfejsie graficznym i zrzutach ekranu.

KROK 1 - instalacja oprogramowania

Instalacja oprogramowania przebiega bardzo podobnie, niezależnie od tego czy router ma działać jako serwer, czy też jako klient OpenVPN.
Należy zainstalować następujące pakiety:
openvpn-openssl - główny pakiet odpowiadający za funkcjonalność serwera / klienta OpenVPN
luci-app-openvpn - interfejs graficzny LuCi do  obsługi OpenVPN
luci-i18n-openvpn-pl - tłumaczenie interfejsu na język polski
openvpn-easy-rsa - pakiet narzędzi do generowania certyfikatów (jeżeli  router będzie pracował w charakterze klienta, to pakiet nie jest potrzebny)

Instalacja pakietów pod OpenWRT / LuCi 19.07

1. Uruchamiasz router i podłączasz do niego komputer.
2. Na komputerze uruchamiasz przeglądarkę internetową
3. W pasku adresu wpisujesz adres routera, domyślnie jest to 192.168.1.1
4. Logujesz się do routera podając hasło administratora (domyślne hasło jest puste, podczas pierwszego logowania do routera system wymusza zmianę hasła).

https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-001.jpg


5. W menu głównym (czarny pasek na górze strony, na prawo od napisu „OpenWRT”) wybierasz System a następnie Software

https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-003.jpg


6. Wykonujesz aktualizację bazy pakietów – klikasz na przycisk Update lists...

https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-004.jpg


7. Czekasz na zakończenie aktualizacji, a następnie naciskasz przycisk Dismiss

https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-005.jpg


8. W okienku Filter wpisujesz openvpn
https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-006.jpg


9. Odnajdujesz na liście potrzebne pakiety i instalujesz je klikając na przycisk Install
https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-007.jpg


10. Jeżeli jakiś pakiet był już zainstalowany wcześniej, to w miejsce przycisku Install..  pojawi się nieaktywny (szary) przycisk Installed
https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-008.png




11. Dla przypomnienia, nazwy pakietów do zainstalowania to: openvpn-openssl, luci-app-openvpn, luci-i18n-openvpn-pl oraz (opcjonalnie - do tworzenia certyfikatów) openvpn-easy-rsa


12. Sprawdzenie czy wszystkie potrzebne pakiety zostały zainstalowane: w menu głównym wybierasz wybierasz System a następnie Software. Następnie klikasz na zakładkę Installed oraz wpisujesz openvpn w okienku Filterb. Jeżeli wszystko zainstalowało się poprawnie, to powinieneś zobaczyć coś takiego:

https://ds.cielinski.eu/komp/vpn1/zrzut-ekranu-009.jpg


Gratulacje!!! Masz już wszystkie pakiety potrzebne do skonfigurowania OpenVPN.

KOMENTARZ
To samo można wykonać w trybie tekstowym, logując się do routera przez SSH / putty i wydając następujące polecenia:

opkg update
opkg install openvpn-openssl luci-app-openvpn luci-i18n-openvpn-pl openvpn-easy-rsa

2 (edytowany przez lukasc 2020-03-16 19:32:18)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

KROK 2 - wygenerowanie certyfikatów

Jednym z głównych założeń OpenVPN jest autoryzacja połączonych urządzeń za pomocą certyfikatów, czyli swojego rodzaju podpisu elektronicznego.
Jeżeli korzystamy z płatnego serwisu OpenVPN, to odpowiednie certyfikaty oraz plik konfiguracyjny otrzymamy od dostawcy usługi. Natomiast gdy uruchamiamy serwer OpenVPN, to sami dla siebie jesteśmy dostawcami i sami musimy sobie wygenerować potrzebne certyfikaty.

Jeżeli router, na którym uruchamiasz OpenVPN ma system oparty na Gargoyle, to tworzenie certyfikatów jest bardzo proste i sprowadza się do kilku kliknięć w interfejsie graficznym. Zakładam jednak, że jeżeli czytasz ten tekst to masz router z oprogramowaniem OpenWT / LuCi i musisz wygenerować potrzebne certyfikaty "ręcznie", to jest w trybie tekstowym.

Dla wszystkich, którzy czują się nieswojo w trybie tekstowym przygotowałem ten materiał, bogato ilustrowany zrzutami ekranu.  W gruncie rzeczy jest to jednak powtórzenie kroków opisanych przez Cezarego w jego obszernym tutorialu.

Uwaga !!!:  W OpenWRT 19.07 zastosowano nową wersję easy-rsa (wersja 3.x) Opisana tutaj procedura tworzenia certyfikatów różni się od tej, wymaganej dla easy-rsa w wersji 2.x

Tworzenie certyfikatów

1. Logujesz się do routera przez SSH / putty

2. Sprawdzasz, gdzie znajduje się pakiet openvpn-easy-rsa służący do tworzenia certyfikatów. W terminalu wydajesz polecenie:
opkg files openvpn-easy-rsa

https://ds.cielinski.eu/komp/vpn2/zaznaczenie001.jpg



3. Jak widać na obrazku poniżej, większość plików znajduje się w katalogu /etc/easy-rsa.

https://ds.cielinski.eu/komp/vpn2/zaznaczenie002.jpg



4. Musisz przenieść się do tego katalogu za pomocą polecenia:  cd /etc/easy-rsa
Następnie resetujesz ustawienia easy-rsa poleceniem easyrsa init-pki. Krok ten zwykle wykonuje się tylko raz – podczas pierwszego uruchomienia pakietu. Ponowne wykonanie tego polecenia spowoduje skasowanie bazy dotychczas wystawionych certyfikatów.



https://ds.cielinski.eu/komp/vpn2/zaznaczenie003.jpg



5. Program wyświetla ostrzeżenie o tym, że wszystkie dotychczas wygenerowane certyfikaty zostaną usunięte. Aby zatwierdzić piszesz yes

https://ds.cielinski.eu/komp/vpn2/zaznaczenie004.jpg



6. Program wyświetla informację, że nowo utworzone klucze będą zapisywane w katalogu /etc/easy-rsa/pki

https://ds.cielinski.eu/komp/vpn2/zaznaczenie005.jpg



7. Teraz musisz wygenerować plik Diffie-Hellman (z grubsza biorąc, jest to plik służacy do uzgadniania kluczy szyfrjących między serwerem a klientem). Domyślna długość klucza, tj. 2048 bitów była uznawana za bardzo dobrą kilka lat temu. Obecnie uznawana jest za wystarczającą, jednak w perspektywie kilku kolejnych lat trzeba będzie zwiększyć długość do 4096 bitów.
Plik tworzy się wydając polecenie easyrsa gen-dh

https://ds.cielinski.eu/komp/vpn2/zaznaczenie006.jpg



8. Teraz możesz iść na kawę. Tworzenie pliku może trwać od 20 minut do godziny. W tym czasie na ekranie wyświetlają się kropki, a czasami plusiki. To normalne. Gdyby program się zawiesił, to by ich nie wyświetlał.

https://ds.cielinski.eu/komp/vpn2/zaznaczenie007.jpg



9. Po wielu, wielu minutach . . .wyświetla się komunikat o utworzeniu pliku

https://ds.cielinski.eu/komp/vpn2/zaznaczenie008.jpg



10. Teraz generujesz certyfikat CA (to taki certyfikat główny)
Wydajesz polecenie easyrsa build-ca nopass

https://ds.cielinski.eu/komp/vpn2/zaznaczenie009.jpg



11. System zgłasza błąd "Can't load /etc/easy-rsa/pki/.rnd" ale rusza dalej. Według informacji z internetu błąd jest nieszkodliwy i zostanie naprawiony w kolejnych wydaniach easy-rsa.

https://ds.cielinski.eu/komp/vpn2/zaznaczenie010.jpg



12. Należy jeszcze wypełnić pole Common Name

https://ds.cielinski.eu/komp/vpn2/zaznaczenie011.jpg



13. Wpisałem sobie lukasz-ca ty możesz go nazwać jakc hcesz, np. moje-ca   

https://ds.cielinski.eu/komp/vpn2/zaznaczenie012.jpg



14. Gotowy certyfikat CA znajduje się w /etc/easy-rsa/pki/ca.crt

https://ds.cielinski.eu/komp/vpn2/zaznaczenie013.jpg



15. W kolejnym etapie należy utworzyć certyfikat dla serwera.
Wydajesz polecenie easyrsa build-server-full serwer nopass
Opcja nopass oznacza, że certyfikat nie będzie zabezpieczany dodatkowym hasłem

https://ds.cielinski.eu/komp/vpn2/zaznaczenie014.jpg



16. Komunikat o prawidłowym wygenerowaniu certyfikatu serwera.

https://ds.cielinski.eu/komp/vpn2/zaznaczenie015.jpg



17. Teraz pora wygenerować certyfikat dla klienta.
Wydajesz polecenie easyrsa build-client-full nazwa_klienta nopass
W załączonym przypadku nazwa klienta to po prostu client1
Opcja nopass oznacza, że certyfikat nie będzie zabezpieczany dodatkowym hasłem

https://ds.cielinski.eu/komp/vpn2/zaznaczenie016.jpg



18. Komunikat o prawidłowym wygenerowaniu certyfikatu klienta.
https://ds.cielinski.eu/komp/vpn2/zaznaczenie017.jpg



19. Kolejny klient będzie miał nazwę laptop. Brak opcji nopass sprawia, że certyfikat będzie zabezpieczony hasłem
https://ds.cielinski.eu/komp/vpn2/zaznaczenie018.jpg



20. System zapyta o hasło do certyfikatu.
https://ds.cielinski.eu/komp/vpn2/zaznaczenie019.jpg



21. Komunikat o prawidłowym wygenerowaniu certyfikatu klienta.
https://ds.cielinski.eu/komp/vpn2/zaznaczenie020.jpg



22. ANULOWANIE CERTYFIKATU
Jeżeli certyfikat zsotał wystawiony przez pomyłkę, lub utraciliśmy urządzenie (telefon, tablet) z wgranym certyfikatem, to taki certyfikat należy anulować.
Służy do tego polecenie easyrsa revoke nazwa_klienta.
W poniższym przykładzie anulujesz certyfikat klienta lukasz2
https://ds.cielinski.eu/komp/vpn2/zaznaczenie021.jpg



23. System poprosi o potwierdzenie anulowania certyfikatu. Potwierdź wpisując yes
https://ds.cielinski.eu/komp/vpn2/zaznaczenie022.jpg



24. Certyfikat został anulowany. Teraz trzeba jeszcze zaktualizować listę anulowanych certyfikatów, czyli Certificate Revocation List
https://ds.cielinski.eu/komp/vpn2/zaznaczenie023.jpg



25. W tym celu musisz wydać komendę easyrsa gen-crl
https://ds.cielinski.eu/komp/vpn2/zaznaczenie024.jpg



26. Lista anulowanych certyfikatów została zaktualizowana. Należy ją jeszcze przegrać do katalogu z plikami serwera OpenVPN - domyślnie jest to /etc/openvpn/
https://ds.cielinski.eu/komp/vpn2/zaznaczenie025.jpg

27. Polecenie skopiowania listy: cp /etc/easy-rsa/pki/crl.pem /etc/openvpn/crl.pem
https://ds.cielinski.eu/komp/vpn2/zaznaczenie026.jpg


To by było na tyle Dziękuję za przeczytanie i proszę o uwagi

3

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Ciąg dalszy tłumaczenia z UCI na LuCi, czyli z trybu tekstowego na GUI.

KROK 3 - dodanie interfejsu tun0 (vpn)

Zgodnie z poradnikiem konfiguracji OpenVPN https://eko.one.pl/?p=openwrt-openvpntun
Należy dodać nową sekcję dotyczącą konfiguracji sieci:

    # uci set network.vpn=interface
    # uci set network.vpn.ifname=tun0
    # uci set network.vpn.proto=none
    # uci commit

W trybie graficznym robi się to tak:

1. Logujesz się do routera podając hasło administratora.

2. W menu głównym (czarny pasek na górze strony, na prawo od napisu „OpenWRT”) wybierasz Network a następnie Interfaces

https://ds.cielinski.eu/komp/vpn3/zaznaczenie001.jpg



3. Wybierasz zakładkę Interfaces i klikasz na przycisk Add new interface..

https://ds.cielinski.eu/komp/vpn3/zaznaczenie002.jpg



4. w polu name wpisujeszvpn
https://ds.cielinski.eu/komp/vpn3/zaznaczenie003.jpg



5.
https://ds.cielinski.eu/komp/vpn3/zaznaczenie004.jpg


https://ds.cielinski.eu/komp/vpn3/zaznaczenie005.jpg


https://ds.cielinski.eu/komp/vpn3/zaznaczenie006.jpg

https://ds.cielinski.eu/komp/vpn3/zaznaczenie007.jpg

https://ds.cielinski.eu/komp/vpn3/zaznaczenie008.jpg

https://ds.cielinski.eu/komp/vpn3/zaznaczenie009.jpg

4 (edytowany przez smereka 2023-06-05 14:00:32)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Cezary może pomożesz...

Mam klienta vpn. Chciałbym aby po połączeniu z serverem klient wykonywał to co jest zawarte np. w /etc/script/up.sh. Samo up.sh działa prawidłowo jak odpalę z konsoli /etc/script/up.sh no to dzieje się to co ja chce (u mnie akurat odpala się przekaźnik) Znalazłem jakiś manual:

https://serverfault.com/questions/10752 … ocal-files

i tu:

https://askubuntu.com/questions/28733/h … ccessfully


Więc dodałem to do konfigu klienta:

script-security 3
up /etc/script/up.sh


lub tak:

script-security 2
up /etc/script/up.sh

Po odpalaniu z konsoli klienta vpn i poprawnym połączeniu nie wykonuje się ten skrypt. Co robię źle? Czy w ogóle to możliwe. Bawiłeś się tym może?

5

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

ls -al /etc/script/up.sh, zobacz czy ma prawa wykonywania przez innych. Jeżeli tak to dodaj sobie logger "tu bylem" zaraz za nagłówkiem skryptu i zobacz w logach czy się uruchamia.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Uprawnienia nadałem 777 więc wszystko. Jak ten loger dodać. Jakieś polecenie trzeba dopisać?

7

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

logger "tu bylem"

smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Ok dodałem i co teraz zrobić?

9

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

podłącz sie do openvpn  i zobacz w logach czy znajdzies "tu bylem".

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Podłączyłem i nie ma tego w logach

11

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

A nie pluje się w logach o sam fakt próby wykonania skryptu? Powinno działać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Nic nie ma w logach odnośnie tych skryptów po prostu nawiązuje połączenie i tyle

13

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Nie mam pod ręką żadnego openvpn żeby to sprawdzić. Wrócę do domu to coś zmajstruję i zobaczę.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Eh, zaćmienie umysłowe widać mam. Jeżeli to openvpn z openwrt to on już sam z siebie wykonuje skrypty i opcja up "jest zajęta". Swój skrypt masz umieścić w hotplugu np. w /etc/hotplug.d/openvpn/01-user i on to wykona.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez smereka 2023-06-05 20:42:05)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Ciekawe czy w rutOs też tak jest bo tam z tym kombinuje - jutro potestuję. Ale te 01-user to jak mam zredefiniować kiedy ma reagować na up a kiedy na down czy jak to ze sobą powiązać?

16

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Do /etc/openvpn.user możesz także dodać, tak będzie chyba najprościej smile

A jak było w rutos to już nie pamiętam. Trzeba by było tam zajrzeć.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

W sumie mam zdalny dostęp do niego zaraz sprawdzę. Jakby co poczekaj na linii big_smile to przetestujemy:)

18 (edytowany przez smereka 2023-06-05 20:52:04)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Nie ma na nim czegoś takiego jak /etc/openvpn.user za to jest ipsec.user ale wiadomo nie o to chodzi. Kurde szukałem dzisiaj na forach i nic nie wydłubałem

19 (edytowany przez Cezary 2023-06-05 20:57:52)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Konkretnie - na której wersji openwrt to robisz? Jak jest 01-user to z niego jest wołane /etc/openvpn.user, więc sobie zrób plik po prostu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

FW version: RUT9XX_R_00.06.08.6 - to jest chaos calmer ale nie wiem jak sprawdzić która wersja. Jest jakaś komenda?

21

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

cat /etc/openwrt_version

Teltonika mogła zrobić coś po swojemu lub w ogóle zmienić skrypty - więc zobacz co tam jest lub zamień sobie 01-user na swój.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

22

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

cat /etc/openwrt_version
cat: can't open '/etc/openwrt_version': No such file or directory

23

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Poszukaj w samym /etc - coś pewnie zostawili.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24 (edytowany przez smereka 2023-06-13 10:10:35)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Przemaglowałem te skrypty na wt3020 na OpenWrt 18.06-SNAPSHOT r7911-f65330d27d / LuCI openwrt-18.06 branch (git-19.320.62919-7a3f0dd)  up i down działają od strzała od razu. Więc teltonika ma spieprzony vpn. Ale teraz jeśli już to działa nawet na oficjalnym openwrt to może pomożesz Cezary jak zrobić, żeby działało to prawidłowo. Otóż faktycznie jak dam te up to mi coś tam się dzieje i jak potem robię /etc/init.d/openvpn stop to też fajnie np. przekaźnik używając jakiejś płytki z pakietem crelay 1 off działa i wyłącza. Ale teraz ja chcę aby załączanie czy wyłączenie przekaźnika dokładnie odzwierciedlało stan faktyczny połączenia openvpn na cliencie. Teraz jest tak, że jak odłączę od routera neta np. po prostu odepnę przewód to niestety ani down ani route-pre-down nie wykonują się. Pomimo, że jest na kliencie vpn inactive to skrypt nie wykonuje się. Masz może jakiś pomysł?


AKTUALIZACJA:

Ok poradziłem. Trzeba dodać opcję do konfiguracji:

up-restart

i śmiga. Po około 2 minutach jak sprawdza połączenie z serverem vpn to wyknuję się w openvpn restart i wówczas odpala skrypt z opcji down

25 (edytowany przez smereka 2023-08-11 11:13:25)

Odp: Konfiguracja OpenVPN / OpenWRT 19.07 / LuCi nie tylko dla orłów

Zainstalowane openvpn-easy-rsa    3.0.8-4

Jak generuję certyfikaty mają one datę ważności 825 dni. Czy i jak mogę to zmienić na swoją datę/liczbe dni?

Próbowałem edytować /etc/easy-rsa/openssl-easyrsa.cnf oraz /etc/easy-rsa/safessl-easyrsa.cnf

Nic nie daje wstawienie tam swojej wartości albo trzeba wiedzieć gdzie wstawić. Cezary coś podpowiesz?