Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>network}} ====== OpenVPN ====== По умолчанию, когда клиент OpenVPN активен, только сетевой трафик к и от сайта OpenVPN-сервера идет через VPN. Например, обычный просмотр веб-страниц будет осуществляться через прямое подключение в обход VPN. * [[http://lithium.opennet.ru/articles/openvpn/openvpn-howto.html#redirect|Документация]] В некоторых случаях такое поведение может быть нежелательным -- у вас может возникнуть необходимость чтобы VPN-клиент туннелировал весь сетевой трафик через VPN, включая просмотр веб-страниц Интернета. Хотя этот тип VPN конфигурации приведет к потере производительности на клиенте, он дает администратору VPN более полный контроль над политиками безопасности когда клиент одновременно подключен и к Интернету и к VPN. * [[http://lithium.opennet.ru/articles/openvpn/openvpn-howto.html#redirect|Документация]] ===== Настройка клиента ===== * apt-get install openvpn * настроить конфигурацию * настроить имя конфигурации NAME в /etc/default/openvpn ==== Конфигурация ==== nano /etc/openvpn/client.conf <code> port 1195 proto udp dev tap remote xxx.xxx.xxx.xxx tls-client ca ca.crt #эти файлы получить у админа vpn-сервера cert clients.crt #эти файлы получить у админа vpn-сервера key clients.key #эти файлы получить у админа vpn-сервера ifconfig 10.3.0.54 255.255.255.0 # присвоенный ip для вашего сертификата route 10.3.0.54 255.255.255.255 10.3.0.1 # это думаю понятно route 192.168.25.0 255.255.255.0 10.3.0.1 # добавляем внутренние сети со стороны сервера (если нужны конечно) tun-mtu 1500 tun-mtu-extra 32 mssfix 1450 pull cipher DES-CBC comp-lzo </code> ===== Настройка сервера ===== * aptitude install openvpn * cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn * nano /etc/openvpn/easy-rsa/2.0/vars Зададим размер ключа (чем больше, тем лучше и тем медленнее будет работать, ну и не рекомендую ставить 4096 например, поту что build-dh потом будет выполняться несколько часов): export KEY_SIZE=1024 Зададим время, через которое понадобится обновить ключи: export KEY_EXPIRE=365 Зададим параметры генерации SSL сертификата: export KEY_COUNTRY="RU" export KEY_PROVINCE="SPB" export KEY_CITY="SaintPetersburg" export KEY_ORG="Home" export KEY_EMAIL="postmaster@example.com" Загрузим все переменные: # cd /etc/openvpn/easy-rsa/2.0/ # . ./vars Эта команда удаляет все сертификаты, которые были сгенерированы ранее (ну вдруг это не первая попытка): # . ./clean-all Создаём центр сертификации. Это очень важный файл и крайне рекомендуется сохранить получившиеся файлы ещё где-нибудь. С помощью центра сертификации производится подписывание генерируемых сертификатов и подключится с сертификатом от другого центра не получится, даже если у него будут одинаковые параметры генерации. <code> # . ./build-ca Generating a 1024 bit RSA private key ........++ .............................................................................................................................................................................................++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [RU]: State or Province Name (full name) [SPB]: Locality Name (eg, city) [SaintPetersburg]: Organization Name (eg, company) [Home]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [output-meta]:openvpn.local Name []:Nikita Menkovich Email Address [postmaster@example.com]: </code> Создаём сертификат сервера, с его помощью будет производится проверка, что сервер это тот именно сервер. <code> # . ./build-key-server server Generating a 1024 bit RSA private key .........................................++ .....++ writing new private key to 'server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [RU]: State or Province Name (full name) [SPB]: Locality Name (eg, city) [SaintPetersburg]: Organization Name (eg, company) [Home]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [server]:server.openvpn.local Name []:server.openvpn.local Email Address [postmaster@example.com]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'RU' stateOrProvinceName :PRINTABLE:'SPB' localityName :PRINTABLE:'SaintPetersburg' organizationName :PRINTABLE:'Home' commonName :PRINTABLE:'server.openvpn.local' name :PRINTABLE:'server.openvpn.local' emailAddress :IA5STRING:'postmaster@example.com' Certificate is to be certified until Aug 19 10:34:03 2013 GMT (365 days) Sign the certificate? [y/n]:y </code> Далее необходимо сгенерировать параметры Диффи-Хеллмана, это займёт очень много времени если у вас не 1024, а 4096 бит (у меня заняло около двух часов), сходите попейте чаю, можете даже на обед сходить: <code> # . ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .........+..........................................................................................+.............................................+.......................+....................+.....+..+.................++*++*++* </code> Сделаем конфигурационный файл: # zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf # vim /etc/openvpn/server.conf Раскомментируем эти строчки, a.b.c.d заменим на IP адрес, который висит на интерфейсе: ;local a.b.c.d ;push "redirect-gateway def1 bypass-dhcp" ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" DNS серверы можете указать свои. Опция redirect-gateway def1 указывает на то, что весь трафик после подключения должен идти через VPN. Должен получится такой файл: <code> # egrep -v '^;|^#|^$' /etc/openvpn/server.conf local a.b.c.d port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3 </code> Перезапустим openvpn подключение server (файл же мы назвали server.conf, так что можно легко делать несколько подключений). # invoke-rc.d openvpn restart server Теперь настроим перенаправление запросов из нашего тунеля в сеть: <code> # echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf # sysctl -p # iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT # iptables -A FORWARD -j REJECT # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE </code> Разрешим доступ по udp к порту 1194: <code> # iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT </code> Сохраняем их и настраиваем автозапуск: <code> # iptables-save > /etc/iptables.up.rules # cat /etc/network/if-up.d/iptables #!/bin/sh iptables-restore < /etc/iptables.up.rules # chmod u+x /etc/network/if-up.d/iptables </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal