OpenVPN как прокси сервер под Ubuntu linux: различия между версиями
ALEX (обсуждение | вклад) |
ALEX (обсуждение | вклад) |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 2: | Строка 2: | ||
Нужно взять в аренду '''VPS''' у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux. | Нужно взять в аренду '''VPS''' у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux. | ||
Для удобства я поставил себе '''ifconfig''' | |||
{{root|apt-get install net-tools}} | |||
Далее на голую машинку нужно поставить OpenVPN | Далее на голую машинку нужно поставить OpenVPN | ||
Строка 7: | Строка 11: | ||
{{root|apt install openvpn}} | {{root|apt install openvpn}} | ||
Затем качаем '''Easy-RSA''' для создания '''PKI''' и генерации ключей для сервера и клиентов. Скачать можно вот | Затем качаем '''Easy-RSA''' для создания '''PKI''' и генерации ключей для сервера и клиентов. Скачать можно вот [https://github.com/OpenVPN/easy-rsa тут] | ||
Для установки '''Easy-RSA''' его достаточно просто распаковать в папку {{path|/usr/share/easy-rsa}} | Для установки '''Easy-RSA''' его достаточно просто распаковать в папку {{path|/usr/share/easy-rsa}} | ||
Далее все настройки выполняются в рамках статьи [[OpenVPN_установка_и_настройка_сервера_под_Gentoo_linux]] | Далее все настройки выполняются в рамках статьи [[OpenVPN_установка_и_настройка_сервера_под_Gentoo_linux]] | ||
{{note|Для удобства следует сменить подсеть на 10.8.1.0/24}} | {{note|Для удобства следует сменить подсеть на '''10.8.1.0/24'''}} | ||
{{note|Так же следует заменить пустую группу на: group nogroup}} | {{note|Так же следует заменить пустую группу на: '''group nogroup'''}} | ||
{{File|/etc/openvpn/donikvpn.conf| | {{File|/etc/openvpn/donikvpn.conf| | ||
Строка 20: | Строка 24: | ||
# non default port to prevent worm attacks! | # non default port to prevent worm attacks! | ||
port 11194 | port 11194 | ||
#udp is a bit faster but tcp is more stable, choosing tcp | #udp is a bit faster but tcp is more stable, choosing tcp | ||
proto tcp | proto tcp | ||
#creating network tunnel for IP pachets management. we don't need TAP here for ethernet's frames management | #creating network tunnel for IP pachets management. we don't need TAP here for ethernet's frames management | ||
dev tun | dev tun | ||
Строка 32: | Строка 38: | ||
#encryption algorythm | #encryption algorythm | ||
data-ciphers AES-256-GCM:AES-256-CBC | |||
#config VPN subnet as 10.8.1.0/24 | #config VPN subnet as 10.8.1.0/24 | ||
server 10.8.1.0 255.255.255.0 | server 10.8.1.0 255.255.255.0 | ||
#give clients same IPs if it's free when client connected | #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 | ifconfig-pool-persist ipp.txt 0 | ||
#ping clients every 10 seconds and if no reply was recivied in 120 seconds then restart tunnel | #ping clients every 10 seconds and if no reply was recivied in 120 seconds then restart tunnel | ||
keepalive 10 120 | 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) | #what user and what group will be used to run openvpn service (not priviliged user used here) | ||
user nobody | user nobody | ||
group nogroup | group nogroup | ||
#not reread key files after tunnel restarts | #not reread key files after tunnel restarts | ||
persist-key | persist-key | ||
#don't do anything to tun device after restarting openvpn | #don't do anything to tun device after restarting openvpn | ||
persist-tun | persist-tun | ||
#file with clients that established connection at this moment | #file with clients that established connection at this moment | ||
status openvpn-status.log | status openvpn-status.log | ||
Строка 72: | Строка 84: | ||
===Трансляция запросов=== | ===Трансляция запросов=== | ||
Важно не забыть повесить NAT на внешний интерфейс, чтобы с VPN интерфейса можно было выходить в интернет. По сути активировать в терминах Windows - InternetConnectionSharing | |||
Добавил '''SNAT''' (т.к. на сервере белый постоянный IP) на внешний интерфейс сервера, чтобы трафик из '''tun''' мог уходить в реальный '''eth0''' сервера. | Добавил '''SNAT''' (т.к. на сервере белый постоянный IP) на внешний интерфейс сервера, чтобы трафик из '''tun''' мог уходить в реальный '''eth0''' сервера. | ||
Строка 111: | Строка 123: | ||
{{root|iptables-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
Далее на голую машинку нужно поставить OpenVPN
Затем качаем Easy-RSA для создания PKI и генерации ключей для сервера и клиентов. Скачать можно вот тут Для установки Easy-RSA его достаточно просто распаковать в папку /usr/share/easy-rsa
Далее все настройки выполняются в рамках статьи OpenVPN_установка_и_настройка_сервера_под_Gentoo_linux
# 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
У клиента важно, чтобы была строчка добавляющая маршруты в туннель
#execute routing commands to cause all outgoing traffic to be redirected over the VPN
redirect-gateway
Трансляция запросов
Важно не забыть повесить NAT на внешний интерфейс, чтобы с VPN интерфейса можно было выходить в интернет. По сути активировать в терминах Windows - InternetConnectionSharing
Добавил SNAT (т.к. на сервере белый постоянный IP) на внешний интерфейс сервера, чтобы трафик из tun мог уходить в реальный eth0 сервера.
Для этого стандартно разрешаем редиректы в системе
net.ipv4.ip_forward = 1
Далее ставим пакет специфичный для ubuntu/Debian, который поможет сохранять настройки Iptables после перезагрузки системы
Добавляем правило IPtables
где iFACE это внешний интерфейс сервера IP - его постоянный белый IP
Будет типа
Сохраняем настройки IPtables
Посмтреть добавленное правило можно как всегда:
Автозапуск OpenVPN
Всё делается аналогично Armbian_Debian_OpenVPN