Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

abills:docs:nas:openvpn:ru:openvpn [2009/01/22 12:16]
asmodeus
abills:docs:nas:openvpn:ru:openvpn [2015/12/05 17:50]
Строка 1: Строка 1:
-=====OpenVPN===== 
-**Особая благодарность Ck-NoSFeRaTU** 
  
-====Установка==== 
-Пример настройки в среде FreeBSD. 
- 
-1. Ставим openvpn из портов:​ 
-  # cd /​usr/​ports/​security/​openvpn 
-  # make clean install 
- 
-2. [[http://​www.nongnu.org/​radiusplugin/​index.html| Radiusplugin for OpenVPN]]\\ 
- ​Забираем последнюю версию радиус плагина для openvpn с cvs и собираем его(последний выложенный релиз на сайте глючит) 
-  # cd /tmp 
-  # cvs -z3 -d:​pserver:​anonymous@cvs.savannah.nongnu.org:/​sources/​radiusplugin co radiusplugin 
-  # cd radiusplugin 
-  # g++ -Wall -I/​usr/​local/​include -L/​usr/​local/​lib -shared -o radiusplugin.so \  
-  AccountingProcess.cpp Exception.cpp PluginContext.cpp UserAuth.cpp AcctScheduler.cpp \ 
-  IpcSocket.cpp radiusplugin.cpp User.cpp AuthenticationProcess.cpp main.cpp UserAcct.cpp \ 
-  UserPlugin.cpp Config.cpp RadiusClass/​RadiusAttribute.cpp RadiusClass/​RadiusPacket.cpp \ 
-  RadiusClass/​RadiusConfig.cpp RadiusClass/​RadiusServer.cpp \ 
-  RadiusClass/​RadiusVendorSpecificAttribute.cpp -lgcrypt -lgpg-error -lstdc++ -lm 
- 
-3. Создаем папку с конфигами,​ копируем туда радиус-плагин,​ его конфиг 
-  # mkdir /​usr/​local/​etc/​openvpn 
-  # cp radiusplugin.so /​usr/​local/​etc/​openvpn/​ 
-  # cp radiusplugin.cnf /​usr/​local/​etc/​openvpn/​ 
- 
-Создаем сертификаты (Читаем команды для openssl [[http://​openvpn.net/​index.php/​documentation/​manuals/​openvpn-20x-manpage.html|тут]]) 
- 
-4. Файл **/​usr/​local/​etc/​openvpn/​server.conf** 
- 
-  dev tap8 
-  port 1194 
-  mode server 
-  tls-server 
-  server 10.1.100.0 255.255.255.0 10.1.100.1 
-  management 127.0.0.1 7505 
-  ca /​usr/​local/​etc/​openvpn/​keys/​server/​ca.crt 
-  cert /​usr/​local/​etc/​openvpn/​keys/​server/​server.crt 
-  key /​usr/​local/​etc/​openvpn/​keys/​server/​server.key 
-  dh /​usr/​local/​etc/​openvpn/​keys/​server/​dh1024.pem 
-  tls-auth /​usr/​local/​etc/​openvpn/​keys/​server/​ta.key 
-  keepalive 10 60 
-  client-connect /​usr/​local/​abills/​libexec/​openvpn-up 
-  client-disconnect /​usr/​local/​abills/​libexec/​openvpn-down 
-  ifconfig-pool-persist /​usr/​local/​etc/​openvpn/​keys/​server/​ip.txt 1300000 
-  plugin /​usr/​local/​etc/​openvpn/​radiusplugin.so /​usr/​local/​etc/​openvpn/​radiusplugin.cnf 
-  username-as-common-name 
-  comp-lzo 
-  push "​redirect-gateway def1" 
-  push "route 0.0.0.0 0.0.0.0"​ 
-  push "​dhcp-option DNS 10.1.100.1"​ 
-  log-append /​var/​log/​openvpn-server.log 
- 
-5. Файл **/​usr/​local/​etc/​openvpn/​radiusplugin.cnf** 
- 
-  NAS-Identifier=openvpn 
-  Service-Type=2 
-  Framed-Protocol=1 
-  NAS-Port-Type=5 
-  NAS-IP-Address=127.0.0.1 
-  OpenVPNConfig=/​usr/​local/​etc/​openvpn/​server.conf 
-  #​subnet=255.255.255.0 
-  server 
-  { 
-  acctport=1813 
-  authport=1812 
-  name=127.0.0.1 
-  retry=1 
-  wait=1 
-  sharedsecret=наш_секретный_пароль_от_радиуса 
-  } 
- 
-6. Файл **/​usr/​local/​abills/​libexec/​openvpn-up** 
- 
-  #!/bin/bash 
-  ​ 
-  /​usr/​local/​abills/​libexec/​linkupdown openvpn up $dev inet $ifconfig_local ​ $ifconfig_pool_remote_ip $common_name >& /dev/null 
-  ​ 
-  **/​usr/​local/​abills/​libexec/​openvpn-down**\\ 
-  ​ 
-  #!/bin/bash 
-  ​ 
-  /​usr/​local/​abills/​libexec/​linkupdown openvpn down $dev inet $ifconfig_local $ifconfig_pool_remote_ip $common_name >& /dev/null 
- 
-7. Заводим ещё один nas с NAS-Identifier=тому что мы указывали в radiusplugin.cnf,​ тип Other nas server. В radius-параметры не забываем Acct-Interim-Interval=300. 
- 
-8. /​usr/​local/​sbin/​openvpn --daemon --config /​usr/​local/​etc/​openvpn/​server.conf 
- 
-Теперь про клиентов (Мастдай):​ 
- 
-9. Openvpn/​config/​example.ovpn 
- 
-  nobind 
-  remote ип_нашего_сервера 
-  port 1194 
-  client 
-  dev tap 
-  proto udp 
-  auth-user-pass authinfo 
-  tls-auth ta.key 
-  pull 
-  tls-client 
-  reneg-sec 1209600 
-  ca tmp-ca.crt 
-  cert client.crt 
-  key client.key 
-  comp-lzo 
-  ​ 
-В Openvpn/​config/​authinfo две строчки:​ 
- 
-логин \\ 
-пароль \\ 
- 
-====Примечания==== 
-**Примечание по клиентскому openvpn:​**\\ 
-С какой-то версии openvpn`а заблокирована возможность хранения в текстовом файле логина и пароля пользователя,​ я не хотел напрягать пользователей каждый раз вводить его вручную,​ поэтому собрал собственный инсталятор openvpn для клиентов. В него входят уже разблокированные бинарники openvpn, драйвера,​ openvpn-gui,​ набор нужных сертификатов и конфигов,​ а также форма, где просит указать логин и пароль,​ т.е. клиенту нужно только вписать свой логин/​пароль прямо в формочку в инсталяторе,​ а остальное всё настроит он уже сам. Если кому нужно, то поделюсь скриптами для nsis`а. 
- 
-**Примечание по radiusplugin:​**\\ 
-Обработку Framed-IP-Address завести не удалось. Автор пишет следующее:​ 
-  * OpenBSD(BSD):​ 
-  - RADIUS attributes FramedIP and FramedRoutes mandatory 
-  - RADIUS attribute FramedIP is ignored 
- ​Надо бы связаться с автором и спросить будет ли чинить FramedIP в бсд или нет... 
- 
-Поэтому пока как костыль,​ если нужно использование статики,​ юзаем ifconfig-pool-persist в конфиге openvpn, к примеру ifconfig-pool-persist /​usr/​local/​etc/​openvpn/​keys/​server/​ip.txt 1300000.\\ 
-И в этот ip.txt прописываем вручную/​скриптами статические ипшники,​ в таком формате:​ 
-логин,​ип\\ 
-логин2,​ип2\\