Код отслеживания Google Analytics.

Oct 16, 2014

VPN tunnel


Решаем задачу организации vpn туннеля. Для этого нам потребуется сделать настройки на сервере и на клиенте (далее по тексту под сервером, понимается серверный компьютер, под клиентом - клиентский компьютер). Я набросал несколько скриптов, которые можно найти на https://github.com/Beggy2000/openvpnscripts. Все это проверялось на Ubunutu 18.04


Установка на сервере:
  • Если была установлена предыдущая версия, то имеет смысл сделать полную очистку, предварительно сохранив настройки (в основном, это /etc/openvpn).
    • Для сервера:
      cp /etc/openvpn/easy-rsa/vars ./backup/
      aptitude purge openvpn easy-rsa
      rm -rf /etc/openvpn
      rm /etc/network/if-up.d/iptable_openvpn
      sed -i "s|^[[:space:]]*net\.ipv4\.ip_forward=1|#net.ipv4.ip_forward=1|g" "/etc/sysctl.conf"
      sysctl -p
    • Для клиента:
      cp /etc/openvpn/easy-rsa/vars ./backup/
      aptitude purge openvpn easy-rsa openvpn-systemd-resolved
      rm -rf /etc/openvpn
  • sudo vim environment.sh - нужно отредактировать как минимум SERVER_IP, SERVER_NAME, а как максимум - все остальное, если есть желание.
  • sudo ./install.sh - установит все необходимые пакеты
  • sudo vim /etc/openvpn/easy-rsa/vars - это может быть не обязательно, но если хочется, то можно отредактировать значения. Не рекомендуется использовать пустые значения для country, provice и т.д.
  • sudo ./setupServer.sh - создаст конфигурационные файлы и ключи для сервера. Есть тонкость, состоящая в том, что на данный момент переменная KEY_CONFIG в vars расчитывается неверно. Если это так, то скрипт не станет работать и предложит отредактировать vars:
    #export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
    export KEY_CONFIG="${EASY_RSA}/openssl-1.0.0.cnf"
    т.е. жестко прописать KEY_CONFIG.
  • sudo systemctl start openvpn@server - запустит сервер с файлом конфигурации server.conf
  • sudo systemctl enable openvpn@server - будет запускать сервер с файлом конфигурации server.conf как системную службу, в том числе при рестарте
Создание или удаление конкретного клиента на сервере:
  • ./createClient.sh <client name> - регистрирует клиента с именем <client name> и создает набор конфигурационных  файлов для него. Файл(ы) размещаются в архиве с именем <client name>.tar.gz
или
  • ./revokeClient.sh <client name> - удаляет клиента с именем <client name>.
На клиенте
  • персональный компьютер с Ubuntu:
    • Перенесите на клиент архив с настройками и ключами(<client name>.tar.gz), который был получен с помощью createClient.sh(см. выше)
    • sudo aptitude install openvpn easy-rsa openvpn-systemd-resolved - установить софт на клиенте
    • sudo tar xzf <client name>.tar.gz -C /etc/openvpn/ - распаковать содержимое архива в /etc/openvpn/
    • sudo systemctl start openvpn@<configuration name> - запустить клиент с файлом конгурации <configuration name>.conf
    • sudo systemctl enable openvpn@<configuration name> - по аналогии с сервером(см. выше) - будет запускать клиента с файлом конгурации <configuration name>.conf как системную службу
  • Android устройство<непроверено!>:
      все последующие шаги можно, наверное, выполнить и на самом устройстве, но, по-моему, удобнее на "большом" компьютере, а после перенести результат.
     
    • Распакуйте архив с настройками и ключами(<client name>.tar.gz), полученный с помощью createClient.sh(см. выше), в какой-нибудь каталог и перейдите в него
    • mv "<client name>.conf" "<client name>.ovpn" - переименовать <client name>.conf в <client name>.ovpn
    • mv ./easy-rsa/keys/* ./ - перенести файлы с сертификатами из easy-rsa/keys в текущий каталог
    • sed -i "s|easy-rsa/keys/||g" <client name>.ovpn - исправить пути к файлам
    • Все пять полученных файлов нужно перенести на устройство
    • Запустить openvpn connect, в правом верхнем углу выбрать Import-Import Profile from SD card и выбрать <client name>.ovpn файл
Если теперь запустить браузер на клиенте и проверить ваш IP (например http://www.ipinfodb.com/my_ip_location.php), то он должен измениться на внешний IP сервера.

No comments: