Как стать автором
Обновить

Как поднять OpenVPN сервер на Ubuntu 22.04?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров59K

В эпоху массовых блокировок и ограничений в сети, сохранение своей онлайн приватности становится все более актуальным. И здесь вам на помощь приходит OpenVPN – одно из самых популярных и надежных решений для создания безопасного туннеля в интернет. Если вы хотите обойти географические ограничения, обеспечить защиту своих данных или просто настроить собственный сервер для удаленного доступа к локальным ресурсам, то данная статья именно для вас! Мы рассмотрим этапы создания и настройки своего собственного OpenVPN сервера, чтобы вы могли насладиться свободным и безопасным интернетом, не зависимо от места нахождения. Присоединяйтесь к нам и давайте начнем этот увлекательный путь в мир безграничной свободы в онлайне!

Где взять VPS(виртуальную машину) и как к ней подключится?

Я лично использовал justhost(тык!) и брал самую дешёвую виртуалку в Нидерландах.

Далее будет инструкция по подключению:

  1. Зарегистрироваться, оплатить VPS

  2. Пока Вы ждёте её включение, скачайте PuTTy(тык!, тык!)

  3. Когда VPS запустилась, Вам на почту по которой вы регистрировались приходит письмо, в котором есть пароль от пользователя root, и IPv4 адрес, запоминаем их

  4. Открываем PuTTy и в поле Host Name (or IP address) вводим ip(IPv4) адрес который мы запомнили из письма и нажимаем Open

  5. Соглашаемся(Accept) с предупреждением о безопасности(оно появляется 1 раз)

  6. Если вы увидели надпись login as: , то Вы подключились

  7. Вводим root и при запросе пароля вводим пароль из письма

Создание нового пользователя и вход под ним(по соображениям безопасности)

  1. useradd -m <любое имя пользователя>

  2. passwd <имя созданного ранее пользователя>

  3. usermod -aG sudo <имя созданного ранее пользователя>

  1. sudo chsh -s /bin/bash <имя созданного ранее пользователя>

Подключаемся заново и входим под ранее созданным пользователем (предыдущий пункт, всё с 3 шага) 

Предварительная подготовка

Установка пакетов

  1.  sudo apt install easy-rsa

  2.  sudo apt install openvpn

  3.  sudo apt install iptables-persistent

Настройка  FireWall

  1.  sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

  2.  sudo netfilter-persistent save

