Установка OpenVPN
apt-get install -y 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="Kiev" export KEY_ORG="http://example.com" export KEY_EMAIL="org@example.com"Ініціалізіруем змінні, чистимо папку keys і створюємо сертифікати:
. ./vars . ./clean-all ./build-ca # кореневий сертифікат ./build-key-server server # сертифікат сервера ./build-dh # ключ Діффі ХельманEсли ви плануєте використовувати 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 windows ./build-key-pkcs12 debian ./build-key-pkcs12 android* Після цього в папці /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ з'являться ваші сертифікати android.*, windows.* та інші.
# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/ # . ./vars # ./build-key-pkcs12 newuser1 # ./build-key-pkcs12 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 log /var/log/openvpn.log # розкоментуйте, якщо потрібні логи duplicate-cn # розкоментуйте, якщо хочете використовувати один сертифікат для всіх користувачів # Для включення 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Редактируем файл sysctl.conf:
nano /etc/sysctl.confРаскомментируем строчку:
net.ipv4.ip_forward=1Відправляємо на перезавантаження, щоб відразу переконатися, що автозапуск працює.
rebootВсе, серверна частина готова. Уже можна підключатися. Для переходу до наступних етапів, треба вивантажити з нашого сервера сертифікати з папки: /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
remote IP_вашого_сервера 1194 client dev tun ping 10 comp-lzo proto udp tls-client remote-cert-tls server pkcs12 windows.p12 verb 3 pullЯкщо ви включили tls-auth на сервері, додайте в конфіг цей рядок:
tls-auth ta.key 1Створюємо batch скрипт (start_my_vpn.cmd) для запуску VPN сесії:
cd C:\some\path\openvpn\ "C:\Program Files\OpenVPN\bin\openvpn.exe" --config C:\some\path\openvpn\windows.ovpnСкрипт і конфиг кладемо в одну папку, в цю ж папку кидаємо windows.p12 сертифікат, брати його тут:
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/windows.p12Готово, ярлик на скрипт кидаємо на робочий стіл, запускаємо від імені адміністратора або від користувача з його правами, при запуску він попросить ввести пароль для «імпорту» сертифіката.
Enter Private Key Password:Якщо пароль вірний, то кілька секунд і ми підключилися:
Oct 9 21:25:35 Initialization Sequence CompletedДля автостарту тунелю без введення пароля, можна замість p12 використовувати зв'язку сертифікатів ca.crt, windows.key і windows.crt, виглядає це так, замість:
pkcs12 windows.p12Пишемо:
ca ca.crt cert windows.crt key windows.keyФайли брати все там же:
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ і покласти в папку з windows.ovpn і start_my_vpn.cmd.
apt-get install openvpnСтворюємо папку, в будь-якому зручному місці для зберігання сертифікатів та скрипта підключення до VPN:
mkdir /opt/openvpnСтворюємо скрипт підключення:
echo 'cd /opt/openvpn /usr/sbin/openvpn --config /opt/openvpn/debian.ovpn ' > /opt/openvpn/start_vpn.runСтворюємо файл конфігурації:
echo remote IP_ВАШОГО_СЕРВЕРА 1194 client dev tun ping 10 comp-lzo proto udp tls-client remote-cert-tls server pkcs12 debian.p12 verb 3 pull > /opt/openvpn/debian.ovpnЯкщо ви включили tls-auth на сервері, додайте в конфіг цей рядок:
tls-auth ta.key 1Файл debian.p12 беремо як зазвичай на сервері /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
chmod +x /opt/openvpn/start_vpn.runГотово. Не забудьте покласти debian.p12 або ca.crt, debian.key і debian.crt в папку зі скриптом і файлом конфігурації.
/opt/openvpn/start_vpn.run
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/android.p12Запускаємо OpenVPN for Android.
Basic > Server Address: IP адреса вашого VPN сервера, або ім'я домену, якщо ви його прив'язали Type: PKCS12 File Select: Вибираємо наш файл * .p12 PKCS12 Password: вводимо пароль імпорту сертифіката, заданий при його генерації. upd: використовуйте останню версію програми, в ній перевірка remote-cert-tls server включена за замовчуванням, або увімкніть вручну в налаштуваннях авторизації перевірку сертифіката сервера Якщо ви включили tls-auth на сервері, включіть в налаштуваннях профілю tls-auth і виберіть ta.keyГотово. Підключаємося і перевіряємо, поточний статус підключення доступний в панелі повідомлень (можна додати на робочий стіл ярлик для конкретного VPN, він буде стартувати відразу при натисканні на ярлик, без зайвих рухів тіла. Якщо хочете щоб при кожному підключенні запитувало пароль, просто не зберігайте його в налаштуваннях профілю).
ping 10.8.0.1Перевіряємо свій зовнішній IP-адреса на якому-небудь сайті на кшталт 2ip.ru (повинен відображатися адреса вашого сервера).