Знания Прости инструкции за работа с услугата Profitserver
основен Знания Настройка на VPN сървър на Linux: PPTP или OpenVPN?

Настройка на VPN сървър на Linux: PPTP или OpenVPN?


В днешно време VPN технологията става все по-популярна. Обикновените потребители използват VPN за безопасен достъп до интернет. Той също така помага за заобикаляне на локално блокирани уебсайтове и услуги и защитава срещу възможно външно злонамерено поведение. Когато се свързвате към VPN сървър, между вашия компютър и сървъра има безопасен тунел, който не може да бъде достъпен отвън, така че VPN сървърът става вашата точка за достъп до Интернет. Има много VPN услуги, както безплатни, така и платени, но ако те не работят за вас по някаква причина, винаги можете да конфигурирате свой собствен VPN сървър.

За да стартирате своя VPN, трябва наем на VPS сървър. Има различен софтуер, който ви позволява да създадете VPN връзка. Различава се един от друг по поддържаните операционни системи и използваните алгоритми. Ще разгледаме два независими подхода за настройка на VPN сървър. Първият е базиран на PPTP протокол, който вече се счита за остарял и несигурен, но е наистина лесен за конфигуриране. Другият използва модерен и сигурен софтуер OpenVPN, но изисква инсталиране на клиентско приложение на трета страна и по-задълбочен процес на настройка.

В нашата тестова среда ще използваме виртуален сървър, захранван от Ubuntu Server 18.04. Защитната стена ще бъде изключена на сървъра, защото нейната конфигурация заслужава отделна статия. Ще опишем процеса на настройка на Windows 10.

Подготовка

Без значение кой VPN сървър изберете, достъпът до Интернет ще бъде настроен чрез интегрирани средства на операционната система. За да отворите достъп до Интернет през интерфейс на външна услуга, трябва да разрешите пренасочване на пакети между интерфейсите и да конфигурирате преобразуване на мрежови адреси.

За да включите препращането на пакети, отворете файла “/etc/sysctl.conf” и промяна „net.ipv4.ip_forward“ стойност на параметъра в 1.

включете препращането на пакети за настройка на VPN

За да приложите промените без да рестартирате компютъра, изпълнете командата

sudo sysctl -p /etc/sysctl.conf

Преводът на мрежови адреси се конфигурира с помощта на IPTABLES. Първо проверете името на вашия външен мрежов интерфейс, изпълняващ командата „показване на IP връзка“ - ще ви трябва на следващата стъпка. Името ни е „ens3“.

ip връзка показват

Активирайте преобразуването на мрежови адреси във вашия външен интерфейс за всички локални мрежови възли.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Имайте предвид, че трябва да посочите истинското име на интерфейса на вашия сървър, то може да е различно от нашето.

По подразбиране всички правила, създадени от iptables, се нулират след рестартиране на сървъра. За да предотвратите това, използвайте „iptables-persistent“ полезност. Инсталирайте следния пакет:

sudo apt install iptables-persistent

В даден момент по време на инсталационния процес ще видите конфигурационен прозорец, който ще ви предложи да запазите текущите правила на iptables. Тъй като правилата вече са определени, просто потвърдете и щракнете "Да" два пъти. Тъй като сега правилата ще се прилагат автоматично след рестартиране на сървъра.

Включете превода на адреси

PPTP сървър

Конфигурация на сървъра

Инсталирайте пакета:

sudo apt install pptpd

След като инсталацията приключи, отворете файла „/etc/pptpd.conf“ във всеки текстов редактор и го редактирайте по следния начин:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

След това редактирайте файла „/etc/ppp/pptpd-опции“. Повечето от параметрите са зададени по подразбиране.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

На следващия етап ще трябва да създадете запис за клиентски връзки. Да приемем, че искате да добавите потребител „vpnuser“ с парола "1" и позволяват динамично адресиране за него. Отворете файла “/etc/ppp/chap-secrets” и добавете следния ред с параметрите на потребителя в края на файла:

vpnuser pptpd 1 *