Настройка директорий VPN

  1. sudo mkdir -p /etc/openvpn/keys

  2. sudo mkdir /etc/openvpn/easy-rsa

  3. cd /etc/openvpn/easy-rsa

  4. sudo cp -r /usr/share/easy-rsa/* .

  1. sudo mkdir /etc/openvpn/ccd

Настройка VPN

Конфигурируем конфиги

Настройка vars

  1. sudo nano vars

  2.  В открывшийся интерфейс вставляем:

export KEY_COUNTRY=«RU» 
export KEY_PROVINCE=«Moscow»
export KEY_CITY=«Moscow»
export KEY_ORG=«sten»
export KEY_ORG=»fdjgbi@sten.com«
export KEY_CN=«sten»
export KEY_OU=«sten»
export KEY_NAME=«vpn.StenLi.com»
export KEY_ALTNAMES=«vpn2.StenLi.com»

KEY_ORG, KEY_ORG, KEY_CN, KEY_OU, KEY_NAME, KEY_ALTNAMES — можно указывать всё, что угодно

  1. нажимаем по порядку: ctrl+x, y, enter

 Настройка /etc/nat(FireWall)

  1. sudo nano /etc/nat

  2. В открывшийся интерфейс вставляем:

#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Разрешаем инициированные нами подключения извне
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем подключения по SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Разрешаем подключения к OpenVPN
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

# Разрешает входящий трафик из tun0
iptables -A INPUT -i tun0 -j ACCEPT

# Разрешает транзитный трафик между eth0 и tun0:
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEP

# Запрещаем входящие извне
iptables -A INPUT -i eth0 -j DROP

# Разрешаем инициированные нами транзитные подключения извне
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j A

# Запрещаем транзитный трафик извне
iptables -A FORWARD -i eth0 -o tun0 -j DROP

# Включаем маскарадинг для локальной сети
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE
  1. нажимаем по порядку: ctrl+x, y, enter

  2. sudo chmod 755 /etc/nat

Создание ключей сервера

  1. sudo ./easyrsa init-pki

  2. sudo ./easyrsa build-ca

  3. вводим пароль и запоминаем его(Enter New CA Key Passphrase)

  4. sudo  ./easyrsa gen-req server nopass

  5. sudo  ./easyrsa sign-req server server

 После ввода команды подтверждаем правильность данных, введя yes,

и вводим пароль, который указывали при создании корневого сертификата.

  1. sudo  ./easyrsa gen-dh

  2. sudo  openvpn --genkey secret pki/ta.key

  3. sudo  cp pki/ca.crt /etc/openvpn/keys/

  4. sudo  cp pki/issued/server.crt /etc/openvpn/keys/

  5.  sudo  cp pki/private/server.key /etc/openvpn/keys/ 

  6.  sudo  cp pki/dh.pem /etc/openvpn/keys/

  7.  sudo  cp pki/ta.key /etc/openvpn/keys/

Настройка сервера

  1. sudo nano /etc/openvpn/server.conf

  2. В открывшийся интерфейс вставляем:

 local 999.999.999.999 

port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-to-client
client-config-dir /etc/openvpn/ccd
keepalive 10 120
max-clients 32
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo
tun-mtu 1500
mssfix 1620
cipher AES-256-GCM
topology subnet

push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»

up /etc/nat
  • client-to-client даёт возможность клиентам видеть и общаться друг с другом в локальной сети

  • client-config-dir /etc/openvpn/ccd мы указываем директорию  в которой задаём статические ip адреса клиентам. Об этом позже

-  Меняем local 999.999.999.999 на local <внешний ip VPS(IP по которому вы подключались через PuTTy)>

Запуск сервера

Запуск сервера

  1. sudo systemctl start openvpn@server

  2.  sudo systemctl status openvpn@server

  3. Вы запустили сервер!!!! УРА!!!!

Генерация сертификатов

Генерация сертификатов

Со 2 по 4 выполняется 1 раз!

После этого запускаем 1, и 5+

  1. cd /<Любая удобная вам директория>

  2. sudo nano gen_sert.sh

  3. Вставляем в открывшееся окно:

#!/bin/bash

if [ $# -ne 1 ]; then
    echo «Usage: $0 --client-name»
    exit 1
fi

client_name=$1
password=«»
rm -r /tmp/keys
mkdir /tmp/keys
cd /etc/openvpn/easy-rsa
export EASYRSA_CERT_EXPIRE=1460
echo «$password» | ./easyrsa build-client-full $client_name nopass
cp pki/issued/client_name.key pki/ca.crt pki/ta.key /tmp/keys/
chmod -R a+r /tmp/keys

cat << EOF > /tmp/keys/$client_name.ovpn
client
resolv-retry infinite
nobind
remote 999.999.999.999 1194
proto udp
dev tun
comp-lzo
ca ca.crt
cert $client_name.crt
key $client_name.key
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
tun-mtu 1500
mssfix 1620
cipher AES-256-GCM
verb 0

EOF

echo «OpenVPN client configuration file created: /tmp/keys/$client_name.ovpn»
  1. Заменяем remote 999.999.999.999 1194 на remote <IP сервера> 1194

  2. sudo bash ./gen_sert.sh <Имя сертификата>

  3. cd /tmp/keys

  4. Например с помощью winscp достаем из этой директории сертификаты(получение файлов, скачать)

Задание статических адресов клиентам

  1. cd /etc/openvpn/ccd

  2. sudo nano  <Имя сертификата который вы указали при создании>

  3. Вставляем в открывшееся окно:

 ifconfig-push 10.0.0.<адрес который не будет меняться, адреса не должны повторяться> 255.255.255.0 

Теги:
Хабы:
Всего голосов 11: ↑4 и ↓7-3
Комментарии27

Публикации

Истории

Ближайшие события

AdIndex City Conference 2024
Дата26 июня
Время09:30
Место
Москва
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область