Как подключаться к OpenVPN через прокси или Tor. Обход блокировки OpenVPN в Египте +13
Как подключаться к OpenVPN через прокси или Tor. Обход блокировки OpenVPN в Египте +13
,,Рекомендация: подборка платных и бесплатных курсов информационной безопасности -Во время поездки в отпуск в Египет я приобрел сим карту местного оператора и решил посмотреть как быстро будет (по сравнению с традиционно медленным wifi отеля) работать интернет включая подключение к нашей внутренней инфраструктуре.
Поскольку власти Египта используют DPI для блокирования VPN стандартный OpenVPN не работает, так как блокируются авторизационные пакеты как по tcp, так и по UDP.
Для подключения к VPN мы используем OpenVPN работающий поверх UDP и в некоторых случаях TCP. Конфигурация практически одинаковая, за исключением диапазонов IP адресов.
Поскольку OpenVPN является основным транспортом для меня я не смотрел на другие VPN решения.
Настройки для тестирования
Для тестирования скорости был использован iperf со стандартными настройками. Под debian и ubuntu он устанавливается пакетом iperf
#Установка
sudo apt install iperf
#Запуск
iperf -s
Модификации конфигурации openvpn конфига для клиента
Для соединений без SOCKS5 были изменены следующие параметры:
;3444 - порт на котором находится выход туннеля
remote 127.0.0.1 3443 tcp
; VPN_SERVER - адрес VPN сервера, так что трафик на него будет идти напрямую
route VPN_SERVER_IP 255.255.255.255 net_gateway
Для соединений с SOCKS5 были изменены следующие строки:
socks-proxy-retry
; 10194 - порт на котором socks сервер слушает соединения
socks-proxy 127.0.0.1 10194
; VPN_SERVER - адрес VPN сервера, так что трафик на него будет идти напрямую
route VPN_SERVER_IP 255.255.255.255 net_gateway
Софт для обхода блокировок
Были рассмотрены следующие пакеты сокрытия openvpn:
ssh tunnel
obfsproxy
stunnel
shadowsocks
SSH Tunnel
Является самым простым методом и работает по принципу заворачивания траффика в через SSH
ssh -L 1443:127.0.0.1:1443 VPN_SERVER
obfsproxy
Является частью TOR project, работает как SOCKS5 прокси и обфусцирует все пакеты внутри.
Установка требует python 2.X ветки, так как пакет не обновлен еще.
pip install obfsproxy
На сервере необходимо запустить серверную часть:
obfsproxy --log-file=obfsproxy.log --log-min-severity=info obfs2 --dest=127.0.0.1:1443 --shared-secret=SOMESHAREDSECRET123 server 0.0.0.0:21194
А на клиенте часть к которой будет подключаться OpenVPN
obfsproxy --log-file=obfsproxy.log --log-min-severity=info obfs2 --shared-secret= SOMESHAREDSECRET123 socks 127.0.0.1:10194
stunnel
Инструмент общего назначения предназначенный для заворота любого вида траффика в SSL туннель, поддерживает множественные эндпоинты.
Для установки под debian и ubuntu надо установить пакет stunnel:
sudo apt install stunnel4
На сервере необходимо создать файл конфигурации stunnel.conf в директории /etc/stunnel4/ cсо следующим содержимым:
pid = /var/run/stunnel4/stunnel.pid
output = /var/log/stunnel4/stunnel.log
setuid = stunnel4
setgid = stunnel4
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
Сертификаты могут быть как самоподписанные так и от letsencrypt
На клиенте надо создать файл клиента со следующим содержимым:
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
shadowsocks
Для установки необходимо поставить пакет shadowsocks-libev
sudo apt install shadowsocks-libev
Конфигурационный файл /etc/shadowsocks-libev/config.json для сервера надо привести к следующему виду:
{
"server":,
"mode":"tcp_only",
"server_port":7433,
"local_port":8043,
"password":"SOME_BIG_RANDOM_PASSWORD",
"timeout":60,
"method":"chacha20-ietf-poly1305"
}
Для клиента я на MacOS использовал ShadowsocksX-NG
Результаты тестирования
Для тестирования iperf был размещен на том-же сервере что и OpenVPN.
During my vacation in Egypt, I purchased a local operator's SIM card and decided to test how quickly the internet would work, including connecting to our internal infrastructure, compared to the traditional slow hotel Wi-Fi.
The Egyptian authorities use DPI (Deep Packet Inspection) to block VPNs, making standard OpenVPN connections impossible, as authentication packets are blocked both over TCP and UDP.
Since OpenVPN is our primary transport, I didn't consider other VPN solutions. For testing speed, I used iperf
with standard settings. On Debian and Ubuntu, it's installed as a package.
Configuring OpenVPN
For connections without SOCKS5, I modified the following parameters:
server
toserver-udp
proto
toudp
For connections with SOCKS5, I modified the following lines:
socks5
tosocks5://localhost:9050
Packages for OpenVPN
I explored the following OpenVPN packages:
- ssh tunnel: The simplest method, working by wrapping traffic through SSH
- obfsproxy: Part of the TOR project, working as a SOCKS5 proxy and obscuring all packets inside
- stunnel: A general-purpose tool for wrapping any type of traffic in an SSL tunnel, supporting multiple endpoints
- shadowsocks: A lightweight, fast, and secure VPN protocol
ssh tunnel is the most straightforward method and works by wrapping traffic through SSH.
obfsproxy is part of the TOR project and works as a SOCKS5 proxy, obscuring all packets inside. Installation requires Python 2.X, as the package has not been updated yet.
On the server, you need to start the server part:
obfsproxy -s -l 9050
And on the client part, which will connect to OpenVPN:obfsproxy -c 127.0.0.1:9050
OpenVPN as PROXY. Как заставить OpenVPN использовать прокси?
Добрый вечер,имею сервер VPN на Ubuntu 20.10, все поднятно авто скриптом () - работает отлично! Для обычного ВПН использовал именно этот скрипт более двух лет. Сейчас появилась необходимость заставить VPN сервер гнать трафик через мои прокси HTTP( могу SOCKS5 ), так вот, нашел что-то в гугле, вписал свой прокси - но ВПН перестал скрывать айпи,просто существует тунель, вернул на вторую версию конфиг - тоже самое что обычный ВПН,нету IP прокси на выходе.
VPN over PROXY. Теория: VPN - PROXY - RDP
Расставим акценты. Посреднические услуги по перенаправлению трафика бывают платными и бесплатными. Платные прокси сильно отличаются от бесплатных, в то время как разница между платным VPN и бесплатным на уровне погрешности. RDP - это удалённый рабочий стол, который в бесплатном виде практически не встречается. Из-за таких ограничений есть некоторые особенности использования. Экономика должна быть экономной и платить нет никакого желания.
Proxy - удаленное устройство с адресом в интернете, к которому вы подключаетесь, пряча свое местоположение. Самый простой и распространенный способ маскировки и обмана. Из плюсов - огромнейшее распространение и доступность. Из минусов - минимальная защита от перехвата трафика и низкая скорость работы. В свободном доступе чаще всего попадаются в виде взломанных устройств, использованных для DDoS атак. Безопасны для обычного серфинга. Крайне не рекомендуется для совершения платежей онлайн.
VPN - специально настроенные устройства с кучей вариантов защиты трафика. Распространены в сотни раз меньше первого варианта. В подавляющем числе выступают как способ заработка для третьих лиц. Из плюсов - в настройках сервера используется шифрование. Хорошая скорость. Из минусов - самые известные сервисы находятся в черных списках "по обходу блокировок".
Удаленный рабочий стол - идеальное решение. Вы контролируете все этапы передачи трафика. Минус - проблема с оплатой российскими карточками.
В своей практике использовал все три варианта. Каждый хорош в своей области.
OpenVPN over https. OpenVPN Configuration over Port 443 on Ubuntu Linux
OpenVPN provides a secure and encrypted VPN tunnel across public network. Unlike PPTP and L2TP VPN Services which can be blocked, OpenVPN can highly be customized and even can be run over so popular TCP Port 443. So, OpenVPN cannot easily be blocked. OpenVPN uses SSL/TLS Certificates. So, OpenVPN Tunnel is a trusted tunnel to send and receive data across public network.
OpenVPN Server can easily install on Ubuntu Server. Installing OpenVPN Server on Ubuntu Server, we can connect Windows, Linux, MacOS or MikroTik RouterOS as OpenVPN client and can transmit data securely over public network.
The goal of this article is to configure OpenVPN Server over TCP or UDP port 443 and then connect Windows, Linux, RouterOS, MacOS and Android OpenVPN client for transmitting data securely over public network.
Installing OpenVPN Server on Ubuntu Server 20.04
OpenVPN Server installation and configuration on Ubuntu Server is not so difficult but we have to have UpToDate Ubuntu Server Installed. If you have Ubuntu Server installed before, issue the following command to update your Ubuntu Server.
$ sudo apt update
$ sudo apt upgrade
We also should have proper network configuration in Ubuntu Server . To access OpenVPN Server globally, we have to have Public IP address but for demo purpose I am using Private IP address. But it will not affect our configuration. Just replace your Public IP address with my Private IP address. There will be no issue logically.
To show configured IP address, issue the following command and remember or write-down the IP address.
$ ifconfig
ens160: flags=4163
inet 172.22.2.100 netmask 255.255.255.0 broadcast 172.22.2.255
inet6 fe80::250:56ff:fe9d:d9fe prefixlen 64 scopeid 0x20
ether 00:50:56:9d:d9:fe txqueuelen 1000 (Ethernet)
RX packets 13748273 bytes 2464567366 (2.4 GB)
RX errors 0 dropped 20681 overruns 0 frame 0
TX packets 58393 bytes 4758690 (4.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
The above command is showing that my IP address is 172.22.2.100 . So, you find out your IP address and write-down it for upcoming configuration.
For OpenVPN configuration we will use a GitHub script which will help to install and configure OpenVPN Server within five minutes. So, issue the following command to download GitHub script in your Server Machine.
Note: if find that wget utility is not installed in your system, install it first and then run the above command.
The script file is now in your working directory but before run the script we need to provide execute permission. So, issue the following command to provide execute permission.
$ sudo chmod +x openvpn-install.sh
The script is now executable and ready to run. So, issue the following command to run the script.
$ sudo bash openvpn-install.sh
The above command will ask the following configuration information. Put that information according to your need.
- Port: OpenVPN listening port. Default is 1194 but we will use 443.
- DNS Servers: DNS Servers for the clients. Default is current system resolvers but I am using Google’s DNS Server which is safe.
- First Client: First client name. A client configuration file for this client will be generated. We will download that generated file and upload for client configuration. As our first client will be a Windows machine, I am naming it as windows but you can name it whatever you like.
OpenVPN script is now ready to install and ask to press any key to continue. So, press any key to continue OpenVPN Server installation on Ubuntu Server.
Within minute the OpenVPN Server will be installed and a client configuration file for the given name will be generated in /root/ directory.
OpenVPN Server Administration
The default OpenVPN Server instance is Server and its configuration file is /etc/openvpn/server/server.conf . There is no need to change the default configuration but if require we can change the configuration from this file.
If you change configuration file or need to restart the OpenVPN Server, issue the following command.
$ sudo systemctl restart openvpn-server@server.service
If you need to stop the OpenVPN Server, issue the following stop command.
$ sudo systemctl stop openvpn-server@server.service
And to start the OpenVPN Server, issue the start command.
$ sudo systemctl start openvpn-server@server.service
Similarly we can show the OpenVPN Server status with the status command.