„pptpd“ value е името на услугата, която сме посочили във файла „pptpd-опции“, Вместо "*" можете да посочите фиксиран IP адрес. В резултат файлът „тайни за момчета“ трябва да изглежда така:

Настройка на VPN сървър

За да приложите настройките, нулирайте pptpd услуга и я добавете към автоматично зареждане.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Конфигурирането на сървъра е завършено.

Конфигурация на клиента

отворено "Старт" - "Настройки" - Мрежа и интернет - „VPN“ и кликнете „Добавяне на VPN връзка“

Настройка на клиент за VPN връзка

Въведете параметрите на връзката в отворения прозорец и щракнете „Запазване“

  • VPN доставчик: „Windows (вграден)“
  • Име на връзката: „vpn_connect“ (можете да изберете всяко име)
  • Име или адрес на сървъра: (посочете външния IP адрес на сървъра)
  • VPN тип: „Автоматичен“
  • Тип информация за вход: „Потребителско име и парола“
  • Потребителско име: vpnuser (име, посочено във файла „chap-secrets“ на сървъра)
  • парола: 1 (както във файла „chap-secrets“)

След като запазите параметрите, ще видите новата VPN връзка в прозореца. Щракнете с левия бутон върху връзката и изберете "Connect". В случай на успешна връзка ще видите „Свързан“ статус.

Добавяне на VPN връзка

В Опции ще намерите вътрешни адреси на клиента и сървъра. Поле „Адрес на местоназначение“ показва адреса на външния сървър.

Как да настроите VPN сървър сами

Когато е свързан, вътрешният IP адрес на сървъра, 172.16.0.1 в нашия случай се превръща в шлюз по подразбиране за всички изходящи пакети.

Проверете външния IP адрес

С помощта на която и да е онлайн услуга можете да се уверите, че външният IP адрес на компютъра вече е същият като IP адреса на вашия VPN сървър.

OpenVPN сървър

Конфигурация на сървъра

Нека повишим нивото на разрешения на текущия потребител, защото за по-нататъшната ни конфигурация ще ни трябва root достъп.

sudo -s

Инсталирайте всички необходими пакети. Ще имаме нужда „Easy-RSA“ пакет за управление на ключове за криптиране.

apt install openvpn easy-rsa iptables-persistent

Разрешете входящи връзки на порт 1194 чрез UDP протокол и приложете правилата на iptables.

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

sudo netfilter-persistent save

Създайте директория с копирани файлове от пакета „Easy-RSA“ и отидете в нея.

make-cadir ~/openvpn

cd ~/openvpn

Генериране на инфраструктура с публични ключове (PKI).

./easyrsa init-pki

Генерирайте коренния сертификат на сертифициращия орган (CA).

./easyrsa build-ca

По време на процеса на създаване ще бъдете подканени да зададете и запомните парола. Ще трябва също да отговорите на въпроси и да въведете информация за собственика на ключа. Можете да оставите стойностите по подразбиране, посочени в квадратни скоби. Натиснете „Enter“, за да финализирате въвеждането.

Генерирайте частен ключ и заявка за сертификат. Като аргумент, посочете произволно име; в нашия случай това е „vpn-server“.

./easyrsa gen-req vpn-server nopass

Оставете стойността на „Общо име“ по подразбиране.

Подпишете генерираната заявка за сертификат на сървъра.

./easyrsa sign-req server vpn-server

На тази стъпка отговорете с „да“, за да потвърдите подписа, след което въведете паролата, която е била създадена по време на генерирането на коренния сертификат.

Генерирайте параметри на Дифи-Хелман. Тези параметри се използват за защитен обмен на ключове между сървъра и клиента.

./easyrsa gen-dh

Всички необходими файлове са генерирани. Нека създадем папка „keys“ в работната директория на OpenVPN, за да съхраняваме ключовете и да копираме създадените файлове там.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

Конфигурирайте NAT с помощта на iptables правила. Създайте файл с име nat и го отворете за редактиране в /etc/openvpn/ директория.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

Запазете файла и го направете изпълним.

sudo chmod 755 /etc/openvpn/nat

