Прокси IPv6 с ротацией по запросу
Данная инструкция является логическим продолжением настройки прокси рассмотренной в этом посте
1. Подготовка конфигурационного файла 3proxy
Добавляем в конфигурационный файл 3proxy параметр monitor который «на лету» будет отслеживать изменения в файле конфигурации 3proxy. Это требуется для того что бы не перезагружать 3proxy после каждого изменения исходящего IPv6 адреса.
В итоге конфигурационный файл 3proxy должен иметь вид:
2. Установка и настройка Apache+PHP
выполняем команду:
Это установит вебсервер Apache и PHP.
В файле конфигурации /etc/apache2/mods-available/dir.conf вносим изменения в строке DirectoryIndex что бы первым выполнялись файлы index.php
Итоговый вид:
Выполняем рестарт Apache
3. Создаем bash скрипт генерации нового IPv6 адреса и его замены для указанного порта.
Данный скрипт помещаем в корневую директорию вебсервера Apache, путь /var/www/html/change.sh
Данный скрипт генерирует адреса для сети IPv6 /64, внеся изменения в функцию rnd_ip_block можно настроить генерацию ipv6 адресов для сетей /48, /36, /32, /29
4. Создаем PHP скрипт выполнения запросов на смену IPv6 адреса для указанного порта.
Данный php скрип так же размещается в корне вебсервера, например /var/www/html/index.php
5. Проверяем работу прокси со сменой ipv6 по запросу.
Делать запросы на ротацию ipv6 на указанном порту можно в адресной строке браузера или с помощью curl.
В адресной строке выполняем запрос:
Итог:
При каждом обновлении страницы внешний IPv6 будет меняться.
С помощью curl запроса:
Вывод:
Первой командой делаем запрос на смену IPv6 адреса, второй проверяем изменение внешнего IPv6.
PS. Что бы все работало нужно поставить верные права для /home командой
1. Подготовка конфигурационного файла 3proxy
Добавляем в конфигурационный файл 3proxy параметр monitor который «на лету» будет отслеживать изменения в файле конфигурации 3proxy. Это требуется для того что бы не перезагружать 3proxy после каждого изменения исходящего IPv6 адреса.
В итоге конфигурационный файл 3proxy должен иметь вид:
daemon
maxconn 20000
nserver 127.0.0.1
nserver 8.8.8.8
nserver 1.1.1.1
nscache 65536
nscache6 65536
timeouts 1 5 30 60 180 1800 15 60
setgid 65534
setuid 65534
pidfile /home/3proxy/3proxy.pid
monitor /home/3proxy/3proxy.cfg
flush
auth strong
users admin:CL:pzfdkdjbxtx
allow admin
proxy -6 -s0 -n -a -p30000 -i185.246.116.100 -e2a07:14c0:1:041e:b9dd:67f7:6e14:477d
proxy -6 -s0 -n -a -p30001 -i185.246.116.100 -e2a07:14c0:1:041e:918b:f264:e3bc:2731
proxy -6 -s0 -n -a -p30002 -i185.246.116.100 -e2a07:14c0:1:041e:ab62:ba84:cd43:1877
proxy -6 -s0 -n -a -p30003 -i185.246.116.100 -e2a07:14c0:1:041e:083f:7bca:32d5:22fa
proxy -6 -s0 -n -a -p30004 -i185.246.116.100 -e2a07:14c0:1:041e:0fcd:64c3:2834:57c2
proxy -6 -s0 -n -a -p30005 -i185.246.116.100 -e2a07:14c0:1:041e:e8e5:e580:21a0:4330
proxy -6 -s0 -n -a -p30006 -i185.246.116.100 -e2a07:14c0:1:041e:09ef:6481:f748:7d56
proxy -6 -s0 -n -a -p30007 -i185.246.116.100 -e2a07:14c0:1:041e:ef0e:5a91:8b4d:4331
proxy -6 -s0 -n -a -p30008 -i185.246.116.100 -e2a07:14c0:1:041e:9933:13ce:990f:9004
proxy -6 -s0 -n -a -p30009 -i185.246.116.100 -e2a07:14c0:1:041e:8fe6:f169:9329:73ea
2. Установка и настройка Apache+PHP
выполняем команду:
apt install php -y
Это установит вебсервер Apache и PHP.
В файле конфигурации /etc/apache2/mods-available/dir.conf вносим изменения в строке DirectoryIndex что бы первым выполнялись файлы index.php
Итоговый вид:
<IfModule mod_dir.c>
DirectoryIndex index.php index.cgi index.pl index.html index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Выполняем рестарт Apache
/etc/init.d/apache2 restart
3. Создаем bash скрипт генерации нового IPv6 адреса и его замены для указанного порта.
Данный скрипт помещаем в корневую директорию вебсервера Apache, путь /var/www/html/change.sh
#!/usr/local/bin/bash
array=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
network=2a07:14c0:1:041e # your ipv6 network prefix
rnd_ip_block ()
{
a=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
b=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
c=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
d=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
echo $network:$a:$b:$c:$d
}
ex_ip=$(rnd_ip_block)
echo $ex_ip
echo $1
sed -i "/-p$1/c\\proxy -6 -s0 -n -a -p$1 -i185.246.116.100 -e$ex_ip" /home/3proxy/3proxy.cfg
((port+=1))
Данный скрипт генерирует адреса для сети IPv6 /64, внеся изменения в функцию rnd_ip_block можно настроить генерацию ipv6 адресов для сетей /48, /36, /32, /29
4. Создаем PHP скрипт выполнения запросов на смену IPv6 адреса для указанного порта.
Данный php скрип так же размещается в корне вебсервера, например /var/www/html/index.php
<?php
// Задайте пароль для доступа к скрипту.
$expectedPassword = 'pzfdkdjbxtx';
if (isset($_GET['password'])) {
$enteredPassword = $_GET['password'];
if ($enteredPassword === $expectedPassword) {
echo "Доступ разрешен.";
if (isset($_GET['port']) ) {
$port = $_GET['port'];
echo "Порт: $port";
$bashScript = "/var/www/html/change.sh"; // Путь к вашему Bash скрипту
// Используем escapeshellarg() для безопасной передачи аргумента
$escapedArgument = escapeshellarg($port);
// Выполняем скрипт с передачей аргумента
$command = "bash $bashScript $escapedArgument";
$output = shell_exec($command);
// Выводим результат
echo "<pre>$output</pre>";
} else {
echo "Не все параметры переданы в адресной строке.";
}
} else {
echo "Неверный пароль. Доступ запрещен.";
}
} else {
echo "Пароль не передан в адресной строке.";
}
?>
5. Проверяем работу прокси со сменой ipv6 по запросу.
Делать запросы на ротацию ipv6 на указанном порту можно в адресной строке браузера или с помощью curl.
В адресной строке выполняем запрос:
http://185.246.116.100/?password=pzfdkdjbxtx&port=30000
Итог:
При каждом обновлении страницы внешний IPv6 будет меняться.
С помощью curl запроса:
curl -X GET http://185.246.116.100/?"password=pzfdkdjbxtx&port=30000"
Вывод:
C:\Windows\System32>curl -X GET http://185.246.116.100/?"password=pzfdkdjbxtx&port=30000"
Доступ разрешен.Порт: 30000<pre>2a07:14c0:1:041e:a0fb:26c4:0740:6a4c
30000
</pre>
C:\Windows\System32>curl --proxy 185.246.116.100:30000 -U admin:pzfdkdjbxtx https://blog.vpsville.ru/uploads/MyIP.php
2a07:14c0:1:41e:a0fb:26c4:740:6a4c
C:\Windows\System32>curl -X GET http://185.246.116.100/?"password=pzfdkdjbxtx&port=30000"
Доступ разрешен.Порт: 30000<pre>2a07:14c0:1:041e:7bdc:815c:ad0a:1bd3
30000
</pre>
C:\Windows\System32>curl --proxy 185.246.116.100:30000 -U admin:pzfdkdjbxtx https://blog.vpsville.ru/uploads/MyIP.php
2a07:14c0:1:41e:7bdc:815c:ad0a:1bd3
Первой командой делаем запрос на смену IPv6 адреса, второй проверяем изменение внешнего IPv6.
PS. Что бы все работало нужно поставить верные права для /home командой
chmod 777 -R /home
- 0
- 09 августа 2023, 11:17
- GreatAlex
Комментарии (0)
RSS свернуть / развернуть