Konfiguracja VPN (OpenVPN)
- siwy
- sty, 29, 2018
- Debian, Linux
- No Comments
Źródła z których korzystałem:
1. Własne centrum certyfikacji
I. Instalacja i organizacja CA:
sudo aptitude install openvpn
sudo cp -a /usr/share/easy-rsa/ /etc/CA
II. Edycja pliku /etc/CA/vars:
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="PL"
export KEY_PROVINCE="Pomorskie"
export KEY_CITY="Gdansk"
export KEY_ORG="bujakiewiczpawel@gmail.com"
export KEY_EMAIL="bujakiewiczpawel@gmail.com"
export KEY_OU="Centrum Certyfikacji"
III. Tworzenie CA:
cd /etc/CA
sudo source ./vars
sudo ./build-ca
sudo ./build-dh
sudo openvpn --genkey --secret ta.key
Jeśli skryptom brakuję -x do wykonanie, trzeba dodać.
Zawartość katalogu /etc/CA/keys/:
ca.crt – certyfikat naszego CA (chmod 644)
ca.key – plik z kluczem prywatnym naszego CA (chmod 600)
dh2048.pem – klucz algorytmu Diffie-Hellman (chmod 600)
W katalogu głównym /etc/CA/:
ta.key – dzięki temu komputer, który nie posiada pliku ta.key nie jest w stanie nawet spróbować nawiązać połączenia (chmod 600)
IV. Utworzenie certyfikatu i klucza serwera OpenVPN:
sudo ./ build-key-server vpn.bujakiewiczpawel.pl
Hasło tutaj pozostawiamy puste.
Wynikiem polecenia będą pliki vpn.bujakiewiczpawel.pl.key i vpn.bujakiewiczpawel.pl.crt
V. Utworzenie certyfikatu i klucza klienta OpenVPN:
sudo ./build-key-pass siwy
Tutaj wpisujemy hasło.
2. Konfiguracja klienta
I. Przygotowanie paczki dla klienta (Windows)
Potrzebne pliki wcześnie wygenerowane:
– ca.crt
– siwy.crt
– siwy.key
– ta.key
– vpn.bujakiewiczpawel.pl.crt
– oraz nowy plik openvpn.ovpn, który zawiera:
# Nazwa naszego klucza i certyfikatu
cert siwy.crt
key siwy.key
remote vpn.bujakiewiczpawel.pl 1194 # Adres IP i port docelowy
client
fragment 1000
dev tun
proto udp
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
ns-cert-type server # Upewniamy sie ze laczymy sie z serwerem
tls-auth ta.key 1
tls-version-min 1.2
cipher AES-256-CBC
verb 3
II. Sprawdzanie połączenia z serwerem
Testowanie pingu w CMD:
ping -t vpn.bujakiewiczpawel.pl
Jeśli brakuję połączenia trzeba dokonać zmian w DNS lub zmienić konfiguracje żeby działała po IP serwera.
4. Dostęp do sieci lokalnej z przeniesieniem całego ruchu przez VPN
I Konfiguracja serwera
Na serwerze tworzymy plik /etc/openvpn/openvpn.conf o treści:
port 1194 # Port na którym nasluchujemy
proto udp
dev tun # Rodzaj tunelu
mssfix 1000 # Wartosci dobrane eksperymentalnie
fragment 1000 # Wartosci dobrane eksperymentalnie
keepalive 10 120 # Czestotliwosc pakietow keepalive
ca /etc/CA/keys/ca.crt
cert /etc/CA/keys/vpn.bujakiewiczpawel.pl.crt
key /etc/CA/keys/vpn.bujakiewiczpawel.pl.key
dh /etc/CA/keys/dh2048.pem
tls-auth /etc/CA/ta.key 0
tls-version-min 1.2
cipher AES-256-CBC
server 192.168.1.0 255.255.255.0 # Adresy IP klientow vpn
ifconfig-pool-persist ipp.txt
push "route 0.0.0.0 0.0.0.0" # przekierowanie całego ruchu klienta
push "redirect-gateway" # przekierowanie całego ruchu klienta
client-config-dir /etc/openvpn/konta_vpn # Katalog ustawien klientow
ccd-exclusive # Dopuszczamy tylko ZNANYCH klientow
II. Testowanie konfiguracji serwera:
sudo openvpn /etc/openvpn/openvpn.conf
Jeśli coś jest nie tak, dokonywać zmian zgodnie z podpowiedziami wyniku komendy.
Serwer openvpn nie musi być włączony żeby połączyć się z nim.
III. Dodanie NATu
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.3
192.168.1.0/24 – IP przydzielone dla klientów VPN
192.168.0.3 – IP serwera VPN
Backup iptables i wgrywanie polecam tak jak w tym artykule Automatically loading iptables rules on Debian/Ubuntu.
5. Instalacja i konfiguracja klienta VPN (Windows)
I. Pobranie klienta: openvpn-install-2.4.4-I601.exe
II. Konfiguracja klienta:
Po zainstalowaniu aplikacji w katalogu C:\Program Files\OpenVPN\ umieszczamy wszystkie pliku wymienione w punkcie 2.1.
W trayu klikamy PPM na nową ikonę i wybieramy połącz.
Podajemy hasło i połączenie gotowe.
Można sprawdzić jakie teraz mamy IP zewnętrzne.