Копирайте шаблона за конфигурация на сървъра.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

Отворете файла „/etc/openvpn/server.conf“ за редактиране се уверете, че съдържа следните редове и ги редактирайте, ако е необходимо:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

Активирайте пренасочването на трафик на сървъра.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

Стартирайте OpenVPN, за да приложите конфигурацията.

systemctl restart openvpn@server

Конфигурирането на сървъра е завършено!

Конфигурация на клиента

Отидете на официалния уебсайт на OpenVPN “https://openvpn.net”, отидете на „ОБЩНОСТ“ раздел.

Отидете на официалния сайт на проекта “https://openvpn.net”, преминете в раздела “ОБЩНОСТ”.

Превъртете надолу и изтеглете инсталатора за вашата версия на операционната система. В нашия случай това е Windows 11 ARM64.

пролистваме надолу и скачаваме инсталатор за вашата версия на операционната система. В нашия случай това е Windows 11 ARM64.

Инсталирайте приложението, като оставите всички параметри по подразбиране.

На следващия етап ще трябва да подготвите следния файл на сървъра и да ги прехвърлите на клиентския компютър:

  • публични и частни ключове;
  • копие на ключа на удостоверителния център;
  • шаблон на конфигурационен файл.

Свържете се със сървъра, повишете привилегиите си и отидете до създадената от нас директория. "~/openvpn".

sudo -s

cd ~/openvpn

Генерирайте частен ключ и заявка за сертификат за клиента. Като аргумент, посочете произволно име; в нашия случай това е „client1“.

./easyrsa gen-req client1 nopass

Въведете паролата, която сме задали при създаването на главния сертификат, и оставете стойността „Common Name“ по подразбиране.

Въведете паролата, която сме установили при създаването на корневия сертификат и оставяме значението Common Name по подразбиране.

Подпишете генерираната заявка за клиентски сертификат.

./easyrsa sign-req client client1

На тази стъпка отговорете с „да“, за да потвърдите подписа, след което въведете паролата, която е била създадена по време на генерирането на коренния сертификат.

На този етап отговаряме "да" за потвърждение на подписите, след като въведем паролата, която е създадена при създаването на корневия сертификат.

За удобство, нека създадем папка с име „client1“ в домашната директория и да копираме в нея всички файлове, предназначени за прехвърляне към клиентския компютър.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

Копирайте шаблона на клиентския конфигурационен файл в същата директория. Променете файловото разширение на „.ovpn“ докато копирате.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

Променете собственика на директорията и всички файлове „~/клиент1/“ за да може да ги раздаде на клиента. Да направим „михаил“ собственикът в нашия случай.

chown -R mihail:mihail ~/client1

Отидете на клиентския компютър и копирайте съдържанието на „~/клиент1/“ папка. Можете да направите това с помощта на „PSCP“ помощна програма, която върви с Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

Можете да съхранявате ключови файлове „ca.crt“, „клиент1.crt“, „client1.key“ където пожелаеш. В нашия случай те са в тази папка “c:\Program Files\OpenVPN\keys”, и ние модифицираме конфигурационния файл „client.ovpn“ в “c:\Program Files\OpenVPN\config” директория.

Сега да преминем към конфигурирането на клиента. Отворете файла “c:\Program Files\OpenVPN\config\client.ovpn” в текстов редактор и редактирайте следните редове:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

Оставете останалото недокоснато.

Запазете файла и стартирайте клиентското приложение „GUI на OpenVPN“.

Настройката на VPN приключи

Щракнете с десния бутон върху иконата на приложението в лентата на задачите и изберете "Connect". Ако връзката е успешна, иконата ще стане зелена.

Използвайте която и да е онлайн услуга, за да се уверите, че публичният ви IP адрес се е променил и сега е същият като IP адреса на сървъра.

❮ Предишна статия Как да настроите Wireguard VPN на вашия сървър
Следваща статия ❯ Настройка на FTP сървър

Попитайте ни за VPS

Винаги сме готови да отговорим на вашите въпроси по всяко време на деня и нощта.