1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# меняем пароль пользователя passwd root # обновляем список пакетов и установим mc (дело вкуса, но я его ставлю) apt-get update apt-get install mc # установим openvpn и приступим к настройке apt-get install openvpn cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/ # редактируем переменные nano ./vars # меняем строки export KEY_SIZE=1024 # Длинна ключа export KEY_EXPIRE=3650 # Срок действия ключа в днях # описание сертификатов по-умолчанию export KEY_COUNTRY="RU" export KEY_PROVINCE="RU" export KEY_CITY="Moscow" export KEY_ORG="http://habrahabr.ru" export KEY_EMAIL="org@example.com" # сохраняем файл # инициализируем переменные и чистим папку keys и создаем сертификаты . ./vars . ./clean-all ./build-ca # корневой сертификат ./build-key-server server # сертификат сервера ./build-dh # ключ Диффи Хельман # если вы планируете использовать tls-auth, который позволит скрыть порт на котором сервер слушает vpn подключения, защитить от DoS атак и кое чего еще, то выполните еще и эту строку: openvpn --genkey --secret ./keys/ta.key # Включили tls-auth? Тогда не забудьте передать ta.key клиентам, его надо будет положить рядом с сертификатом пользователя. # перенесем полученные сертификаты в рабочую папку cp ./keys/ca.crt /etc/openvpn cp ./keys/server.crt /etc/openvpn cp ./keys/server.key /etc/openvpn cp ./keys/dh1024.pem /etc/openvpn # Для tls-auth, выполните и эту строку: cp ./keys/ta.key /etc/openvpn # создадим сертификаты пользователей, сколько вам нужно (вводить данные не обязательно, поля будут принимать значения переменных по-умолчанию, достаточно просто нажимать Enter. В конце будет предложено ввести пароль (Enter export password), он защитит ваш сертификат от импорта недоброжелателями, хорошенько его запомните) ./build-key-pkcs12 vpn.android ./build-key-pkcs12 vpn.windows ./build-key-pkcs12 vpn.debian ./build-key-pkcs12 vpn.ddwrt ./build-key-pkcs12 vpn.home # после этого в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ появятся ваши сертификаты vpn.android.*, vpn.windows.* и другие. # Если захотите создать сертификаты поздней, подключаетесь по SSH, и: # cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/ # . ./vars # ./build-key-pkcs12 vpn.newuser1 # ./build-key-pkcs12 vpn.newuser2 # настроим сервер zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf nano /etc/openvpn/server.conf # все настройки по-умолчанию нас устроят, меняем, раскомментируем: local IP_АДРЕС_ВАШЕГО_СЕРВЕРА push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" client-to-client # раскомментируйте, если хотите иметь доступ между клиентами внутри вашего VPN # Для включения tls-auth, необходимо добавить (без #) # tls-auth ta.key 0 # Если хотите спрятать сервер от китайских ботов и ФСБ, поменяйте стандартный порт, на любой другой. Только не забудьте прописать этот же порт в настройках клиента. port 1194 # сохраняем # применим настройки файрвола через rc.local, можно сделать иначе, но я остановился на этом варианте. nano /etc/rc.local # добавляем строки до exit 0 iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE # сохраняем nano /etc/sysctl.conf # раскомментируем строчку net.ipv4.ip_forward=1 # отправляем на перезагрузку, чтобы сразу убедиться что автозапуск работает reboot |
Всё, серверная часть готова. Можно подключаться. Для перехода к следующим этапам, надо выгрузить с нашего сервера сертификаты из папки:
1 |
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ |
Это можно сделать при помощи SSH, либо mc если у вас есть ftp сервер. Нам нужны только некоторые файлы, какие именно читаем ниже.
Настройка android клиента (root не требуется)
1. Устанавливаем на телефон OpenVPN for Android
2. Загружаем на карту памяти сертификат p12, брать тут
1 |
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/vpn.android.p12 |
3. Запускаем OpenVPN for Android
4. VPN Profiles > Add, вводим любое имя. Приступаем к настройке профиля:
Basic > Server Address: IP адрес вашего VPN сервера, либо имя домена если вы его привязали
Type: PKCS12 File
Select: Выбираем наш файл *.p12
PKCS12 Password: вводим пароль импорта сертификата, заданный при его генерации.
upd: используйте последнюю версию приложения, в ней проверка remote-cert-tls server включена по-умолчанию. либо включите вручную в настройках авторизации, проверку сертификата сервера
Если вы включили tls-auth на сервере, включите в настройках профиля tls-auth и выберите ta.key
5. Готово. Подключаемся и проверяем, текущий статус подключения доступен в панели уведомлений (можно добавить на рабочий стол ярлык для конкретного VPN, он будет стартовать сразу по клику на ярлык, без лишних телодвижений. Если хотите чтобы при каждом подключении спрашивало пароль, просто не сохраняйте его в настройках профиля).
Выделение статических ip адресов клиентам OpenVPN
В файл конфигурации сервера OpenVPN нужно добавить буквально пару строк:
1 |
nano /etc/openvpn/server.conf |
1 2 |
client-to-client ifconfig-pool-persist ipp.txt |
client-to-client – разрешаем клиентам видеть друг-друга в сети
ifconfig-pool-persist ipp.txt – наличие этой строки указывает, что перед тем как выдать клиенту свободный адрес из пула, сервер должен свериться с файлом ipp.txt, в котором прописывается привязка имени пользователя к ip-адресу.
Файл ipp.txt должен иметь следующий формат:
1 2 3 |
username1,ip-address username2,ip-address username3,ip-address |
username1, username2 и username3 соотвествуют именам выданных сертификатов пользователей.
Первоисточник: https://habr.com/post/153855/
https://mdex-nn.ru/page/vydelenie-static-ip-klientam-openvpn.html