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 + _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
