Przedstawiona konfiguracja routera pfSense została przedstawiona na wersji 2.2.6 (i386)
Konfiguracja klienta OpenVPN na routerzez pfSense podzielona jest na 5 kategorii:
1. Import certyfikatu CA VPNonline
2. Konfiguracja uwierzytelnienia za pomocą login i hasło
3. Konfiguracja klienta OpenVPN
5. Przepuszczenie wybranych hostów przez tunel VPN
1. Import certyfikatu CA VPNonline
Aby dodać nowy certyfikat do konfiguracji routera przechodzimy do zakładki "System" (1) i następnie "Cert Manager" (2)
Klikamy zakładkę "CAs" (3) dodajemy nowy certyfikat (4)
Certyfikat CA dostępny jest w każdym pliku konfiguracyjnym VPNonline. Pliki możemy pobrać z działu: Downloads
Otwieramy dowolny plik konfiguracyjny .ovpn w dowolnym edytorze i kopiujemy certyfikat CA lub kopiujemy poniższy kod:
-----BEGIN CERTIFICATE-----
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM
MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D
ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU
cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3
WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg
Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw
IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH
UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM
TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU
BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM
kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x
AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV
HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y
sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL
I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8
J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY
VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
-----END CERTIFICATE-----
Nadajemy certyfikatowi dowolną nazwę np. "CA VPNonline" (5) i wklejamy skopiowany certyfikat w pole "Certificate data" (6), zapisujemy zmiany "Save" (7).
Certyfikat został dodany (8)
2. Konfiguracja uwierzytelnienia za pomocą login i hasło
Przechodzimy do zakładki "Diagnostics" (1) i następnie "Edit File" (2)
Klient OpenVPN będzie autoryzował się z pliku tekstowego w ,którym umieścimy nasz login i hasło.
W tym przykładzie plik będzie znajdował się w katalogu "/conf" i nazywał się: "vpnonlineuser.conf".
Klikamy na przycisk "Browse (3)" i wybieramy katalog "/conf" (4)
Następnie w polu: "Save / Load from path:" wpisujemy ścieżkę: "/cf/conf/vpnonlineuser.conf" (5)
klikamy "Save" (6) i odświeżamy widok przyciskiem "Browse" (7)
W katalogu "/conf" został utworzony plik "vpnonlineuser.conf" (8), który teraz będziemy edytować.
Klikamy dwa razy na plik "vpnonlineuser.conf" i po otwarciu wpisujemy:
(9) nazwę użytkownika VPNonline w pierwszej linijce
(10) hasło VPNonline w drugiej linijce
Zapisujemy zmiany klikając "Save" (11) i odświeżamy widok za pomocą przycisku "Browse" (12)
3. Konfiguracja klienta OpenVPN
Klikamy w menu "VPN" (1) i następnie zakładkę "OpenVPN" (2)
Przechodzimy do zakładki "Client" (3) i dodajemy nową konfigurację klienta OpenVPN (4)
W konfiguracji klienta OpenVPN wybieramy następujące opcje:
(5) Server Mode - Peer to Peer (SSL/TLS)
(6) Protocol - TCP
(7) Device mode - TUN
(8) Server host or address - Nazwa serwera VPNonline
Listę dostępnych serwerów VPN znajdziesz w panelu klienta: www.portal.vpnonline.pl
(9) Server port - 993 lub 443 (w zależności od wyboru serwera VPN)
(10) Description - Dowolna nazwa np. VPNonline OpenVPN
(11) TLS Authentication - odznaczamy
(12) Peer Certificate Authority - wybieramy wcześniej dodany certyfikat "CA VPNonline"
(13) Client Certificate - webConfiguration default
(14) Advanced - wklejamy poniższe komendy:
verb 5;
tls-client;
script-security 2 system;
remote-cert-tls server;
auth-user-pass /conf/vpnonlineuser.conf;
redirect-gateway def1;
Po wprowadzeniu wszystkich wymaganych danych zapisujemy zmiany "Save" (15)
Nowa konfiguracja klienta OpenVPN została dodana (16)
Jeżeli wszystkie dane zostały poprawnie wprowadzone, klient OpenVPN powinien zestawić połączenie z naszym serwerem VPN
(zestawienie połączenia trwa około 10 sek)
Aby sprawdzić status połączenia klienta OpenVPN, w menu wybieramy "Status" (17) i zakładkę "OpenVPN" (18)
Jeżeli status połaczenia jest "UP" (19), OpenVPN client poprawnie połączył się do serwera VPN.
Jeżeli w polu status mamy informację "DOWN" lub "tls error" zatrzymaj i uruchom usługę OpenVPN (20)
Jeżeli błąd nadal występuje, sprawdź ustawienia klienta OpenVPN, wprowadzony login i hasło oraz poprawność certyfikatu "CA VPNonline"
Musimy jeszcze skonfigurować routing w pfSense, żeby cały ruch był kierowana poprzez tunel VPN.
Tworzymy nowy interface i przypisujemy do niego "Network port" naszego połączenia VPN.
W menu wybieramy "Interfaces" (1) i zakładkę "assigne" (2)
Wybieramy zakładkę "Interface assignments" (3) i z rozwijanej listy "Available network ports:" wybieramy port z nazwą naszego połączenia VPN, (w moim przypadku był to "ovpnc1") "VPNonline OpenVPN" (4)
Dodajemy nowy interface (5)
Nowy interface zostaje dodany z automatycznie wybraną nazwą "OPT1" (6), klikamy na nazwę interface'u, żeby dostać się jego opcji konfiguracyjnych
Zaznaczamy "Enable Interface" (7) i nadajemy inteface'owi dowolną nazwę np. "VPNonline" (8)
Zapisujemy ustawienia "Save" (9) i akceptujemy wprowadzone zmiany do konfiguracji pfSense (10)
Następnie, z menu wybieramy "System" (11) i zakładkę "Routing" (12)
Wybieramy zakładkę "Gateways" (13) i tworzymy nową bramę (gateway) (14), przez którą będzie kierowany ruch VPN
Wypełniamy poniższe pola:
(15) Interface - wybieramy wcześniej utworzony interface "VPNONLINE"
(16) Name - wpisujemy dowolną nazwę np. "VPNonline Gateway"
(17) Description - wpisujemy dowolny opis np. Interface VPNonline Gateway"
Po wprowadzeniu wszystkich danych zapisujemy konfigurację "Save" (18)
Akceptujemy wprowadzone zmiany w konfiguracji pfSense (19)
Pora na ustawienie routingu dla połączenia VPN.
Z menu wybieramy "Firewall" (20) i zakładkę "Rules" (21)
Wybieramy zakładkę "LAN" (22)
Jeśli cały ruch ma przechodzić przez tunel, to zmieniamy domyślny gateway (23) na nasz powiązany z VPNonline edytujac konfigurację bramy (24)
Jeśli mamy jeżeli mamy konfigurowane vlany, to wybieramy odpowiedni vlan.
Edytujemy konfigurację reguły, która kieruje ruch do Internetu i w polu "Gateway" (25) wybieramy z rozwijanej listy wcześniej utworzoną bramę "VPNonline - Gateway"
Zapisujemy zmiany "Save" (26)
Po zapisaniu zmian nasza domyślna reguła ma zdefiniowaną nową bramę (27)
Akceptujemy wprowadzone zmiany w konfiguracji pfSense (28)
5. Przepuszczenie wybranych hostów przez tunel VPN
PfSense daje nam pod tym względem dużo możliwości, możemy wysłać przez VPN np. cały ruch z wybranych urządzeń w naszej sieci LAN lub ruch do określonych serwerów internetowych (policy based routing).
Przedstawiamy tylko przykład konfiguracji, ale możliwości jest wiele :)
Z menu wybieramy „Firewall” i zakładkę „Rules”, następnie zakładkę "LAN" (1)
Tworzymy nową reguła (2)
Nowa reguła ma za zadanie przepuścić TYLKO ruch z naszego telewizora (przykładowy adres naszego TV: 192.168.1.20) przez tunel VPN. Każdy inny ruch będzie domyślnie wychodził do Internetu przez nasze lokalne łacze.
W polu "Source" (3) z rozwijanej listy "Type" (4) wybieramy "Single host or alias"
Następnie w polu "Address" wpisujemy adres IP naszego telewizora (w przykładzie użyliśmy adresu IP: 192.168.1.20)
W polu "Description" wpisujemy dowolny opis np. TV via VPN
Zapisujemy zmiany "Save" (6)
W tym przykładzie konfiguracji, utworzyłem trzy wpisy dla trzech urządzeń:
(7) PC (192.168.1.50)
(8) Xbox (192.168.1.34)
(9) TV (192.168.1.20)
TYLKO w/w urządzenia będą wychodzić do Internetu przez tunel VPN.
Cały pozostały ruch będzie wychodził do Internetu przez lokalne łącze.
Akceptujemy zmiany wprowadzone do konfiguracji pfSense (10)
UWAGA !!! W/w reguły muszą znaleść się powyżej domyślnej reguły, która kieruje ruch do Internetu przez domyślna bramę