Мобильные прокси.

Автор: | 15.10.2020

Иногда нужно сменить внешний ip адрес, например чтобы обойти антифрод систему Яндекса или Гугла, самый простой и надежный способ это пустить трафик через оператора сотовой связи. Дело в том , что они часто меняются и на них сидит тьма народу, такие адреса как правило не банят.

Дано.
Olimp: Роутер Zyxel keenetic Viva . Версия ПО 2.12.C.1.0-6 оф.не поддерживается, но работает исправно.
Black: Мобила на andriod Redmi 5, root не нужен, Servers Ultimate Pro версия: 7.1.16 от Ice Cold Apps ,бесплатная версия работает 7 дней.
Green: Пк. на Windows , Firefox и OpenVPN 2.4.6-I602

Задача.
Пустить трафик браузера через 3G сеть опсоса.

Поехали :)
Качаем на винду и устанавливаем OpenVPN.
Cоздаем ключи и сертификаты на Windows для подключения к серверу Olimp двух клиентов Black(андрофон) и Green(WinPC).

Заходим C:\Program Files\OpenVPN\easy-rsa, вызываем контекстное меню с зажатым shift-ом, выполняем init-config.bat


В папке появится файл vars.bat.
Далее открываем редактором файл openssl-1.0.0.cnf
Находим строчку default_days 365 и заменяем число 365 на 36500 или свое. Тем самым мы увеличим время жизни наших сертификатов на 100 лет.
Сохраняем и закрываем.

указать путь до файла openssl.exe в файле vars.bat:

1
set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"

Создайте новые вспомогательные файлы index.txt и serial:

1
2
vars
clean-all

Создайте закрытый ключ и сертификат вашего удостоверяющего центра, выполнив:

1
2
vars
build-ca

в папке C:\Program Files\OpenVPN\easy-rsa\keys появятся сгенерированные файлы ключа ca.key и сертификата ca.cert вашего удостоверяющего центра.

Создайте файл Диффи-Хелмана:

1
2
vars
build-dh

в папке C:\Program Files\OpenVPN\easy-rsa\keys появится файл dh4096.pem

Создайте закрытый ключ и сертификат для OpenVPN TLS-сервера (Olimp), выполнив:

1
2
vars
build-key-server Keenetic-1

При этом, когда скрипт запросит CommonName (CN), введите имя сервера, в нашем примере – Olimp. А в конце дважды подтвердите (y), что подписываете сертификат.

Создайте закрытый ключ, запрос PEM и сертификат для первого OpenVPN TLS-клиента (Black), выполнив:

1
2
vars
build-key Keenetic-2

Когда скрипт запросит CommonName (CN), введите имя первого клиента – Black. Дважды подтвердите (y), что подписываете сертификат.
То же самое проделать для Green.

Создайте ключ HMAC для дополнительной защиты от DoS-атак и флуда, выполнив:

1
2
vars
openvpn.exe --genkey --secret keys\ta.key

Мы получили следующие файлы:

ca.crt – сертификат удостоверяющего центра
dh4096.pem – файл Диффи-Хелмана
ta.key — ключ HMAC для защиты от DoS-атак и флуда
Olimp.crt – сертификат сервера OpenVPN
Olimp.key – закрытый ключ сервера OpenVPN
Black.crt — сертификат андрофона
Black.key – закрытый ключ андрофона
Green.crt — сертификат Win клиента
Green.key – закрытый ключ Win клиента

На их основе создаем 3 конфиг файла, кодировка Unix\UTF-8
Для этого используем 3 шаблона, где заменим на сервере 5 и на клиентах по 6 секций.

Olimp »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
port 1194
proto udp
dev tun
 
<ca>
-----BEGIN CERTIFICATE-----
Вставьте тело сертификата удостоверяющего центра из файла ca.crt
-----END CERTIFICATE-----
</ca>
 
<cert>
-----BEGIN CERTIFICATE-----
Вставить тело сертификата сервера OpenVPN из файла Olimp.crt
-----END CERTIFICATE-----
</cert>
 
<key>
-----BEGIN PRIVATE KEY-----
Вставить тело закрытытого ключа сервера OpenVPN из файла Olimp.key
-----END PRIVATE KEY-----
</key>
 
<dh>
-----BEGIN DH PARAMETERS-----
содержимое файла Диффи-Хелмана dh4096.pem 
-----END DH PARAMETERS-----
</dh>
 
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
 Вставьте содержимое файла ta.key, но не все...
-----END OpenVPN Static key V1-----
</tls-auth>
 
topology subnet
server 10.8.0.0 255.255.255.0
keepalive 10 120
key-direction 0
cipher AES-256-CBC
persist-key
persist-tun
verb 3
explicit-exit-notify 1

Black »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Белый адрес OpenVPN сервера, порт.
# Пример:remote 176.59.49.49 1194
# Добавьте строку с маршрутом в локальную сеть сервера:
# Пример:route 10.10.0.0 255.255.255.0
 
<ca>
-----BEGIN CERTIFICATE-----
Вставьте тело сертификата удостоверяющего центра из файла ca.crt
-----END CERTIFICATE-----
</ca>
 
<cert>
-----BEGIN CERTIFICATE-----
Вставить тело сертификата клиента из файла Black.crt
-----END CERTIFICATE-----
</cert>
 
<key>
-----BEGIN PRIVATE KEY-----
Вставьте тело закрытого ключа клиента из файла Black.key
-----END PRIVATE KEY-----
</key>
 
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
 Вставьте содержимое файла ta.key, но не все..
-----END OpenVPN Static key V1-----
</tls-auth>
 
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
key-direction 1
cipher AES-256-CBC
verb 3

Green »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Белый адрес OpenVPN сервера, порт.
# Пример:remote 176.59.49.49 1194
# Добавьте строку с маршрутом в локальную сеть сервера:
# Пример:route 10.10.0.0 255.255.255.0
 
<ca>
-----BEGIN CERTIFICATE-----
Вставьте тело сертификата удостоверяющего центра из файла ca.crt
-----END CERTIFICATE-----
</ca>
 
<cert>
-----BEGIN CERTIFICATE-----
Вставить тело сертификата клиента из файла Green.crt
-----END CERTIFICATE-----
</cert>
 
<key>
-----BEGIN PRIVATE KEY-----
Вставьте тело закрытого ключа клиента из файла Green.key
-----END PRIVATE KEY-----
</key>
 
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
 Вставьте содержимое файла ta.key, но не все..
-----END OpenVPN Static key V1-----
</tls-auth>
 
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
key-direction 1
cipher AES-256-CBC
verb 3

Что-бы разрешить трафик между интерфейсами Home и OpenVPN0 и использовать этот сервер для выхода в Интернет клиента,необходимо будет выполнить следующие команды,
на Keenetic-е через интерфейс командной строки (CLI) :

1
2
3
4
5
interface OpenVPN0 no ip global
interface OpenVPN0 security-level private
no isolate-private
ip nat OpenVPN0
system configuration save

Необходимо открыть порт для соединения OpenVPN, UDP 1194: