OVPN (OpenVPN) своїми руками - TheWired
OVPN (OpenVPN) своїми руками
На початку цього блогу я писав, як обходити блокування, але та інструкція трохи застаріла. Гадаю, настав час її оновити, і я вирішив зробити це не в початковому пості, а написати новий, виходячи з поточних реалій. На виході ви отримаєте свій працюючийOVPN (OpenVPN), що підключається по одному кліку. Отже, поїхали.

Отмазка: мається на увазі, що у вас вже є сервер з Ubuntu на борту, якщо ні - заведіть (щоб це зробити є два посилання праворуч, одне на Linode, друге на DigitalOcean). На досвід не всі читачі розуміють очевидні речі, тому писати буду докладно.
#1: Встановимо та налаштуємо OpenVPN сервер та його оточення
Тепер встановимо OpenVPN та Easy-RSA…
Конфіг по дефолту має бути розпакований у /etc/openvpn, тому робимо так…
Тепер потрібно відкрити файл server.conf і відредагувати його.
У цей файл необхідно внести деякі зміни. Знайдіть секцію файлу, яка виглядає приблизно так:
Замініть dh1024.pem на dh2048.pem – це подвоїть довжину ключа RSA під час генерації ключів сервера та клієнта. Тепер вам треба знайти ось цю секцію файлу:
Далі шукаємо таку секцію:
За замовчуванням OpenVPN працює від рута і має повний доступ до машини - на мій погляд це не є правильно, тому ми тільки-но конфігурували його працювати від користувача nobody з групою nogroup. Це користувач без будь-яких привілеїв, зазвичай зарезервований системою для роботи недовірених додатків. Тепер можна зберегти файл та вийти.
Базова настройка OpenVPN сервера завершена, але є ще нюанси, без яких працювати їх не буде. Зокрема є така системна опція sysctl, яка вказує ядру сервера на необхідність перенаправлятитрафік від клієнтських пристроїв до Інтернету. Інакше трафік далі вашого сервера нікуди не піде. Нам такий варіант не потрібен, тому включимо перенаправлення пакетів:
Нам також треба, щоб це налаштування було постійно, а не злітало при кожному перезавантаженні сервера, тому:
Майже в самому верху файлу ви повинні побачити такі рядки:
Тепер можна зберегти цей файл та вийти. У Ubuntu, починаючи з версії 14.04, є така штука — називається Uncomplicated Firewall (ufw), він нам знадобиться. ufw це фронтенд для iptables, налаштувати його легко, потрібно просто створити кілька правил і виправити конфіги, а потім включати файрвол. Поїхали…
Ми будемо налаштовувати OpenVPN на роботу за протоколом UDP, тому ufw має дозволяти UDP-трафік через порт 1194.
Також, для самого ufw потрібно встановити правило перенаправлення пакетів, відкриємо конфіг:
Шукаємо рядок DEFAULT_FORWARD_POLICY=”DROP”. Її значення потрібно змінити з DROP на ACCEPT, щоб у результаті вийшло так:
Тепер потрібно додати кілька додаткових правил для ufw, щоб увімкнути NAT і маскарадинг для підключених клієнтів:
Відразу після цієї секції:
Тепер можна зберегти файл і вийти. Потім включаємо ufw:
ufw може запитати:
Скажімо, що та й натиснемо ентер:
Якщо все було зроблено правильно – напише:
Можна перевірити його статус (не обов'язково):
Відповість, швидше за все, якось так:
На цьому налаштування OpenVPN сервера та файрвола завершено, їдемо далі ;-)
#2: Створимо сертифікати та ключі
OpenVPN використовує сертифікати для того, щоб шифрувати трафік між клієнтом та сервером.
Створимо директорію для зберігання ключів:
Easy RSA має файлик зі змінними, який ми можемовідредагувати (а можемо і не чіпати, це опціонально), щоб створювати сертифікати ексклюзивно для себе, свого бізнесу, і так далі. Ця інформація копіюється в сертифікати та ключі та допомагає ідентифікувати ключі пізніше. Відкриємо файл:
Можете редагувати все, що знаходиться в лапках, вписуючи ваші дані (за бажанням). У тому ж файлі, простежте, щоб рядок виглядав так:
Тепер треба згенерувати параметри Diffie-Hellman, це займе кілька хвилин (залежно від потужності сервера):
Змінимо робочу директорію:
Ініціалізуємо PKI (Public Key Infrastructure):
Відповідь має бути такою:
Тепер очистимо робочу директорію від будь-яких можливих старих (або демо) ключів:
Майже фінал ... Залишилося створити білд CA, в процесі запитають про дані - можна або їх вводити, або залишити дефолтні (натискаючи ентер), це не важливо:
Далі нам потрібно згенерувати сертифікат та ключ для сервера (у процесі також може запросити дані та challenge пароль, скрізь тиснемо ентер):
Якщо все було ок - скаже так:
Тепер потрібно перемістити серверні сертифікати та ключі:
Для того щоб перевірити, чи були вони коректно скопійовані:
На цьому начебто все можна запускати:
На цьому налаштування сервера завершено. Тепер нам потрібно згенерувати сертифікати та ключі для клієнта:
Як завжди, все це можна не заповнювати, скрізь тиснемо ентер:
Далі буде два запити:
На обидва відповідаємо так:
Якщо ніде не помилилися, то має бути так:
Всі. Тепер вам треба зайти на сервер через sftp і забрати такі файли до себе на клієнтський комп'ютер:
#3: Налаштуємо клієнтський комп'ютер

Я раджу платний софт, який називається Viscosity. Коштує всього $9,і він справді вартує цих грошей — не шкодуйте, купуйте. Є версії і під винду, і під мак. Ліцензія не взаємозамінна. Скріншоти наводити не стану - там все просто, розберетеся. Потрібно створити нове з'єднання, у вкладці “Аутентифікація” вибрати тип “SSL/TLS Client” та згодувати йому файли, які ви завантажили раніше. Потім там же вкладка "Мережа", потрібно відзначити (включити) пункт "Надсилати весь трафік через VPN". Всі.

Ну що сказати... Ти просто кросавчег. Перший faq на цю тему розжований від і до! Вийшло з першого разу. Була лише проблема з пересиланням файлів із сервера на локальну машину. Додай. Файл client1.key потрібно відредагувати через chmod, інакше його забрати з сервера не вийде… Хоча х.з. як ти робив
Чудовий матеріал! Дякую величезне саме за налаштування сервера. Все вийшло 1 в 1. Тільки ось сама схема застосування нежиттєздатна… От якби ще допиляти матеріал як ще налаштувати ubuntu-server у вигляді клієнтів, щоб маршрутизувалося все-все-крім через центральний ubuntu-server налаштований саме як сервер, як і написано у статті – золотий матеріал вийшов би. Плюси - витрачається тільки 1 публічний IP-адреса, так як клієнти приєднуються через NAT і розподілена мережа центральний офіс - філії з нульовою витратною частиною. Так. було б золото, а так тільки срібло.
Ну ось, подякуєш людині..))
Для “обходу блокувань”, якщо правильно розумію про що мова (якщо неправильно, тоді “миль пардон”), чи не простіше використовувати Tor Brauser (https://ua.wikipedia.org/wiki/Tor), ніж городити город із виділеного сервера?
Гаразд, згоден, питання релігії… Не заглиблюватимемося..))
А ось питання по суті:
в /etc/openvpn/server.conf параметр daemon потрібен?Начебто б і без нього запускається все автоматично?
Ні, не простіше. Тому що exit-nodes у Торі під прицілом ;) А приватні сервери, яких сотні, особливо віртуалок - не особливо ;) Так що твій трафік це твій трафік, а тор не треба ;)
Щодо питання по суті. Сам спитав, сам відповів.
Добрий вечір, абсолютно не розбираючись у всьому цьому про принцип- скопіював, вставив, перевірив-все вийшло (в тому числі і comodo і що б на 2ip не розуміли)). Дякую. Заходжу сьогодні на джойказино (вперше), а мене туди не пускає мій інтернет-провайдер. Не знаю навіщо почав лазити копатися в інеті в клієнті, але поки копошився з'явилося ще кілька запитань. 1. Чому блокує провайдер?, нарив що якось пов'язано з DNS. Чи є рішення? 2. Це пише Viscosity при підключенні до сервера (WARNING), відповіді під свій розум не знайшов: лис 11 17:08:22: Стан змінено на Creating… лис 11 17:08:24: Стан змінено на Disconnected лис 11 17:08:35: Стан змінено на Connecting лис 11 17:08:35: Viscosity Windows 1.6.6 (1461) лис 11 17:08:35: Виконується на Майкрософт Windows 10 для однієї мови лис 11 17:08:35: Включаємо інтерфейс… лис 11 17:08:35: Перевірка доступності з'єднання... лис 11 17:08:35: З'єднання доступне. Підключаюсь. лис 11 17:08:35: OpenVPN 2.3.12 Windows-MSVC [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Aug 24 2016 лис 11 17:08:35: library versions: OpenSSL 1.0.2h 3 May 2016, LZO 2.09 лис 11 17:08:36: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. лис 11 17:08:36: UDPv4 link local: [undef] лис 11 17:08:36: UDPv4 link remote: [AF_INET]XX.XX.XX.XXX:1194 лис 11 17:08:37: WARNING: this cipher's block sizeis less than 128 bit (64 bit). Consider using a –cipher with a larger block size. лис 11 17:08:37: WARNING: цей цифер з блоку розміру 128 біт (64 біт). Consider using a –cipher with a larger block size. лис 11 17:08:37: [server] Peer Connection Initiated with [AF_INET]XX.XX.XX.XXX:1194 лис 11 17:08:40: do_ifconfig, tt->ipv6=0 , tt->did_ifconfig_ipv6_setup=0 лис 11 17:08:40: open_tun, tt->ipv6=0 лис 11 17:08:40: TAP-WIN32 device [З'єднання] opened: Global.tap лис 11 17:08:40: Заборонено TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface [DHCP-serv: 10.8.0.5, lease-time: ] лис 11 17:08:40: Successful ARP Flush on interface [11] лис 11 17:08:45: Initialization Sequence Completed лис 11 17:08:45: Використовується режим Full DNS лис 11 17:08:45: Стан змінено на Connected
Підписуйтесь, щоб не пропустити нові цікаві статті;) Читати раджу в InoReader.