Користувальницькі налаштування

Налаштування сайту


vpn

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
vpn [2023/07/30 15:40] – OpenConnect VPN section added wombatvpn [2023/07/30 20:05] (поточний) – [Сервер] Налаштування сервера wombat
Рядок 115: Рядок 115:
 ====== OpenConnect VPN ====== ====== OpenConnect VPN ======
  
 +
 +
 +
 +===== Сервер =====
 +
 +[[https://ocserv.gitlab.io/www/index.html|OpenConnect VPN Server]]
 +
 +Встановити сервер OpenConnect у Debian-подібних системах можна наступним чином:
 +
 +  apt install ocserv
 +
 +
 +1. Спочатку нам знадобиться доменне ім'я, прив'язане до зовнішньої IP-адреси нашого сервера.
 +
 +2. Далі потрібно отримати дійсний SSL-сертифікат для цього домену. Наприклад, [[ssl|сертифікат від Let's Encrypt!]].
 +
 +3. Наступним кроком потрібно налаштувати сервер у файлі ''/etc/ocserv/ocserv.conf'':
 +
 +Якщо хочемо організувати підключення з логіном та паролем, то коментуємо усі зайві рядки символом "''#''" та залишаємо лише рядок із вказанням шляху до файлу з паролями:
 +
 +<file>
 +#auth = "pam"
 +#auth = "pam[gid-min=1000]"
 +auth = "plain[passwd=/etc/ocserv/ocpasswd]"
 +</file>
 +
 +Тут ми вважаємо, що паролі зберігаються у файлі "''/etc/ocserv/ocpasswd''". Створити його та додати в нього дані про якогось користувача, наприклад, з іменем "''username1''", можна відповідною командою ''ocpasswd'':
 +
 +  ocpasswd -c /etc/ocserv/ocpasswd username1
 +
 +Треба налаштувати порти для TCP та UDP з'єднань (якщо такі дозволено):
 +
 +<file>
 +tcp-port = 443
 +udp-port = 443
 +</file>
 +
 +Зауважимо, що порт 443 типово використовується веб-сервером для протоколу HTTPS. Тому якщо на цьому ж сервері передбачається одночасно робота веб-сервера, то потрібно обрати інший номер порту.
 +
 +Вказуємо шляхи до файлів SSL-сертифікату та відповідного приватного ключа. Якщо ці файли ми отримали за допомогою "Let's Encrypt", то вони зазвичай будуть зберігатися у шляхах на кшталт:
 +
 +<file>
 +server-cert = /etc/letsencrypt/live/example.com.ua/fullchain.pem
 +server-key  = /etc/letsencrypt/live/example.com.ua/privkey.pem
 +</file>
 +
 +Тут для прикладу використано доменне ім'я "''example.com.ua''". Звісно, для вашого домену воно буде якимось іншим.
 +
 +Можна змінити кількість дозволених одночасних клієнтів та одночасних з'єднань від одного клієнта:
 +
 +<file>
 +max-clients = 32
 +max-same-clients = 32
 +</file>
 +
 +Також варто встановити період надсилання даних для підтримання з'єднання активним в залежності від параметрів вашої мережі та очікуваного режиму використання:
 +
 +<file>
 +keepalive = 30
 +</file>
 +
 +try-mtu-discovery = true
 +
 +Якщо ми не хочемо, щоб клієнти автоматично від'єднувалися після тривалої відсутності активності з їхнього боку, треба закоментувати наступні рядки:
 +
 +<file>
 +#idle-timeout = 1200
 +#mobile-idle-timeout = 1800
 +</file>
 +
 +Також корисна функція для захисту від автоматизованих атак, але яка може виявитися незручною для певних користувачів, це пауза після невдалої спроби увести пароль. В залежності від ситуації, також можна закоментувати:
 +
 +<file>
 +#min-reauth-time = 300
 +</file>
 +
 +Вказуємо наш справжній домен, прив'язаний до нашого сервера:
 +
 +<file>
 +default-domain = example.com.ua
 +</file>
 +
 +Вказуємо базову IP-адресу та маску для віртуальної мережі, яку створить наш VPN сервер по підключенню клієнта:
 +
 +<file>
 +ipv4-network = 10.9.8.0
 +ipv4-netmask = 255.255.255.0
 +</file>
 +
 +Вкажемо, що усі DNS-запити від клієнта потрібно передавати також через VPN, а також надаємо перелік DNS-серверів, доступних для сервера:
 +
 +<file>
 +tunnel-all-dns = true
 +
 +dns = 127.0.0.53
 +dns = 8.8.8.8
 +dns = 1.1.1.1
 +</file>
 +
 +Тут IP-адреса "''127.0.0.53''" -- це типова локальна адреса, яку використовує сервіс ''systemd-resolved.service''. Замість неї можна вказати IP-адреси, надані провайдером.
 +
 +Якщо ми хочемо, щоб усі з'єднання клієнта після підключення до нашого VPN сервера, проходили через наш 
 +сервер (а саме для цього найчастіше і використовують VPN у побуті), то потрібно закоментувати усі рядки з вказанням маршрутів:
 +
 +<file>
 +#route = 10.0.0.0/8
 +#route = 172.16.0.0/12
 +#route = 192.168.0.0/16
 +#route = fd00::/8
 +</file>
 +
 +Звісно, це найпростіший випадок. Якщо потрібна якась диференціація маршрутів, то можна їх вказати, а також додати маршрут за замовчуванням у кінці:
 +
 +<file>
 +route = default
 +</file>
 +
 +
 +
 +4. Якщо сервер знаходиться за NAT'ом (наприклад, підключений до інтернету через маршрутизатор), то потрібно переспрямувати порти, які ми потім надамо користувачам для налаштування з'єднання, з маршрутизатора на наш сервер.
 +
 +В нашому прикладі ми вказали порт ''443'' для TCP та UDP-з'єднань. І якщо ми хочемо, щоб користувачі підключалися за зовнішньою адресою нашого сервера (власне, за доменним ім'ям) до порту ''443'', то переспрямовуємо цей порт з маршрутизатора до нашого сервера. Це робиться у налаштуваннях маршрутизатора.
 +
 +5. Коли усі попередні кроки зроблено, можна перезапустити сервер OpenConnect, і все має працювати.
 +
 +  sudo systemctl -l restart ocserv.service
 +
 +
 +
 +===== Клієнт =====
  
vpn.1690731644.txt.bz2 · Востаннє змінено: повз wombat