OpenVPN как прокси сервер под Ubuntu linux: различия между версиями

Материал из AlexNook
Перейти к навигацииПерейти к поиску
(Новая страница: « Category:Index Category:Linux»)
 
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
Настройка своего частного '''VPN''' сервера для преодоления блокировок в интернете.


Нужно взять в аренду '''VPS''' у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux.


Для удобства я поставил себе '''ifconfig'''
{{root|apt-get install net-tools}}
Далее на голую машинку нужно поставить OpenVPN
{{root|apt install openvpn}}
Затем качаем '''Easy-RSA''' для создания '''PKI''' и генерации ключей для сервера и клиентов. Скачать можно вот [https://github.com/OpenVPN/easy-rsa тут]
Для установки '''Easy-RSA''' его достаточно просто распаковать в папку {{path|/usr/share/easy-rsa}}
Далее все настройки выполняются в рамках статьи [[OpenVPN_установка_и_настройка_сервера_под_Gentoo_linux]]
{{note|Для удобства следует сменить подсеть на '''10.8.1.0/24'''}}
{{note|Так же следует заменить пустую группу на: '''group nogroup'''}}
{{File|/etc/openvpn/donikvpn.conf|
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
# non default port to prevent worm attacks!
port 11194
#udp is a bit faster but tcp is more stable, choosing tcp
proto tcp
#creating network tunnel for IP pachets management. we don't need TAP here for ethernet's frames management
dev tun
#paths to our certificates, private keys and Diffie Hellman params file
ca privnet/ca.crt
cert privnet/vpnserver.crt
key privnet/vpnserver.key
dh privnet/dh.pem
#encryption algorythm
data-ciphers AES-256-GCM:AES-256-CBC
#config VPN subnet as 10.8.1.0/24
server 10.8.1.0 255.255.255.0
#give clients same IPs if it's free when client connected respecting ipp.txt.
#zero at the end means don't recreate it automaticly.
ifconfig-pool-persist ipp.txt 0
#ping clients every 10 seconds and if no reply was recivied in 120 seconds then restart tunnel
keepalive 10 120
#Disable trafic compression for security reasons
allow-compression no
#what user and what group will be used to run openvpn service (not priviliged user used here)
user nobody
group nogroup
#not reread key files after tunnel restarts
persist-key
#don't do anything to tun device after restarting openvpn
persist-tun
#file with clients that established connection at this moment
status openvpn-status.log
#set log verbose level to 3 out of 11
verb 3
#don't rewrite log file - only append at the end of file
log-append /var/log/openvpn.log
#allow client-to-client connections throught our server
client-to-client
</syntaxhighlight>
}}
У клиента важно, чтобы была строчка добавляющая маршруты в туннель
{{File|CLIENT.CONF|
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
#execute routing commands to cause all outgoing traffic to be redirected over the VPN
redirect-gateway
</syntaxhighlight>
}}
===Трансляция запросов===
Важно не забыть повесить NAT на внешний интерфейс, чтобы с VPN интерфейса можно было выходить в интернет. По сути активировать в терминах Windows - InternetConnectionSharing
Добавил '''SNAT''' (т.к. на сервере белый постоянный IP)  на внешний интерфейс сервера, чтобы трафик из '''tun''' мог уходить в реальный '''eth0''' сервера.
Для этого  стандартно разрешаем редиректы в системе
{{root|echo 1 > /proc/sys/net/ipv4/ip_forward}}
{{root|nano /etc/sysctl.conf}}
{{File|/etc/sysctl.conf|
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
net.ipv4.ip_forward = 1
</syntaxhighlight>
}}
Далее ставим пакет специфичный для ubuntu/Debian, который поможет сохранять настройки Iptables после перезагрузки системы
{{root|apt-get install iptables-persistent}}
Добавляем правило IPtables
{{root|iptables -t nat -A POSTROUTING -o iFACE -j SNAT --to-source IP}}
где
iFACE это внешний интерфейс сервера
IP - его постоянный белый IP
Будет типа
{{root|iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4}}
Сохраняем настройки IPtables
{{root|netfilter-persistent save}}
Посмтреть добавленное правило можно как всегда:
{{root|iptables-save}}
===Автозапуск OpenVPN===
Всё делается аналогично [[Armbian_Debian_OpenVPN]]




[[Category:Index]]
[[Category:Index]]
[[Category:Linux]]
[[Category:Linux]]

Текущая версия на 20:18, 14 августа 2024

Настройка своего частного VPN сервера для преодоления блокировок в интернете.

Нужно взять в аренду VPS у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux.

Для удобства я поставил себе ifconfig

apt-get install net-tools

Далее на голую машинку нужно поставить OpenVPN

apt install openvpn

Затем качаем Easy-RSA для создания PKI и генерации ключей для сервера и клиентов. Скачать можно вот тут Для установки Easy-RSA его достаточно просто распаковать в папку /usr/share/easy-rsa

Далее все настройки выполняются в рамках статьи OpenVPN_установка_и_настройка_сервера_под_Gentoo_linux

Note: Для удобства следует сменить подсеть на 10.8.1.0/24
Note: Так же следует заменить пустую группу на: group nogroup
File: /etc/openvpn/donikvpn.conf
# non default port to prevent worm attacks!
port 11194

#udp is a bit faster but tcp is more stable, choosing tcp
proto tcp

#creating network tunnel for IP pachets management. we don't need TAP here for ethernet's frames management
dev tun

#paths to our certificates, private keys and Diffie Hellman params file
ca privnet/ca.crt
cert privnet/vpnserver.crt
key privnet/vpnserver.key
dh privnet/dh.pem

#encryption algorythm
data-ciphers AES-256-GCM:AES-256-CBC

#config VPN subnet as 10.8.1.0/24
server 10.8.1.0 255.255.255.0

#give clients same IPs if it's free when client connected respecting ipp.txt.
#zero at the end means don't recreate it automaticly.
ifconfig-pool-persist ipp.txt 0

#ping clients every 10 seconds and if no reply was recivied in 120 seconds then restart tunnel
keepalive 10 120

#Disable trafic compression for security reasons
allow-compression no

#what user and what group will be used to run openvpn service (not priviliged user used here)
user nobody
group nogroup

#not reread key files after tunnel restarts
persist-key
#don't do anything to tun device after restarting openvpn
persist-tun

#file with clients that established connection at this moment
status openvpn-status.log
#set log verbose level to 3 out of 11
verb 3
#don't rewrite log file - only append at the end of file
log-append /var/log/openvpn.log
#allow client-to-client connections throught our server
client-to-client

У клиента важно, чтобы была строчка добавляющая маршруты в туннель

File: CLIENT.CONF
#execute routing commands to cause all outgoing traffic to be redirected over the VPN
redirect-gateway

Трансляция запросов

Важно не забыть повесить NAT на внешний интерфейс, чтобы с VPN интерфейса можно было выходить в интернет. По сути активировать в терминах Windows - InternetConnectionSharing

Добавил SNAT (т.к. на сервере белый постоянный IP) на внешний интерфейс сервера, чтобы трафик из tun мог уходить в реальный eth0 сервера.

Для этого стандартно разрешаем редиректы в системе

echo 1 > /proc/sys/net/ipv4/ip_forward
nano /etc/sysctl.conf
File: /etc/sysctl.conf
net.ipv4.ip_forward = 1

Далее ставим пакет специфичный для ubuntu/Debian, который поможет сохранять настройки Iptables после перезагрузки системы

apt-get install iptables-persistent

Добавляем правило IPtables

iptables -t nat -A POSTROUTING -o iFACE -j SNAT --to-source IP

где iFACE это внешний интерфейс сервера IP - его постоянный белый IP

Будет типа

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4

Сохраняем настройки IPtables

netfilter-persistent save

Посмтреть добавленное правило можно как всегда:

iptables-save

Автозапуск OpenVPN

Всё делается аналогично Armbian_Debian_OpenVPN