SVN: PLD-doc/queue/ovpn.txt
qwiat
qwiat w pld-linux.org
Nie, 14 Sty 2007, 18:50:54 CET
Author: qwiat
Date: Sun Jan 14 18:50:54 2007
New Revision: 8163
Added:
PLD-doc/queue/ovpn.txt
Log:
- kolejny rodzial do queue
Added: PLD-doc/queue/ovpn.txt
==============================================================================
--- (empty file)
+++ PLD-doc/queue/ovpn.txt Sun Jan 14 18:50:54 2007
@@ -0,0 +1,135 @@
+W niniejszym opracowaniu krok po kroku pokażę jak stworzyć sieć VPN używając OpenVPN.
+
+najpierw instalujemy potrzebne rzeczy:
+
+poldek -i openvpn easy-rsa pam
+
+(pam instalujemy jeżeli chcemy robić autoryzację użytkowników za pomocą loginu/hasła. Jeśli wystarczą Nam certyfikaty to nie musimy)
+
+Pierwsze co robimy tgo generowanie certyfikatów dla serwera i opcjonalnie dla klientów (jeżeli chcemy autoryzację certyfikatami).
+przechodzimy do katalogu /etc/easy-rsa i wydajemy polecenia:
+
+/usr/share/easy-rsa/clean-all
+. ./vars
+/usr/share/easy-rsa/build-ca
+
+generujemy Diffie Hellman (dla zainteresowanych: http://www.rsasecurity.com/rsalabs/node.asp?id=2248)
+
+/usr/share/easy-rsa/build-dh
+
+a następnie odpowiadamy na kilka pytań. Aby skrócić czas możemy najpierw wyedytować plik /etc/easy-rsa/vars tak aby domyślne podpowiedzi przy
+generowaniu certyfikatu były tymi które nam będą odpowiadały. Ważne jest aby podać Common Name.
+Mamy już certfyikat centrum autoryzacyjnego którym będziemy podpisywać inne certyfikaty. teraz generujemy certyfikat i klucz serwera:
+
+/usr/share/easy-rsa/build-key-server serwer
+
+(zamiast serwer możemy podać dowolną nazwę)
+[ odpowiadamy dwa razy twierdząco (y) ]
+oraz certyfikaty dla klientów (tylko jeśli chcemy autoryzować certyfikatami):
+
+/usr/share/easy-rsa/build-key klient1
+/usr/share/easy-rsa/build-key klient2
+/usr/share/easy-rsa/build-key klient3
+
+jeśli zależy nam aby każdy miał swoje hasło do klucza to zamiast powyższego wydajemy polecenie: /usr/share/easy-rsa/build-key-pass
+Po pomyślnym wygenerowaniu certyfikatów przystępujemy do konfigurowania OpenVPN. W tym celu tworzymy plik /etc/openvpn/tunel.conf i wpisujemy tam:
+
+#numer IP na którym ma nasłuchiwać OpenVPN (nieobowiązkowy)
+local 1.2.3.4
+port 1194
+proto udp
+dev tun
+ca /etc/easy-rsa/keys/ca.crt
+cert /etc/easy-rsa/serwer.crt
+key /etc/easy-rsa/serwer.key # This file should be kept secret
+
+#trzy linijki poniżej są tylko dla tych co chcą autoryzować za pomocą pam
+plugin /usr/lib/openvpn/plugins/openvpn-auth-pam.so ovpn
+client-cert-not-required
+username-as-common-name
+dh certs/dh1024.pem
+# pula adresów używana przez vpn. można dobrać dowolne nieroutowalne 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
+# należy przy tym pamiętać żeby dobrać maksymalnie niestandardowe (po to aby były różne od nieroutowalnego IP
+# które dostanie klient np z publicznego AP
+server 10.8.0.0 255.255.255.0
+ifconfig-pool-persist ipp.txt
+push "redirect-gateway"
+
+#poniżej możemy wstawić dowolne opcje które będą ustawione u klienta za pomocą DHCP
+push "dhcp-option DNS 10.8.0.1"
+;push "dhcp-option WINS 10.8.0.1"
+
+# jeżeli autoryzujemy certyfikatami i nie chce Nam się generować dla każdego klienta osobno można odśrednikować
+# poniższą opcję (generalnie niezalecane jeśli nie masz 100% zaufania do klientów)
+;duplicate-cn
+keepalive 10 120
+# włączamy kompresję danych
+comp-lzo
+persist-key
+persist-tun
+status openvpn-status.log
+log openvpn.log
+log-append openvpn.log
+verb 3
+#eof
+
+po zapisaniu tego pliku robimy plik /etc/pam.d/ovpn i wpisujemy tam
+
+#%PAM-1.0
+auth required pam_unix.so
+auth required pam_shells.so
+account required pam_unix.so
+password required pam_unix.so md5 shadow use_authtok
+password required pam_make.so /var/db
+
+teraz w pliku /etc/sysconfig/openvpn zmieniamy TUNNELS="tunel" (nazwa pliku z konfiguracją bez .conf)
+
+serwer mamy gotowy
+plik konfiguracyjy klienta:
+
+client
+proto udp
+#adres naszego serwera
+remote 148.81.222.122 1194
+dev tun
+resolv-retry
+infinite
+nobind
+tun-mtu 1500
+tls-client
+#jeśli autoryzujemy przez pam to poniższa linijka jest potrzebna.jeśli nie to nie
+auth-user-pass
+# ścieżka do plik ca.crt (który klientowi przekazujemy). jeżeli klient jest windowsowy to ścieżka może wyglądać jak poniżej
+ca "c:\\Program Files\\OpenVPN\\config\\ca.crt"
+# poniżej dwie linijki tylko dla tych co autoryzują certyfikatami
+# oczywiście wygenerowane pliki klient1.crt i klient1.key przekazujemy bezpiecznym kanałem klientowi
+cert "c:\\Program Files\\OpenVPN\\config\\klient1.crt"
+key "c:\\Program Files\\OpenVPN\\config\\klient1.key"
+
+ping-restart 60
+ping-timer-rem
+persist-tun
+persist-key
+resolv-retry 86400
+ping 10
+comp-lzo
+verb 4
+; eof
+
+teraz możemy przetestować naszą konfigurację.
+odpalamy serwer: service openvpn start
+obdlokowujemy na firewallu port 1194 (jeśli potrzeba)
+i próbujemy się połączyć klientem (uwaga: przestanie działać internet na maszynie klienckiej - tylko połączenie z serwerem będzie możliwe. po
+rozłączeniu prawidłowym wszystko powinno wrócić do normy)
+po kilku chwilach z klienta wpisujemy ping 10.8.0.1 - powinno działać.
+jeśli nie działa mamy noc z głowy i przystępujemy do szukania odpowiedzi na pytanie "dlaczego?"
+zakładamy jednak że działa i chcemy teraz aby korzystać z zasobów internetu jako 1.2.3.4 (czyli przez vpn)
+to tylko dwie krótkie zmiany na serwerze:
+
+echo "1" >/proc/sys/net/ipv4/ip_forward
+iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
+
+zakładamy że eth0 jest interfejsem przez który serwer łączy się ze światem.
+wszystko fajnie działa i możemy iść spać
+ps. bardzo miły w użytkowaniu klient pod windows: http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe
+
Więcej informacji o liście dyskusyjnej pld-doc