OpenVPN как прокси сервер под Ubuntu linux: различия между версиями
ALEX (обсуждение | вклад) (Новая страница: « Category:Index Category:Linux») |
ALEX (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Настройка своего частного VPN сервера для преодоления блокировок в интернете. | |||
Нужно взять в аренду VPS у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux. | |||
Далее на голую машинку нужно поставить 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 | |||
cipher 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 | |||
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 | |||
#enable trafic compression via lzo algorithm | |||
comp-lzo yes | |||
#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> | |||
}} | |||
===Трансляция запросов=== | |||
Не уверен на счёт необходимости этой настройки... | |||
Добавил SNAT на внешний интерфейс сервера, чтобы трафик из 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}} | |||
Версия 14:03, 18 апреля 2022
Настройка своего частного VPN сервера для преодоления блокировок в интернете.
Нужно взять в аренду VPS у любого хостинг провайдера, услуги которого содержат возможность создания виртуального сервера где-то за рубежом (на площадках в других странах). Предполагается, что на машинке будет развёрнута Ubuntu linux.
Далее на голую машинку нужно поставить 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
cipher 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
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
#enable trafic compression via lzo algorithm
comp-lzo yes
#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
Трансляция запросов
Не уверен на счёт необходимости этой настройки...
Добавил SNAT на внешний интерфейс сервера, чтобы трафик из tun мог уходить в реальный eth0 сервера.
Для этого стандартно разрешаем редиректы в системе
net.ipv4.ip_forward = 1
Далее ставим пакет специфичный для ubuntu/Debian, который поможет сохранять настройки Iptables после перезагрузки системы
Добавляем правило IPtables
где iFACE это внешний интерфейс сервера IP - его постоянный белый IP
Будет типа
Сохраняем настройки IPtables
Посмтреть добавленное правило можно как всегда: