Czasami potrzebujemy bezpiecznego połączenia z innym komputerem łącznie z dostępem do jego zasobów. Pod linuxem nie ma z tym problemów bo mamy połączenia poprzez ssh/scp natomiast połączenie np. dwóch maszyn działających pod kontrolą Windows może być bardziej problematyczne. Do połączenia użyjemy bramy działającej pod kontrolą CentOS-a i spróbujemy połączyć sie dwoma maszynami działającymi pod kontrolą Windows XP.
Zaczniemy od konfiguracji bramy/serwera który będzie nam szyfrował i przekazywał połączenie.
Na początku sprawdźmy czy mamy niezbędny soft:
# yum install openssl openssl-devel openvpn
Jeżeli czegoś z tego nie mamy to powinno nam sie zainstalować.
Następnie musimy wyszukać skryptu do generowania kluczy u mnie był:
/usr/share/doc/openvpn-2.0.9/easy-rsa
Potem aby zachować w miarę porządek na serwie kopiujemy oraz wykonujemy następujące komendy:
cp -R /usr/share/doc/openvpn-2.0.9/easy-rsa /etc/openvpn/
cd /etc/openvpn/easy-rsa
chmod 755 *
mkdir /etc/openvpn/keys
Kolejnym krokiem będzie edytowanie pliku /etc/openvpn/easy-rsa w którym musimy zmienić następujące linie:
export KEY_DIR=/etc/openvpn/keys
export KEY_COUNTRY=KG
export KEY_PROVINCE=NA
export KEY_CITY=BISHKEK
export KEY_ORG="OpenVPN-TEST"
export KEY_EMAIL="me@myhost.mydomain"
Następnie należy wykonać (wszystkie opcje oprócz commonName potwierdzamy Enterem):
. ./vars
./clean-all
./build-ca
Generujemy klucz serwera:
./build-key-server nazwa_serwera
Oraz klientów:
./build-key klient1
./build-key klient2
Na koniec:
./build-dh
Uzyskaliśmy teraz klucze klientów oraz serwera.Kolejnym krokiem będzie stworzenie plików konfiguracyjnych więc przechodzimy do katalogu /etc/openvpn w którym zapisujemy plik server.conf o zawartości:
port 1194
proto tcp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
server 192.168.2.0 255.255.255.0
client-to-client
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status server-tcp.log
verb 3
Pozostaje jeszcze stworzyć pliki logów oraz statusu.
touch /etc/openvpn/server-tcp.log
touch /etc/openvpn/ipp.txt
Noi oczywiście wpuścić port 1194 tcp do serwera.
Możemy teraz spokojnie uruchomić serwer:
/etc/init.d/openvpn start
Wynik ogladamy:
tail /var/log/messages
Oraz:
tail /etc/openvpn/server-tcp.log
Mamy serwer, następnym krokiem będzie podłączenie klientów. Na początek zgrajmy sobie klucze z serwera.
tar -zcf plik_z_kluczami.tar.gz /etc/openvpn/keys/ca.crt /etc/openvpn/keys/klient1.crt /etc/openvpn/keys/klient1.csr /etc/openvpn/keys/klient1.key
Oraz plik konfiguracyjny klient.ovpn o zawartości:
client
dev tun
proto tcp
#Tutaj wstaw adres IP serwera
remote Adres_IP_serwera 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert klient1.crt
key klient1.key
ns-cert-type server
######### Wstaw tutaj swoje serwery DNS-a
push "dhcp-option DNS 1.2.3.4"
push "dhcp-option DNS 1.2.3.4"
comp-lzo
verb 3
Pozostaje teraz ściągnięcie softu do połączenia. Jeżeli chodzi o systemy operacyjne z rodziny Windows to polecam oprogramowanie se strony http://openvpn.se/.
Po zainstalowaniu należy umieścić zawartość pliku plik_z_kluczami.tar.gz oraz plik klient.ovpn w katalogu C:\Program Files\OpenVPN\config\ i możemy spokojnie uruchamiać połączenie.
Aby przetestować czy i jak na to działa można uruchomić:
ping Ip_klient2
Wszystko….
Strony z których korzystałem: