GoProxy — это высокопроизводительный HTTP-прокси, https-прокси, Socks5-прокси, SS-прокси, прокси-серверы WebSocket, tcp-прокси, udp-прокси, игровой щит, игровые прокси. Поддержка прямых прокси, обратных прокси, прозрачных прокси, интернет-прокси, https-прокси. балансировка нагрузки, балансировка нагрузки HTTP-прокси, балансировка нагрузки прокси-серверов Socks5, балансировка нагрузки сокет-прокси, балансировка нагрузки ss-прокси, сопоставление портов TCP/UDP, SSH транзит, зашифрованная передача TLS, преобразование протокола, DNS-прокси с защитой от загрязнения, аутентификация API, ограничение скорости, ограничение соединения, которые помогут вам открыть локальный сервер за NAT или брандмауэром для доступа в Интернет, чтобы вы или ваши посетители могли получить к нему доступ. прямо и легко.
ProxyAdmin — это мощная веб-консоль snail007/goproxy.
Руководство на этой странице применимо к последней версии goproxy. Другие версии могут быть неприменимы. Используйте команду в соответствии со своими инструкциями.
Нажмите, чтобы присоединиться к Telegram
Совет: Для всех операций требуются права root.
Бесплатная версия выполняет следующее:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
Коммерческая версия выполняет следующее:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
Установка завершена, каталог конфигурации — /etc/proxy. Для более подробной информации обратитесь к каталогу руководства выше, чтобы узнать больше о функциях, которые вы хотите использовать. Если установка не удалась или ваш виртуальный сервер не является 64-разрядной версией Linux. системы, для установки выполните полуавтоматические действия, описанные ниже:
Адрес загрузки: https://github.com/snail007/goproxy/releases/latest.
В качестве примера возьмем версию 7.9. Если у вас установлена последняя версия, используйте последнюю версию ссылки. Обратите внимание, что номер версии в ссылке для скачивания ниже — это номер последней версии.
Бесплатная версия выполняет следующее:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
Коммерческая версия выполняет следующее:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
Бесплатная версия выполняет это:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
Коммерческая версия выполняет следующее:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
обновление прокси-сервера использует зеркало для загрузки. Если в вашем обновлении есть ошибка с зеркалом, вы можете установить переменную среды UPDATE_MIRROR=false
Windows: set UPDATE_MIRROR=false
, затем proxy update
Linux: export UPDATE_MIRROR=false
, затем proxy update
proxy update
Принудительное обновление.
proxy update -f
Например, proxy
помещенный в c:gpproxy
.
c:
cd gp
proxy update
Принудительное обновление.
c:
cd gp
proxy update -f
Прокси лицензируется по лицензии GPLv3.
Официальная группа Telegram: goproxy
Автор этого проекта обнаружил, что большое количество разработчиков основывают проект для вторичной разработки или используют большое количество основного кода проекта без соблюдения соглашения GPLv3, что серьезно нарушает первоначальное намерение использовать соглашение об открытом исходном коде GPLv3. В этом проекте, учитывая эту ситуацию, проект принимает исходный код, в определенной степени задерживает стратегию выпуска, чтобы ограничить такое поведение, которое не уважает открытый исходный код и не уважает результаты труда других. буду продолжать обновлять итерации и продолжайте выпускать полную бинарную программу, предоставляющую вам мощные и удобные инструменты прокси. Если у вас есть индивидуальные бизнес-потребности, отправьте электронное письмо по адресу [email protected]
нажмите на меня, чтобы получить установку Linux
нажмите на меня, чтобы получить установку MacOS
нажмите на меня, чтобы получить установку Windows
нажмите на меня, чтобы получить установку Windows
В этом руководстве описаны функции, все из которых включены в коммерческую версию; в бесплатную версию расширенные функциональные параметры, такие как аутентификация, не включены;
Если вы столкнулись с некоторыми командами при использовании бесплатной версии для выполнения некоторых команд, приглашение, подобное следующему параметру xxx, не существует, что указывает на то, что этот параметр является функцией коммерческой версии.
err: unknown long flag '-a'
Сравнение функций бесплатной версии и коммерческой версии, подробные сведения о том, как приобрести и использовать коммерческую версию, нажмите здесь, чтобы просмотреть
Руководство по эксплуатации, система по умолчанию — Linux, программа — прокси, для всех операций требуются права root;
Если у вас Windows, используйте версию proxy.exe для Windows.
В следующем руководстве будет представлен метод использования через параметры командной строки, или вы можете получить параметры, прочитав файл конфигурации.
Конкретный формат заключается в указании файла конфигурации с помощью символа @, например: proxy @configfile.txt.
Формат файла configfile.txt таков: первая строка — это имя подкоманды, а вторая строка начинается с одного параметра в каждой строке.
Формат: parameter Parameter value
, параметр прямой записи без значения параметра, например: --nolog
Например, содержимое configfile.txt следующее:
Http
-t tcp
-p :33080
--forever
По умолчанию информация, выдаваемая журналом, не включает количество строк файла. В некоторых случаях для устранения неполадок программы можно быстро обнаружить проблему.
Вы можете использовать параметр --debug для вывода количества строк кода и миллисекунд.
По умолчанию журнал отображается прямо в консоли. Если вы хотите сохранить его в файл, вы можете использовать параметр --log.
Например: --log proxy.log, журнал будет выведен в proxy.log для облегчения устранения неполадок.
По умолчанию ведется журнал INFO и WARN, вы можете установить --warn
для вывода только журнала предупреждений.
Прокси-процесс http, tcp, udp взаимодействует с восходящим потоком. В целях безопасности мы используем зашифрованную связь. Конечно, мы можем отказаться от шифрования всей связи и восходящей связи в этом руководстве, а также файла сертификата. требуется.
Создайте самозаверяющий сертификат и файл ключа с помощью следующей команды.
proxy keygen -C proxy
Файл сертификата proxy.crt и файл ключа proxy.key будут созданы в текущем каталоге программы.
Используйте следующую команду для создания нового сертификата с использованием самозаверяющего сертификата proxy.crt и файла ключей proxy.key: goproxy.crt и goproxy.key.
proxy keygen -s -C proxy -c goproxy
Файл сертификата goproxy.crt и файл ключа goproxy.key будут созданы в текущем каталоге программы.
По умолчанию имя домена внутри сертификата является случайным и может быть указано с помощью параметра -n test.com
.
Больше использования: proxy keygen --help
.
После того как прокси запускается по умолчанию, вы не можете закрыть командную строку, если хотите, чтобы прокси продолжал работать.
Если вы хотите запустить прокси в фоновом режиме, командную строку можно закрыть, просто добавьте параметр --daemon в конце команды.
Например:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
Демон запускает параметр --forever, например: proxy http --forever
,
Прокси-сервер разветвит дочерний процесс, а затем будет контролировать его. Если дочерний процесс завершается ненормально, перезапустите дочерний процесс через 5 секунд.
Этот параметр сопоставляется с параметром фонового запуска --daemon и параметром журнала --log, что может гарантировать, что прокси-сервер всегда будет выполняться в фоновом режиме без случайного выхода.
И вы можете увидеть содержимое выходного журнала прокси через файл журнала.
Например: proxy http -p ":9090" --forever --log proxy.log --daemon
Когда VPS находится за устройством nat, IP-адрес сетевого интерфейса vps является IP-адресом интрасети. В это время вы можете использовать параметр -g, чтобы добавить IP-адрес внешней сети vps, чтобы предотвратить бесконечный цикл.
Предположим, что IP-адрес вашей внешней сети vps — 23.23.23.23. Следующая команда устанавливает 23.23.23.23 с параметром -g.
proxy http -g "23.23.23.23"
Прокси-сервер HTTP(S)SOCKS5SPS поддерживает балансировку нагрузки верхнего уровня и высокую доступность, а также можно использовать несколько восходящих параметров повторения-P.
Политика балансировки нагрузки поддерживает пять типов, которые можно указать параметром --lb-method
:
Roundrobin используется по очереди
Leastconn использует минимальное количество соединений
Наименьшее время использует наименьшее время соединения
Хэш использует фиксированный восходящий поток на основе адреса клиента.
Вес Выберите восходящий поток в соответствии с весом и количеством подключений каждого восходящего потока.
быстрый:
Интервал проверки балансировки нагрузки можно установить с помощью --lb-retrytime
в миллисекундах.
Тайм-аут соединения балансировки нагрузки можно установить с помощью --lb-timeout
в миллисекундах.
Если политикой балансировки нагрузки является вес, формат -P имеет следующий вид: 2.2.2.2: 3880?w=1, где 1 — это вес, а целое число больше 0.
Если в качестве политики балансировки нагрузки используется хэш, по умолчанию выбирается восходящий поток на основе адреса клиента. Вы можете выбрать восходящий поток, используя адрес назначения доступа --lb-hashtarget
.
У TCP-прокси нет параметра --lb-hashtarget
.
По умолчанию — балансировка нагрузки + режим высокой доступности. Если используется параметр --lb-onlyha
, используется только режим высокой доступности, то в соответствии со стратегией балансировки нагрузки выбирается узел, и этот узел будет использоваться до тех пор, пока он не будет использован. жив, то для использования будет выбран другой узел, таким образом зацикливаясь.
Если все узлы не активны, для использования будет выбран случайный узел.
Http(s)-агент, SPS-агент, проникновение в интранет, tcp-агент поддерживают соединение восходящих потоков через промежуточные сторонние агенты,
Параметры: --jumper, все форматы следующие:
http://username:password@host:port
http://host:port
https://username:password@host:port
https://host:port
socks5://username:password@host:port
socks5://host:port
socks5s://username:password@host:port
socks5s://host:port
ss://method:password@host:port
Http,socks5 представляет собой обычный прокси-сервер http иsocks5.
Https,socks5s представляет агенты http и socks5, защищенные tls.
Это http-прокси через TLS, носки через TLS.
Прокси-сервер socks/http(s)/sps поддерживает черные и белые списки доменных имен.
Используйте параметр --stop, чтобы указать файл черного списка доменных имен, тогда соединение будет разорвано, когда пользователь подключит эти домены в файле.
Укажите файл белого списка доменных имен с параметром --only, тогда соединение будет разрываться, когда пользователь подключается к домену, отличному от тех доменов, которые указаны в файле.
Если установлены оба --stop и --only, то будет работать только --only.
Формат файла черно-белого списка доменных имен следующий:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
Описание:
*
и , ?
*
любое количество символов, ?
представляет произвольный символ, 2. **.baidu.com
Соответствует независимо от того, сколько уровней имеют все суффиксы ..baidu.com`.
3. *.taobao.com
Соответствующий суффикс — это доменное имя третьего уровня .taobao.com
.
5. #
в начале комментария.
Socks/http(s)/sps proxy поддерживают черный список портов.
Используйте параметр --stop-port
, чтобы указать файл черного списка портов, тогда, когда пользователь подключается к портам в файле, соединение может быть установлено.
Формат содержимого файла черного списка портов следующий:
3306
22
Примечание:
#
являются комментариями.носков/http(s)/sps/tcp/udp/dns/мост проникновения в интранет/tbridge проникновения в интрасеть, поддержка черного и белого списка IP-адресов клиентов.
Используйте параметр --ip-deny, чтобы указать файл черного списка IP-адресов клиента, тогда соединение будет отключено, когда IP-адрес пользователя будет в этом файле.
Используйте параметр --ip-allow, чтобы указать файл белого списка IP-адресов клиента, тогда соединение будет разорвано, если IP-адрес пользователя отсутствует в файле.
Если установлены оба --ip-deny и --ip-allow, то будет работать только --ip-allow.
Формат файла черного и белого списка IP-адресов клиента следующий:
192.168.1.1
192.168.*.*
192.168.1?.*
Описание:
*
?
, *
представляет любое количество символов, ?
представляет произвольный символ. 2. #
в начале комментария.
В различных функциях прокси-сервера есть много мест для установки файла. Например: --blocked Указывает файл списка доменных имен, который передается непосредственно на верхний уровень. Значением параметра является путь к файлу.
Если параметр поддерживает файл загрузки протокола, путь к файлу может быть не только путем к файлу, но также:
а. Кодировка base64 в начале «base64://» указывает содержимое вышеуказанного файла, например: base64://ajfpoajsdfa=.
б. "str://" в начале английской запятой, например: str://xxx, yyy.
Файлы заблокированного, прямого, стопового, только прокси-сервера, Hosts, Rewriter.rules, Rewriter.rules, ip.allow, ip.deny поддерживают загрузку протокола.
ocks5spshttp прокси, параметр, который контролирует количество одновременных клиентских подключений: --max-conns-rate
, который контролирует максимальное количество клиентских подключений в секунду, по умолчанию: 20, 0 не ограничено.
«tcp/http/socks/sps» поддерживает прослушивание нескольких портов и портов диапазона. В нормальных условиях достаточно прослушивать один порт, но если вам нужно прослушивать несколько портов, поддерживается формат -p. есть: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, more Привязки могут отделяться запятыми.
proxy http -t tcp -p "0.0.0.0:38080"
Аргумент порта прослушивания -p
может быть:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
Используйте локальный порт 8090, предполагая, что восходящий HTTP-прокси — 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Мы также можем указать файл черного и белого списка доменного имени веб-сайта, по одному доменному имени в строке, правилом соответствия является самое правое совпадение, например: baidu.com, совпадение — .baidu.com , доменное имя из черного списка. переходит непосредственно к вышестоящему агенту, белый список. Доменное имя не передается вышестоящему агенту.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Примечание.
proxy.crt
иproxy.key
используемые вторичным прокси-сервером, должны совпадать с данными основного прокси-сервера.
HTTP-прокси уровня 1 (VPS, IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Вторичный HTTP-прокси (локальный Linux)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 8080 означает доступ к прокси-порту 38080 на VPS.
Вторичный HTTP-прокси (локальные окна)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Затем установите свою систему Windos, прокси, который должен пройти через прокси-интернет, программа - режим http, адрес: 127.0.0.1, порт: 8080, программа может выходить в Интернет через vps по зашифрованному каналу.
HTTP-прокси уровня 1 VPS_01, IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Вторичный HTTP-прокси VPS_02, IP: 33.33.33.33
proxy http -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
HTTP-прокси уровня 3 (локальный)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 8080 означает доступ к прокси-порту 38080 на основном HTTP-прокси.
Для протокола HTTP прокси-сервера мы можем выполнить базовую аутентификацию. Аутентифицированное имя пользователя и пароль можно указать в командной строке.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Для нескольких пользователей повторите параметр -a.
Его также можно поместить в файл в формате «имя пользователя:пароль», а затем указать с помощью -F.
proxy http -t tcp -p ":33080" -F auth-file.txt
Кроме того, прокси-сервер http(s) также интегрирует внешнюю аутентификацию HTTP API. Мы можем указать адрес интерфейса URL-адреса http с помощью параметра --auth-url.
Затем при наличии подключения пользователя прокси-сервер запросит URL-адрес в режиме GET и передаст следующие четыре параметра. Если возвращается код состояния HTTP 204, аутентификация прошла успешно.
В других случаях аутентификация не удалась.
Например:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Когда пользователь подключается, прокси-сервер запросит URL-адрес («http://test.com/auth.php») в режиме GET.
Возьмем пять параметров: user, pass, ip, local_ip, target:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
Пользователь: имя пользователя
Пароль: пароль
IP: IP-адрес пользователя, например: 192.168.1.200.
Local_ip: IP-адрес сервера, к которому обращается пользователь, например: 3.3.3.3.
Цель: URL-адрес, к которому обращается пользователь, например: http://demo.com:80/1.html или https://www.baidu.com:80.
Если параметр -a или -F или --auth-url отсутствует, базовая аутентификация отключается.
По умолчанию прокси-сервер будет разумно определять, является ли доменное имя веб-сайта недоступным, оно будет передаваться на HTTP-прокси верхнего уровня. С помощью параметра --always весь трафик HTTP-прокси может быть принудительно направлен на верхний HTTP-прокси. прокси.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Описание: Принцип передачи по ssh заключается в использовании функции пересылки ssh, то есть после подключения по ssh вы можете получить доступ к целевому адресу через ssh-прокси.
Предположим, есть: vps
Локальный HTTP(S) прокси-порт 28080, выполняющий:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Локальный HTTP(S) прокси-порт 28080, выполняющий:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Протокол KCP требует, чтобы параметр --kcp-key установил пароль для шифрования и дешифрования данных.
HTTP-прокси уровня 1 (VPS, IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
Вторичный HTTP-прокси (локальный Linux)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Затем доступ к локальному порту 8080 — это доступ к прокси-порту 38080 на VPS, данные передаются через протокол kcp, обратите внимание, что kcp — это протокол udp, поэтому брандмауэру необходимо выпустить протокол 380p udp.
Прокси-сервер не только поддерживает настройку прокси-сервера в другом программном обеспечении, но также предоставляет услуги прокси-сервера для другого программного обеспечения. Он также поддерживает прямой анализ запрошенного доменного имени веб-сайта с IP-адресом прослушивания прокси-сервера, а затем прокси-сервер прослушивает порты 80 и 443, а затем. прокси-сервер автоматически предоставит вам доступ к веб-сайту HTTP(S), к которому вам нужно получить доступ.
Как использовать:
На компьютере с «прокси-прокси последнего уровня», поскольку прокси-сервер должен быть замаскирован под все веб-сайты, HTTP-порт веб-сайта по умолчанию — 80, HTTPS — 443, а прокси-сервер может прослушивать порты 80 и 443. Параметры -p Multiple адреса с сегментацией запятыми.
proxy http -t tcp -p :80,:443
Эта команда запускает прокси-агент на компьютере и одновременно прослушивает порты 80 и 443. Его можно использовать как обычный прокси-сервер или напрямую преобразовать имя домена, которое необходимо проксировать, в IP-адрес этого компьютера.
Если есть восходящий агент, обратитесь к приведенному выше руководству, чтобы настроить восходящий агент, использование точно такое же.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
Примечание:
Пользовательское разрешение не может повлиять на результат разрешения DNS сервера, на котором расположен прокси, иначе это будет бесконечный цикл. Прокси-прокси должен указать параметр --dns-address 8.8.8.8
.
Этот режим должен иметь определенную сетевую основу. Если соответствующие концепции не понятны, поищите их самостоятельно.
Предполагая, что прокси-сервер теперь работает на маршрутизаторе, команда запуска выглядит следующим образом:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
Затем добавьте правило iptables, вот ссылочные правила:
# Upper proxy server IP address:
Proxy_server_ip=2.2.2.2
#路由器Running port for proxy listening:
Proxy_local_port=33080
# The following does not need to be modified
# create a new chain named PROXY
Iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful.
Iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
Iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
Iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
Iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
Iptables -t nat -A PROXY -p tcp --dport 80 -j REDIRECT --to-ports $proxy_local_port
Iptables -t nat -A PROXY -p tcp --dport 443 -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
Iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
Iptables -t nat -A OUTPUT -p tcp -j PROXY
Параметры --dns-address и --dns-ttl, используемые для указания DNS (--dns-address), используемого прокси-сервером для доступа к имени домена.
И время кэширования результатов анализа (--dns-ttl) в секундах, чтобы избежать вмешательства системного DNS в прокси-сервер, в дополнение к функции кэширования также может уменьшить время разрешения DNS для повышения скорости доступа.
Например:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
поддерживает несколько DNS-адресов, балансировку нагрузки, разделенных запятой. Например: --dns-address "1.1.1.1:53,8.8.8.8:53"
Вы также можете использовать параметр --dns-interface
, чтобы указать полосу пропускания, используемую для разрешения DNS, например: --dns-interface eth0
, разрешение DNS будет использовать пропускную способность eth0, для этого параметра необходимо установить значение --dns-address
быть эффективным.
Прокси-сервер http(s) может шифровать данные tcp с помощью стандартного шифрования tls и протокола kcp поверх tcp, а также поддерживать настройку после tls и kcp.
Шифрование, то есть пользовательское шифрование и tls|kcp, можно использовать в сочетании. При внутреннем использовании шифрования AES256 вам нужно только определить пароль при его использовании.
Шифрование разделено на две части: одна определяет, является ли локальное (-z) шифрование и дешифрование, а другая определяет, шифруется или расшифровывается передача с восходящим потоком (-Z).
Пользовательское шифрование требует, чтобы оба конца были прокси. В качестве примеров используются следующие два и три уровня:
Вторичный экземпляр
Выполните на vps уровня 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Локальное вторичное исполнение:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Таким образом, когда доступ к веб-сайту осуществляется через локальный агент 8080, доступ к целевому веб-сайту осуществляется посредством зашифрованной передачи с восходящим потоком.
Трехуровневые экземпляры
Выполните на vps уровня 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Выполните на вторичном VPS (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Локальное трехуровневое исполнение:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Таким образом, когда доступ к веб-сайту осуществляется через локальный агент 8080, доступ к целевому веб-сайту осуществляется посредством зашифрованной передачи с восходящим потоком.
Прокси-сервер http(s) может шифровать данные tcp с помощью стандартного шифрования tls и протокола kcp поверх tcp, а также может сжимать данные перед пользовательским шифрованием.
То есть сжатие, пользовательское шифрование и tls|kcp можно использовать в сочетании. Сжатие разделено на две части: одна часть — это локальная (-m) передача со сжатием.
Часть его сжимается с помощью восходящей передачи (-M).
Сжатие требует, чтобы обе стороны были прокси-серверами. Сжатие также в определенной степени защищает (зашифрованные) данные. Ниже в качестве примеров используются уровни 2 и 3.
Вторичный экземпляр
Выполните на vps уровня 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Локальное вторичное исполнение:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Таким образом, когда доступ к веб-сайту осуществляется через локальный агент 8080, доступ к целевому веб-сайту осуществляется посредством сжатия восходящего потока.
Трехуровневые экземпляры
Выполните на vps уровня 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Выполните на вторичном VPS (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Локальное трехуровневое исполнение:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Таким образом, когда доступ к веб-сайту осуществляется через локальный агент 8080, доступ к целевому веб-сайту осуществляется посредством сжатия восходящего потока.
Прокси-сервер HTTP(S) поддерживает балансировку нагрузки верхнего уровня, и можно использовать несколько восходящих параметров повторения-P.
proxy http --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080
proxy http --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp - p :33080
proxy http --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -t tcp - p :33080
proxy http --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp -p :33080
Ограничение скорости — 100K, которое можно указать параметром -l
, например: 100K 2000K 1M 0 означает отсутствие ограничения.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
Параметр --bind-listen
можно использовать для открытия клиентского соединения с IP-адресом портала и использования IP-адреса портала в качестве исходящего IP-адреса для доступа к целевому веб-сайту. Если привязан неправильный IP-адрес, прокси-сервер не будет работать. В этот момент прокси-сервер попытается связать цель без привязки IP-адреса, и в журнале появится сообщение об этом.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
Хотя приведенный выше параметр --bind-listen
может указывать исходящий IP-адрес, entry IP
и outgoing IP
не могут ссылаться искусственно. Если вы хотите, чтобы входящий и исходящий IP-адреса были разными, вы можете использовать --bind-ip
параметр, формат: IP:port
, например: 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
. Параметр --bind-ip
можно повторять.
Например, эта машина имеет IP 5.5.5.5
, 6.6.6.6
и контролирует два порта 8888
и 7777
, команда выглядит следующим образом:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
Затем порт доступа клиента 7777
, исходящий IP-адрес 5.5.5.5
, порт доступа 8888
, исходящий IP-адрес 6.6.6.6
, если оба --bind-ip
и --bind- are set at the same time listen
, --bind-ip
имеет более высокий приоритет. s Кроме того, IP
часть параметра --bind-ip
поддерживает указание network interface name
, wildcards
, и их может быть более одного. Подробное описание следующее:
--bind-ip eth0:7777
, после чего клиент получит доступ к порту 7777
, а выходным IP-адресом будет IP-адрес сетевого интерфейса eth0.--bind-ip eth0.*:7777
, тогда клиент обращается к порту 7777
, а выходной IP-адрес выбирается случайным образом из IP-адреса сетевого интерфейса, начиная с eth0.
--bind-ip 192.168.?.*:777
, тогда клиент обращается к порту 7777
, исходящий IP-адрес - это все IP-адреса машины и соответствует IP-адресу 192.168.?.*
A случайно выбранный.-bind-ip pppoe??,192.168.?.*:7777
, а затем клиент обращается к порту 7777
, Исходящий IP-адрес — это имя сетевого интерфейса машины, соответствующее pppoe??
Он выбирается случайным образом из IP-адреса, соответствующего 192.168.?.*
в IP-адресе машины.*
представляет собой 0 для любого символа, ?
Представляет 1 символ.--bind-refresh
, чтобы указать интервал обновления информации о локальном сетевом интерфейсе, значение по умолчанию — 5
, единица измерения — секунды.По умолчанию параметр -C, -K — это путь к сертификату crt и файлу ключа.
Если это начало base64://, то последние данные считаются закодированными в base64 и будут использоваться после декодирования.
Настройка интеллектуального режима может быть одной из следующих: интеллектуальный|прямой|родительский.
По умолчанию: родительский.
Значение каждого значения следующее:
--intelligent=direct
, заблокированные цели не связаны напрямую.
--intelligent=parent
, цель, которая не находится в прямом эфире, переходит на более высокий уровень.
--intelligent=intelligent
, заблокированные и прямые не имеют целей, разумно определяют, использовать ли цель восходящего доступа.
proxy help http
Локальное исполнение:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
Затем доступ к локальному порту 33080 — это доступ к порту 22 из 192.168.22.33.
Параметр -p
поддерживает:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
Если количество локальных портов прослушивания больше 1, будет подключен соответствующий верхний порт, соответствующий локальному порту, а порт в -P
будет игнорироваться.
Если вам нужно подключение со всех портов, подключайтесь к верхнему указанному порту, можно добавить параметр --lock-port
.
такой как:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
Затем подключение к порту 33080
-P
подключаться 0
33080
порту 192.168.22.33, а другие порты одинаковы.
Если вы хотите подключить порты 33080
, 33081
и т. Д. К 22
порту 192.168.22.33, вы можете добавить параметр --lock-port
.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) выполняется:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
Местное исполнение:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
Затем доступ к локальному порту 23080, чтобы получить доступ к порту 8020 22.22.22.33.
Первичный TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
Вторичный TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Прокси TCP уровня 3 (локальный)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
Затем доступ к локальному порту 8080 должен получить доступ к порту 8080 из 66,66,66,66 через зашифрованный туннель TCP.
VPS (IP: 22.22.2.33) выполняется:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
Местное исполнение:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 23080 должен получить доступ к порту 8080 22.22.22.33 через зашифрованный туннель TCP.
Первичный TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T tcp -P "66.66.66.66:8080" -C proxy.crt -K proxy.key
Вторичный TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Прокси TCP уровня 3 (локальный)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 8080 должен получить доступ к порту 8080 из 66,66,66,66 через зашифрованный туннель TCP.
Иногда сеть, в которой находится прокси, не может получить непосредственный доступ к внешней сети
Параметр -J может помочь вам подключить прокси к Peer -P через прокси HTTPS или Socks5 при сопоставлении прокси -порта TCP, отображая внешний порт с локальным.
Формат параметров -J выглядит следующим образом:
HTTPS Proxy Writing:
Прокси нуждается в аутентификации, имя пользователя: пароль имени пользователя: пароль
Https: // имя пользователя: пароль@host: port
Агент не требует аутентификации
Https: // host: порт
Носки5 Proxy Writing:
Прокси нуждается в аутентификации, имя пользователя: пароль имени пользователя: пароль
Socks5: // имя пользователя: пароль@host: port
Агент не требует аутентификации
Socks5: // host: порт
Хост: IP или доменное имя прокси -сервера
Порт: порт прокси
--bind-listen
прокси TCP является превосходным типом (параметр: -T), он поддерживает указанный исходящий IP -адрес. В качестве исходящего IP для доступа к целевому веб -сайту.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
Несмотря на то, что --bind-listen
параметр может указать исходящий IP-адрес, entry IP
и outgoing IP
не могут --bind-ip
направлены на искусственно. Параметр, формат: IP:port
, например: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Можно повторить идентификацию параметров --bind-ip
.
Например, эта машина имеет IP 5.5.5.5
, 6.6.6.6
и контролирует два порта 8888
и 7777
, команда заключается в следующем:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
Затем порт 7777 клиентского доступа 7777
, исходящий --bind-ip
--bind-ip
5.5.5.5
--bind- are set at the same time listen
порт доступа 8888
6.6.6.6
исходящий IP- --bind-ip
имеет более высокий приоритет.
Кроме того, IP
часть параметра --bind-ip
поддерживает указание network interface name
, wildcards
и более чем одного.
--bind-ip eth0:7777
, затем клиент обращается к порту 7777
, а EGRESS IP является IP сетевого интерфейса ETH0.--bind-ip eth0.*:7777
, затем клиент обращается к порту 7777
, а EGRESS IP является случайным образом выбранным одним из IPS сетевого интерфейса, начиная с eth0.
7777
подстановочные знаки, такие как: --bind-ip 192.168.?.*:7777
192.168.?.*
случайно выбран один.--bind-ip pppoe??,192.168.?.*:7777
7777
IP - это имя сетевого интерфейса машины, соответствующее 192.168.?.*
pppoe??
*
представляет 0 для любого количества символов, а ?
--bind-refresh
, чтобы указать интервал, чтобы обновить информацию о локальном сетевом интерфейсе, по умолчанию- 5
, единица является вторым.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
может ограничить максимальное количество соединений на порт. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--rate-limit
может ограничить скорость каждого соединения TCP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
--ip-rate
ограничивает общую скорость каждого клиента IP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--port-rate
ограничения общей ставки каждого сервисного порта. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
и ( --ip-rate
или --port-rate
) можно использовать вместе. --c
контролирует, следует --C
сжать передачу между локальным и клиентом, FALLE;
Примеры:
VPS (IP: 22.22.22.33) Реализация: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
Локальное выполнение: proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
Местное исполнение:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
Затем получить доступ к локальному UDP: 5353, чтобы получить доступ к 8.8.8.8 UDP: 53 Port.
Параметр -p
поддерживает:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
Если количество локальных портов прослушивания превышает 1, соответствующий верхний порт, соответствующий локальному порту, будет подключен, а порт в -P
будет игнорироваться.
Если вам нужно соединение из всех портов, подключитесь к верхнему указанному порту, вы можете добавить параметр --lock-port
.
такой как:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
Затем подключение к порту 33080
-P
подключаться 0
33080
порту 192.168.22.33, а другие порты одинаковы.
Если вы хотите подключить порты 33080
, 33081
и т. Д. К порту 2222
192.168.22.33, вы можете добавить параметр --lock-port
.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) выполняется:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
Местное исполнение:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
Затем доступ к локальному порту UDP: 5353 через туннель TCP через VPS Access 8.8.8.8 UDP: 53 порт.
Первичный TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
Вторичный TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Прокси TCP уровня 3 (локальный)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
Затем доступ к локальному порту 5353 проходит через туннель TCP через VPS для доступа к порту 8.8.8.8.
VPS (IP: 22.22.2.33) выполняется:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Местное исполнение:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту UDP: 5353 проходит через зашифрованный туннель TCP через VPS Access 8.8.8.8 UDP: 53 порт.
Первичный TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Вторичный TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Прокси TCP уровня 3 (локальный)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 5353 должен получить доступ к порту 53.8.8.8 через VPS_01 через зашифрованный туннель TCP.
Когда UDP Upstream Proxies --bind-listen
параметр: -T) является UDP, он поддерживает указанный исходящий IP -адрес. IP для доступа к цели.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
Проникновение интранета, разделенное на две версии, «многопользовательская версия» и «мультиплексированная версия», как правило, как веб-сервис, эта служба не является долгосрочным соединением, рекомендуется использовать «Версия с мультизму Это то, что подключение времени предлагает использовать «мультиплексированную версию».
В следующем учебном пособии используется «мультиплексная версия» в качестве примера, чтобы проиллюстрировать, как ее использовать.
Интранет проникновение состоит из трех частей: клиент, сервер и мост;
Фон:
Требовать:
Дома вы можете получить доступ к порту 80 машины компании A, обратившись к порту 28080 VPS.
Шаги:
Выполнить на VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Полный
Фон:
Требовать:
Заполните адрес в конфигурации интерфейса обратного вызова веб -страницы в учетной записи разработки WeChat: http://22.22.22.22/calback.php
Затем вы можете получить доступ к Calback.php под 80 портом ноутбука.
Например: wx-dev.xxx.com разрешается до 22.22.22.22, а затем в собственной ноутбуке Nginx
Настройте доменное имя wx-dev.xxx.com в конкретный каталог.
Шаги:
Выполните на VPS, чтобы гарантировать, что порт 80 VPS не занят другими программами.
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":80@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Выполните свой ноутбук
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Полный
Фон:
Требовать:
Дома вы можете использовать компанию Machine A для выполнения служб разрешения доменных имен, установив локальный DNS на 22.22.22.22.
Шаги:
Выполнить на VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server --udp -r ":53@:53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Полный
Фон:
Требовать:
Чтобы быть в безопасности, я не хочу иметь доступ к машине компании A на VPS, и я могу получить доступ к порту 28080 машины дома.
Доступ к порту 80 машины компании A через зашифрованный туннель.
Шаги:
Выполнить на VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
Выполнить на машине компании
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Выполнить на домашнем компьютере
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Полный
Кончик:
Если несколько клиентов подключены к одному и тому же мосту одновременно, вам необходимо указать другой ключ, который может быть установлен параметром -k, и -K может быть любой уникальной строкой.
Просто будь единственным на том же мосту.
Когда сервер подключен к мосту, если есть несколько клиентов, подключающихся к одному мосту одновременно, вам необходимо использовать параметр -k для выбора клиента.
Раскрывайте несколько портов, повторяя параметр -r.
Фон:
Требовать:
Дома вы можете получить доступ к порту 80 машины компании A, обратившись к порту 28080 VPS.
Дома я могу получить доступ к 21 порту компании A Machine A, получив доступ 29090 VPS.
Шаги:
Выполнить на VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -r ":29090@:21" --k test -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client --k test -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Полный
Полный формат -r -это: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1.
Например: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
Если указан параметр -oudp, протокол по умолчанию в UDP, то: -r ":8080@:80"
по умолчанию в UDP;
Если параметр -не указан, протокол по умолчанию TCP, то: -r ":8080@:80"
по умолчанию в TCP;
4.7.2.
Например: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
Если указан параметр -k, например, тест --К, то: -r ":8080@:80"
client_key по умолчанию для тестирования;
Если параметр -k не указан, то: -r ":8080@:80"
Client_key по умолчанию по умолчанию;
0.0.0.0
127.0.0.1
Иногда сеть, в которой находится сервер или клиент, не может получить непосредственный доступ к внешней сети
Параметр -J может помочь вам подключить сервер или клиента к мосту через HTTPS или Socks5.
Формат параметров -J выглядит следующим образом:
HTTPS Proxy Writing:
Прокси нуждается в аутентификации, имя пользователя: пароль имени пользователя: пароль
Https: // имя пользователя: пароль@host: port
Агент не требует аутентификации
Https: // host: порт
Носки5 Proxy Writing:
Прокси нуждается в аутентификации, имя пользователя: пароль имени пользователя: пароль
Socks5: // имя пользователя: пароль@host: port
Агент не требует аутентификации
Socks5: // host: порт
Хост: IP или доменное имя прокси -сервера
Порт: порт прокси
Обычно клиент HTTP -запрос будет использовать IP и порт сервера для установления поля хоста, но он не то же самое, что ожидаемый бэкэнд фактический хост, что приводит к передаче TCP. Однако бэкэнд зависит от поля хоста, чтобы найти место Виртуальный --http-host
--http-host
не будет работать. Параметр --http-host
, Два заголовки будут X-Forwarded-For
в заголовок каждого HTTP X-Real-IP
запроса.
Формат параметра server
-http -host заключается в следующем:
--http-host www.test.com:80@2200
, если сервер слушает несколько портов, просто повторите параметр --http-host
, чтобы установить хост для каждого порта.
Пример:
Например, клиент Local Nginx, 127.0.0.1:80 предоставляет веб -сервис, который связан с доменным именем local.com
.
Тогда параметры запуска сервера могут быть следующими:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
Объяснение:
-r :[email protected]:80
и --http-host local.com:80@2500
Порт 2500-это порт, который сервер слушает локально.
Когда протокол HTTP используется для запроса порта IP: 2500 сервера, поле хоста заголовка HTTP будет установлено на local.com
.
Если вы запустите стыковку на сервере отдельно, это панель управления Proxy-ADMIN.
Затем запустите сервер и добавьте параметр-server-id = идентификатор правила отображения, чтобы подсчитать трафик.
Поддержка проникновения в интрасети. Когда сервер и условия сети клиента выполняются, сервер и клиент напрямую подключены через P2P.
При запуске моста, сервера, клиента, добавьте параметр --p2p
.
Если отверстие P2P не удается между сервером и клиентом, данные передачи моста автоматически переключаются.
Интранет-проникающий мост может установить белый список клиента.
А.
b.
C.
По умолчанию пусто, позволяя всем ключам.
Суждение типа сената, легко проверить, поддерживает ли сеть P2P, вы можете выполнить: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
быстрый:
Socks5 Proxy, поддерживает Connect, протокол UDP, не поддерживает Bind, поддерживает имя пользователя и аутентификацию пароля.
*** Функция UDP Socks5 выключается по умолчанию и может --udp-port 0
включена --udp
. --udp-port 0
, 0
представляет собой бесплатный порт, выбирается случайным образом, или вы можете вручную указать конкретный порт.
proxy socks -t tcp -p "0.0.0.0:38080"
Слушать аргумент порта -p
может быть:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
Используйте локальный порт 8090, предполагая, что прокси -сервер вверх по течению составляет 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Мы также можем указать файл черно -белого списка на доменном имени Веб -сайта, одно доменное имя и одно доменное имя, правило сопоставления является самым правым совпадением, например: baidu.com, матч Доменное имя доменное имя доходит непосредственно к агенту вверх по течению, белое доменное имя списка не обращается к агенту вверх по течению;
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Прокси -сервер носков 1 (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Вторичные носки прокси (Local Linux)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 8080, чтобы получить доступ к прокси -порту 38080 на VPS.
Вторичные носки прокси (локальные окна)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Затем установите систему Windos, прокси, которая должна пройти через прокси -программу, является режим SOCKS5, адрес: 127.0.0.1, порт: 8080, программа может получить доступ к Интернету через VPS через зашифрованный канал.
Носков уровня 1 Proxy VPS_01, IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Вторичные носки Proxy VPS_02, IP: 33.33.33.33
proxy socks -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Прокси -сервер носков 3 уровня (локальный)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Затем доступ к локальному порту 8080 должен получить доступ к прокси-порту 38080 на прокси-сервере носков первого уровня.
По умолчанию прокси разумно определяет, является ли доменное имя веб -сайта недоступным. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Описание: Принцип передачи SSH состоит в том, чтобы использовать функцию пересылки SSH, то есть после подключения к SSH вы можете получить доступ к целевому адресу через SSH -прокси.
Предположим, есть: vps
Local Socks5 Proxy Port 28080, выполнить:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Local Socks5 Proxy Port 28080, выполнить:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Затем доступ к локальному порту 28080 должен получить доступ к целевому адресу через VPS.
Для протокола Socks5 мы можем выполнить аутентификацию имени пользователя и пароль.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Для нескольких пользователей повторите параметр -a.
Он также может быть помещен в файл в формате «Имя пользователя: пароль», а затем указан с -F.
proxy socks -t tcp -p ":33080" -F auth-file.txt
Кроме того, агент Socks5 также объединяет внешнюю аутентификацию HTTP API.
Затем, когда есть подключение к пользователю, прокси запрашивает URL -адрес в режиме GET со следующими тремя параметрами.
В других случаях аутентификация не удалась.
Например:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Когда пользователь подключается, прокси запрашивает URL ("http://test.com/auth.php") в режиме Get.
Принесите четыре параметра: пользователь, проход, ip, local_ip:
Http://test.com/auth.php?user=byuser или appass=bypass?&ip= xip/plocal_ip=local_ip}
Пользователь: имя пользователя
Пропустите: пароль
IP: IP -адрес пользователя, например: 192.168.1.200
Local_ip: IP -адрес сервера, доступ к которому пользователь обращается к пользователю: 3.3.3.3
Если нет параметра -a или -f или -auth -url, аутентификация выключается.
Протокол KCP требует, чтобы параметр -KCP-ключ для установления пароля для шифрования и расшифровки данных.
Уровень 1 HTTP Proxy (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
Вторичный HTTP -прокси (Local Linux)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Затем доступ к локальному порту 8080 предназначен для доступа к прокси -порту 38080 на VPS, данные передаются через протокол KCP.
-DNS-ADDRESS и-DNS-TTL Параметры, используемые для указания DNS (--DNS-ADDRESS), используемого прокси для доступа к доменному имени.
И секунд в секундах в результате анализа (--DNS-TTL), чтобы избежать системных помех DNS в прокси, в дополнение к функции кэша также может сократить время разрешения DNS для улучшения скорости доступа.
Например:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
Вы также можете использовать параметр --dns-interface
для указания полосы пропускания, используемой для разрешения DNS, например: --dns-interface eth0
, разрешение DNS будет использовать полосу пропускания ETH0, этот параметр должен быть установлен в --dns-address
TO TO TO TO TO TO TO TO TO TO TO TO TO TO TO TO TO быть эффективным.
Прокси -сервера прокси может шифровать данные TCP с помощью стандартного шифрования TLS и протокола KCP на вершине TCP. AES256 шифрование, вам нужно определить пароль только при его использовании.
Шифрование делится на две части, одна из них заключается в том, является ли локальное (-Z) шифрование и дешифрование, а другая-это зашифрована или расшифрована передача вверх по течению (-Z).
Пользовательское шифрование требует, чтобы обе стороны были прокси.
Следующие два уровня, например, три уровня:
Вторичный экземпляр
Выполнить на уровне 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Местное вторичное исполнение:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Таким образом, когда к веб -сайту доступ к местному агенту 8080, целевой веб -сайт доступ к зашифрованной передаче с восходящим потоком.
Трехуровневые экземпляры
Выполнить на уровне 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Выполните на вторичном VPS (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Локальное трехуровневое исполнение:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Таким образом, когда к веб -сайту доступ к местному агенту 8080, целевой веб -сайт доступ к зашифрованной передаче с восходящим потоком.
Прокси -сервера прокси -носков может шифровать данные TCP с помощью пользовательского шифрования и стандартного шифрования TLS и протокола KCP на вершине TCP.
Сжатие данных, то есть функция сжатия и пользовательское шифрование и TLS | KCP можно использовать в комбинации, а сжатие разделено на две части.
Частью является локальная (-m) передача сжатия, а часть заключается в том, сжимается ли передача с восходящим (-m).
Сжатие требует, чтобы обе стороны были прокси, а сжатие также в некоторой степени защищает данные (шифрования).
Следующие два уровня, например, три уровня:
Вторичный экземпляр
Выполнить на уровне 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Местное вторичное исполнение:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Таким образом, когда к веб -сайту доступ к местному агенту 8080, целевой веб -сайт доступ к сжатию с восходящим течением.
Трехуровневые экземпляры
Выполнить на уровне 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Выполните на вторичном VPS (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Локальное трехуровневое исполнение:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Таким образом, когда к веб -сайту доступ к местному агенту 8080, целевой веб -сайт доступ к сжатию с восходящим течением.
Прокси-сервер Socks поддерживает балансировку нагрузки верхнего уровня, и могут использоваться несколько параметров REPEAR-P.
proxy socks --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -p :33080 -t tcp
proxy socks --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
Предел скорости составляет 100 тыс., Который может быть указан параметром -l
, например: 100K 2000K 1M.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
Параметр --bind-listen
можно использовать для открытия клиентского соединения с помощью IP-адреса портала и использования IP-портала в качестве исходящего IP для доступа к целевому веб-сайту. IP IP.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
Несмотря на то, что --bind-listen
параметр может указывать исходящий IP, entry IP
и outgoing IP
--bind-ip
могут быть вмешательны. Параметр, формат: IP:port
, например: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Повторите параметр --bind-ip
.
Например, машина имеет IP 5.5.5.5
, 6.6.6.6
и контролирует два порта 8888
и 7777
, команда заключается в следующем:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Затем порт 7777 клиентского доступа 7777
, исходящий --bind-ip
--bind-ip
5.5.5.5
--bind- are set at the same time listen
порт доступа 8888
6.6.6.6
исходящий IP- --bind-ip
имеет более высокий приоритет.
Кроме того, IP
часть параметра --bind-ip
поддерживает указание network interface name
, wildcards
и более одного.
--bind-ip eth0:7777
, затем клиент обращается к порту 7777
, а EGRESS IP является IP сетевого интерфейса ETH0.--bind-ip eth0.*:7777
, затем клиент обращается к порту 7777
, а EGRESS IP является случайным образом выбранным одним из IPS сетевого интерфейса, начиная с eth0.
7777
подстановочные знаки, такие как: --bind-ip 192.168.?.*:7777
192.168.?.*
случайно выбран один.--bind-ip pppoe??,192.168.?.*:7777
7777
IP - это имя сетевого интерфейса машины, соответствующее 192.168.?.*
pppoe??
*
представляет 0 для любого количества символов, а ?
--bind-refresh
, чтобы указать интервал, чтобы обновить информацию о локальном сетевом интерфейсе, по умолчанию- 5
, единица является вторым.Socks5 поддерживает каскадную аутентификацию, а -a может настроить информацию об аутентификации вверх по течению.
вверх по течению:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
местный:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
По умолчанию параметр -c, -К является пути к сертификату CRT и файлу ключа.
Если это начало Base64: //, то последние данные считаются кодируемыми Base64 и будут использоваться после декодирования.
Интеллектуальная настройка режима может быть интеллектуальным | Прямой | Родитель.
По умолчанию: родитель.
Значение каждого значения следующее:
--intelligent=direct
, цели в заблокированных не связаны напрямую.
--intelligent=parent
, цель, которая не находится в прямой, идет на более высокий уровень.
--intelligent=intelligent
, заблокирован и прямой, не имеют целей, разумно определяйте, использовать ли целевую цель доступа вверх по течению.
По умолчанию номер порта функции UDP Socks5, прокси устанавливается в rfc1982 draft
, который случайным образом указывается в процессе рукопожатия протокола и не нужно указывать заранее.
Однако в некоторых случаях необходимо исправить --udp-port port number
функции UDP.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
По умолчанию функциональность UDP Proxy Socks5 работает в соответствии с спецификацией Socks5 RFC 1928 --udp-compat
Параметр --udp-compat
может быть добавлен для активации режима совместимости для функциональности UDP SOCKS5.
Кроме того, параметр -udp-gc
может быть использован для установки максимального времени простоя для UDP.
proxy help socks
Прокси -протокол использует подкоманду SPS SPS сама по себе не обеспечивает функцию прокси Поместите существующий прокси -прокси или прокси или SS -прокси HTTP (S), преобразуется в порт, который поддерживает как прокси -серверы HTTP (S), так и Socks5, а также прокси HTTP (S). (SNI), преобразованный прокси -сервер, функция UDP по -прежнему поддерживается, когда верхний уровень составляет Socks5 или SS; Поддерживается цепное соединение, то есть несколько уровней узлов SPS могут быть поддержаны.
Методы шифрования, поддерживаемые функцией ss
: AES-128-CFB, AES-128-CTR, AES-128-GCM, AES-192-CFB, AES-192-CTR, AES-192-GCM, AES-256- CFB, AES-256-CTR, AES-256-GCM, BF-CFB, CAST5-CFB, Chacha20, Chacha20-IETF, Chacha20-IETF-Poly1305, DES-CFB, RC4-MD5, RC4-MD5-6, Salsa20, Xchacha20
Слушать аргумент порта -p
может быть:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
Функция UDP SS отключена по умолчанию и может --udp
включена --ssudp
. Производительность может 0
улучшена, исправляя --udp-port 0
.
Предположим, что уже есть нормальный прокси (S): 127.0.0.1:8080. 192-CFB, SS Password: Pass.
Команда следующая:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Предположим, что уже существует прокси (S) TLS (S): 127.0.0.1:8080. File., SS Encryption: AES-192-CFB, SS Password: Pass.
Команда следующая:
proxy sps -S http -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
Предположим, что уже существует прокси (S) KCP (S) (пароль: DEMO123): 127.0.0.1:8080, теперь мы превращаем его в обычный прокси, который поддерживает как HTTP (S), так и SOCKS5 и SS. , SS Encryption: AES-192-CFB, SS Password: Pass.
Команда следующая:
proxy sps -S http -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
Предположим, что уже существует обычный прокси -сервер: 127.0.0.1:8080, теперь мы превращаем его в общий прокси, который поддерживает как HTTP, так и Socks5 и SS. , SS Password: Pass.
Команда следующая:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Предположим, что уже есть прокси -сервер TLS Socks5: 127.0.0.1:8080, теперь мы превращаем его в общий прокси, который поддерживает как HTTP (S), так и Socks5 и SS. : AES-192-CFB, SS Password: Pass.
Команда следующая:
proxy sps -S socks -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
Suppose there is already a kcp socks5 proxy (password: demo123): 127.0.0.1:8080, now we turn it into a common proxy that supports both http(s) and socks5 and ss. The converted local port is 18080, ss Encryption method: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S socks -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
SPS upstream and local support ss protocol, the upstream can be SPS or standard ss service.
SPS locally provides HTTP(S)SOCKS5SPS three defaults. When the upstream is SOCKS5, the converted SOCKS5 and SS support UDP.
Suppose there is already a normal SS or SPS proxy (ss is enabled, encryption: aes-256-cfb, password: demo): 127.0.0.1:8080, now we turn it to support both http(s) and socks5 and The ordinary proxy of ss, the converted local port is 18080, the converted ss encryption mode: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S ss -H aes-256-cfb -J pass -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
.
The above mentioned multiple sps nodes can be connected to build encrypted channels in a hierarchical connection, assuming the following vps and the home PC.
Vps01:2.2.2.2
Vps02:3.3.3.3
Now we want to use pc and vps01 and vps02 to build an encrypted channel. This example uses tls encryption or kcp. Accessing local 18080 port on the PC is to access the local 8080 port of vps01.
First on vps01 (2.2.2.2) we run a locally accessible http(s) proxy and execute:
proxy http -t tcp -p 127.0.0.1:8080
Then run a sps node on vps01 (2.2.2.2) and execute:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tls -p :8081 -C proxy.crt -K proxy.key
Then run a sps node on vps02 (3.3.3.3) and execute:
proxy sps -S http -T tls -P 2.2.2.2:8081 -t tls -p :8082 -C proxy.crt -K proxy.key
Then run a sps node on the pc and execute:
proxy sps -S http -T tls -P 3.3.3.3:8082 -t tcp -p :18080 -C proxy.crt -K proxy.key
выполнять.
Sps supports http(s)socks5 proxy authentication, which can be cascaded and has four important pieces of information:
1: The user sends the authentication information user-auth
.
2: Set the local authentication information local-auth
.
3: Set the connection authentication information 'parent-auth used by the upstream. 4: The authentication information
auth-info-to-parent` that is finally sent to the upstream.
Their situation is as follows:
User-auth | local-auth | parent-auth | auth-info-to-paren |
---|---|---|---|
Да/Нет | Да | Да | From parent-auth |
Да/Нет | Нет | Да | From parent-auth |
Да/Нет | Да | Нет | Нет |
Нет | Нет | Нет | Нет |
Да | Нет | Нет | From user-auth |
For the sps proxy we can perform username and password authentication. The authenticated username and password can be specified on the command line.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0:0: "
For multiple users, repeat the -a parameter.
Can also be placed in a file, the format is one line a username: password: number of connections: rate: upstream
, and then specified with -F.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -F auth-file.txt
If the upstream has authentication, the lower level can set the authentication information with the -A parameter, for example:
upstream: proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0: 0:"
Subordinate: proxy sps -S http -T tcp -P 127.0.0.1:8080 -A "user1:pass1" -t tcp -p ":33080"
For more details on certification, please refer to 9.API Certification
and 10.Local Certification
If there are multiple upstreams, they can be specified by multiple -Ps.
такой как:
proxy sps -P http://127.0.0.1:3100 -P socks5://127.0.0.1:3200
The complete format of -P
is as follows:
protocol://a:[email protected]:33080#1
Each section is explained below:
protocol://
is the protocol type, possible types and contains the following:
Http is equivalent to -S http -T tcp
Https is equivalent to -S http -T tls --parent-tls-single , which is http(s) proxy over TLS
Https2 is equivalent to -S http -T tls
Socks5 is equivalent to -S socks -T tcp
Socks5s is equivalent to -S socks -T tls --parent-tls-single , which is socks over TLS
Socks5s2 is equivalent to -S socks -T tls
Ss is equivalent to -S ss -T tcp
Httpws is equivalent to -S http -T ws
Httpwss is equivalent to -S http -T wss
Socks5ws is equivalent to -S socks -T ws
Socks5wss is equivalent to -S socks -T wss
a:b
is the username and password of the proxy authentication. If it is ss, a
is the encryption method, b
is the password, and no username password can be left blank, for example: http://2.2.2.2:33080
If the username and password are protected, special symbols can be encoded using urlencode.
2.2.2.2:33080
is the upstream address, the format is: IP (or domain name): port
, if the underlying is ws/wss protocol can also bring the path, such as: 2.2.2.2: 33080/ws
;
You can also set the encryption method
and password
of wswss
by appending the query parameters m
and k
, for example: 2.2.2.2:33080/ws?m=aes-192-cfb&k=password
#1
When multiple upper-level load balancing is a weighting strategy, the weights are rarely used.
The proxy sps proxy can encrypt tcp data through tls standard encryption and kcp protocol on top of tcp, in addition to support after tls and kcp
Custom encryption, that is, custom encryption and tls|kcp can be used in combination, internally using AES256 encryption, only need to define it when using
A password can be used, the encryption is divided into two parts, one part is whether the local (-z) encryption and decryption, and the part is the encryption and decryption with the upstream (-Z) transmission.
Custom encryption requires both sides to be proxy.
The following two levels, three levels for example:
Suppose there is already an http(s) proxy: 6.6.6.6:6666
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
The proxy sps proxy can encrypt tcp data through custom encryption and tls standard encryption and kcp protocol on top of tcp. It can also be used before custom encryption.
Compress the data, that is, the compression function and the custom encryption and tls|kcp can be used in combination, and the compression is divided into two parts.
Part of it is local (-m) compression transmission, and part is whether the transmission with the upstream (-M) is compressed.
Compression requires both sides to be proxy, and compression also protects (encrypts) data to some extent.
The following two levels, three levels for example:
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
By default, SPS supports http(s) and socks5 two proxy protocols. We can disable a protocol by parameter.
Например:
Disable the HTTP(S) proxy function to retain only the SOCKS5 proxy function, parameter: --disable-http
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-http
Disable the SOCKS5 proxy function to retain only the HTTP(S) proxy function, parameter: --disable-socks
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-socks
Suppose there is a SOCKS5 upstream:
proxy socks -p 2.2.2.2:33080 -z password -t tcp
SPS lower level, speed limit 100K
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp -p :33080
It can be specified by the -l
parameter, for example: 100K 2000K 1M . 0 means no limit.
The --bind-listen
parameter can be used to open the client connection with the portal IP, and use the portal IP as the outgoing IP to access the target website. If the ingress IP is an intranet IP, the egress IP does not use the ingress IP.
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp --bind-listen -p :33080
Although the above --bind-listen
parameter can specify the outgoing IP, the entry IP
and outgoing IP
cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the --bind-ip
parameter, format: IP:port
, for example: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. For multiple binding requirements, you can repeat the --bind-ip
parameter.
For example, the machine has IP 5.5.5.5
, 6.6.6.6
, and monitors two ports 8888
and 7777
, the command is as follows:
proxy sps -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Then the client access port 7777
, the outgoing IP is 5.5.5.5
, access port 8888
, the outgoing IP is 6.6.6.6
, if both --bind-ip
and --bind- are set at the same time listen
, --bind-ip
has higher priority.
In addition, the IP
part of the --bind-ip
parameter supports specifying the network interface name
, wildcards
, and more than one. The details are as follows:
--bind-ip eth0:7777
, then the client accesses the 7777
port, and the egress IP is the IP of the eth0 network interface.--bind-ip eth0.*:7777
, then the client accesses the 7777
port, and the egress IP is a randomly selected one of the network interface IPs starting with eth0.
.--bind-ip 192.168.?.*:7777
, then the client accesses the 7777
port, and the outgoing IP is all the IPs of the machine, matching the IP of 192.168.?.*
A randomly selected one.--bind-ip pppoe??,192.168.?.*:7777
, then the client accesses the port 7777
, The outgoing IP is the machine's network interface name matching pppoe??
It is a randomly selected one among all IPs of the machine that matches 192.168.?.*
.*
represents 0 to any number of characters, and ?
represents 1 character.--bind-refresh
parameter to specify the interval to refresh the local network interface information, the default is 5
, the unit is second.By default, the -C, -K parameter is the path to the crt certificate and the key file.
If it is the beginning of base64://, then the latter data is considered to be base64 encoded and will be used after decoding.
A sps port can complete the full-featured proxy httpsocksss
function.
The following command is to open the http(s)sssocks service with one click, and enable the udp of socks5 and the udp of ss at the same time.
proxy sps -p: 33080 --ssudp --udp --udp-port 0
The https(s)socks5ss proxy function provided by the sps function, the client connects to the specified "target" through the sps proxy. This "target" is generally a website or an arbitrary tcp address.
The website "target" is generally foo.com: 80, foo.com: 443, sps supports the use of the --rewrite parameter to specify a "target" redirection rule file, redirect the target, the client is non-perceived,
For example, if you redirect to "target": demo.com:80 to 192.168.0.12:80, then the client visits the website demo.com, in fact, the website service provided by 192.168.0.12.
Example of a "target" redirection rule file:
# example
Www.a.com:80 10.0.0.2:8080
**.b.com:80 10.0.0.2:80
192.168.0.11:80 10.0.0.2:8080
When sps is an independent service, an additional local socks5 service will be opened to occupy a random port. Now the parameter --self-port
can be manually specified when needed. The default is 0 to use random.
By default, the port number of the UDP function of ss's socks5 is specified by the rfc1982 draft
. It is randomly specified during the protocol handshake process and does not need to be specified in advance.
However, in some cases, you need to fix the UDP function port. You can fix the port number of the UDP function by the parameter --udp-port port_number
, for example:
proxy sps -t tcp -p "0.0.0.0:38080" --udp-port 38081
It should be noted that the ss function of sps also has UDP function, and the UDP port of ss is the same as the tcp port, so avoid the conflict between the UDP port of socks5 and the UDP port of ss.
To specify a port that is different from the tcp port.
The sps mode supports the iptables transparent forwarding support of the Linux system, which is commonly referred to as the iptables transparent proxy. If a iptables transparent proxy is performed on the gateway device, the device that is connected through the gateway can realize a non-aware proxy.
Example start command:
proxy sps --redir -p :8888 -P httpws: //1.1.1.1:33080
Here it is assumed that there is an http superior proxy 1.1.1.1:33080, which uses ws to transmit data.
Then add iptables rules, here are the reference rules:
# upstream proxy server IP address:
proxy_server_ip = 1.1.1.1
# Router running proxy listening port:
proxy_local_port = 33080
# There is no need to modify the following
# create a new chain named PROXY
iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful。
iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
iptables -t nat -A OUTPUT -p tcp -j PROXY
By default, the UDP functionality of the SOCKS5 proxy in the proxy operates in accordance with the SOCKS5 RFC 1928 specification. However, there are certain SOCKS5 clients that do not adhere to the specified rules. To ensure compatibility with such clients, the --udp-compat
parameter can be added to activate the compatibility mode for SOCKS5 UDP functionality.
Additionally, the -udp-gc
parameter can be utilized to set the maximum idle time for UDP. When this time threshold is exceeded, UDP connections will be released.
The --dns-address
and --dns-ttl
parameters are used to specify the dns used by the proxy to access the domain name ( --dns-address
) As well as the number of seconds for caching the parsing results (--dns-ttl) to avoid the interference of the system dns on the proxy. The additional caching function can also reduce the dns parsing time and improve the access speed. Translation: Agent sps -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
You can also use the parameter --dns-interface
to specify the bandwidth used for dns resolution, for example: --dns-interface eth0
, dns resolution will use the eth0 bandwidth, this parameter must be set to --dns-address
to быть эффективным.
proxy help sps
Many functions of the proxy support the kcp protocol. Any function that uses the kcp protocol supports the configuration parameters described here.
Therefore, the KCP configuration parameters are introduced here.
There are a total of 17 KCP configuration parameters, you can not set them, they have default values, if for the best effect,
You need to configure the parameters according to your own network conditions. Because the kcp configuration is complex, it requires a certain network basics.
If you want to get more detailed configuration and explanation of kcp parameters, please search for yourself. The command line name for each parameter, along with the default values and simple function descriptions are as follows:
--kcp-key="secrect" pre-shared secret between client and server
--kcp-method="aes" encrypt/decrypt method, can be: aes, aes-128, aes-192, salsa20, blowfish,
Twofish, cast5, 3des, tea, xtea, xor, sm4, none
--kcp-mode="fast" profiles: fast3, fast2, fast, normal, manual
--kcp-mtu=1350 set maximum transmission unit for UDP packets
--kcp-sndwnd=1024 set send window size(num of packets)
--kcp-rcvwnd=1024 set receive window size(num of packets)
--kcp-ds=10 set reed-solomon erasure coding - datashard
--kcp-ps=3 set reed-solomon erasure coding - parityshard
--kcp-dscp=0 set DSCP(6bit)
--kcp-nocomp disable compression
--kcp-acknodelay be carefull! flush ack immediately when a packet is received
--kcp-nodelay=0 be carefull!
--kcp-interval=50 be carefull!
--kcp-resend=0 be carefull!
--kcp-nc=0 be carefull! no congestion
--kcp-sockbuf=4194304 be carefull!
--kcp-keepalive=10 be carefull!
Кончик:
Parameters: -- four fast3, fast2, fast, normal modes in kcp-mode,
Equivalent to setting the following four parameters:
Normal: --nodelay=0 --interval=40 --resend=2 --nc=1
Fast : --nodelay=0 --interval=30 --resend=2 --nc=1
Fast2: --nodelay=1 --interval=20 --resend=2 --nc=1
Fast3: --nodelay=1 --interval=10 --resend=2 --nc=1
DNS is known as the service provided by UDP port 53, but with the development of the network, some well-known DNS servers also support TCP mode dns query, such as Google's 8.8.8.8, the DNS anti-pollution server principle of the proxy is to start a proxy DNS proxy locally. Server, which uses TCP to perform dns query through the upstream agent. If it communicates with the upstream agent, it can perform secure and pollution-free DNS resolution. It also supports independent services, concurrent parsing, and enhanced enhanced hosts file function to support flexible concurrent parsing and forwarding.
Dns resolution order:
Кончик:
The host file format specified by the --hosts parameter is the same as the system hosts file, and the domain name supports wildcards. You can refer to the hosts file.
The parsing forwarding rule file specified by the --forward parameter can be referenced to the resolve.rules file. The domain name supports wildcards. It supports multiple dns servers for each domain name to be parsed concurrently. Whoever resolves the fastest resolution will use the resolution result.
The -q parameter can specify multiple remote dns servers to perform concurrent parsing. Whoever resolves the fastest parsing success, the default is: 1.1.1.1, 8.8.8.8, 9.9.9.9, multiple comma-separated,
For example, you can also bring ports: 1.1.1.1, 8.8.8.8#53, 9.9.9.9
If you are a standalone service, you don't need a upstream:
Can perform:
proxy dns --default system -p :5353
Или
proxy dns --default direct -p :5353
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S http -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S socks -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S http -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S socks -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t kcp -p :33080
Local execution:
proxy dns -S http -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080
Local execution:
proxy dns -S socks -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tcp -p :33080 -z password
Local execution:
proxy dns -S http -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080 -z password
Local execution:
proxy dns -S socks -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
The proxy's http(s)/socks5/sps proxy function supports user-to-agent access via the API.
user
or client ip
or server port
. The proxy's http(s)/socks5/sps proxy API function is controlled by three parameters: --auth-url
and --auth-nouser
and --auth-cache
.
The parameter --auth-url
is the HTTP API interface address. When the client connects, the proxy will request the url in GET mode, with the following parameters. If the HTTP status code 204 is returned, the authentication is successful. In other cases, the authentication fails.
An example of a complete request API:
http://test.com/auth.php?user=a&pass=b&client_addr=127.0.0.1:49892&local_addr=127.0.0.1:8100&target=http%3A%2F%2Fwww.baidu.com&service=http&sps=0
user and pass
When the proxy turns on authentication, here is the username and password provided by the client.
client_addr
The address used by the client to access the proxy, format IP: port.
local_addr
The proxy address accessed by the client, format IP: port.
service
Proxy type, divided into: http, socks.
Whether the sps
proxy is provided by sps, 1: yes, 0: no.
target
The target to be accessed by the client. If it is an http(s) proxy, the target is the specific url accessed; if it is a socks5 proxy, the target is empty.
Suppose --auth-url http://127.0.0.1:333/auth.php points to a php interface address.
The contents of auth.php are as follows:
<?php
#all users and password
$ alluser =[
" user1 " => " pass1 " ,
" user2 " => " pass2 " ,
" user3 " => " pass3 " ,
" user4 " => " pass4 " ,
];
$ proxy_ip = $ _GET [ ' local_addr ' ];
$ user_ip = $ _GET [ ' client_addr ' ];
$ service = $ _GET [ ' service ' ];
$ is_sps = $ _GET [ ' sps ' ]== ' 1 ' ;
$ user = $ _GET [ ' user ' ];
$ pass = $ _GET [ ' pass ' ];
$ target = $ _GET [ ' target ' ];
//business checking
//....
$ ok = false ;
foreach ( $ alluser as $ dbuser => $ dbpass ) {
if ( $ user == $ dbuser && $ pass == $ dbpass ){
$ ok = true ;
break ;
}
}
//set the authentication result
if ( $ ok ){
header ( " userconns:1000 " );
header ( " ipconns:2000 " );
header ( " userrate:3000 " );
header ( " iprate:8000 " );
header ( " userqps:5 " );
header ( " ipqps:2 " );
header ( " upstream:http://127.0.0.1:3500?parent-type=tcp " );
header ( " outgoing:1.1.1.1 " );
header ( " userTotalRate:1024000 " );
//header("ipTotalRate:10240");
//header("portTotalRate:10240");
//header("RotationTime:60");
header ( " HTTP/1.1 204 No Content " );
}
userconns
: The maximum number of connections for the user, not limited to 0 or not set this header.
ipconns
: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate
: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate
: The single TCP connection rate limit of the client IP, in bytes/second, not limited to 0 or not set this header.
userqps
: The maximum number of connections per second (QPS) for the user, not limited to 0 or not set this header.
ipqps
: The maximum number of connections per second (QPS) for the client IP, not limited to 0 or not set this header.
upstream
: The upstream used, not empty, or not set this header.
outgoing
: The outgoing IP used. This setting is only effective when the upstream is empty. The IP set here must be owned by the machine where the proxy is located, otherwise, the proxy will not function properly. Starting from version v13.2
, outgoing
supports multiple subnet formats separated by commas. The proxy will randomly select an IP from the subnet as the outgoing IP. This randomness will also be keep when authentication cache is enabled. The following formats are supported for subnets:
192.168.1.1
, Description: Single IP, IPv43001:cb2::
, Description: Single IP, IPv6192.168.1.1/24
, Description: CIDR format subnet, IPv43001:cb2::/126
, Description: CIDR format subnet, IPv6192.168.1.1-192.168.1.200
, Description: IP range, IPv42311:ca2::-2311:ca2::10
, Description: IP range, IPv6 Example: 192.16.1.1,192.161.1.2,192.168.1.2-192.168.1.255
userTotalRate
: Limit the user
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
ipTotalRate
:Limit the client ip
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
portTotalRate
:Limit the server port
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
RotationTime
: (requires version >= v13.2)
Controls the time interval, in seconds, for randomly selecting the outgoing IP. Leave it blank or unset this header if not needed.When the outgoing returned by the API is a subnet, and if you don't want the proxy to randomly select a new IP for each client connection, you can use this parameter to control the time interval for random IP selection. If within the interval period, the previously selected IP will be used. If the API does not return the RotationTime
header or if RotationTime
is set to 0, the proxy will randomly select an IP from the outgoing subnet as the outgoing IP for each client connection.
userrate
、 iprate
and userTotalRate
、 ipTotalRate
、 portTotalRate
can be set at same time, for example: set userrate
with 1024000 to limit the user's total bandwidth speed to 1M/s of user's all tcp connections. And set userrate
with 102400 to limit the user one tcp connection speed to 100K/s.userTotalRate
、 ipTotalRate
、 portTotalRate
set at same time, the valid order is : userTotalRate
-> ipTotalRate
-> portTotalRate
userTotalRate
、 portTotalRate
set at same time, and set --auth-nouser
,all clients that not send username will be as an "empty username" user,they are using a same limiter. --auth-url
is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add --auth-nouser
. The visit will still access the authentication address --auth-url
for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.--auth-cache
authentication cache, cache the authentication result for a certain period of time, improve performance, reduce the pressure on the authentication interface, --auth-cache unit seconds, default 0, set 0 to close the cache.--auth-cache
only caches the results of successful authentication and does not cache the results of failed authentication. If you need to cache the failed authentication results for a certain period of time, It can be set through the parameter -auth-fail-cache
to improve performance and reduce the pressure on the authentication interface. The unit of --auth-fail-cache is seconds. The default is 0. Setting 0 turns off the cache. sps
is 0.http://127.0.0.1:3100?argk=argv
socks5://127.0.0.1:3100?argk=argv
Explanation: http://
, socks5://
is fixed, 127.0.0.1:3100
is the address of the upstream
When sps
is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: protocol://a:[email protected]:33080?argk=argv
, please refer to SPS chapter for details, multiple upstreams , the description of the -P
параметр.
Parameters, ?
followed by argk=argv
are parameters: parameter name = parameter value, multiple parameters are connected with &
.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
4.Upstream supports multiple instances, regardless of whether SPS is 1 or 0, and they are separated by semicolons ;. When connecting to an upstream, by default, one upstream is randomly chosen. However, it supports setting the weight parameter for each upstream. If the weight is set for any upstream, all upstreams must have the weight parameter set. The weight must be greater than 0; otherwise, the weight is considered invalid, and random selection is applied. This selection logic is also working after the authentication cache is включено.
Examples of multiple upstreams:
http://127.0.0.1:3100?argk=argv;http://127.0.0.2:3100?argk=argv
http://127.0.0.1:3100?argk=argv&weight=10;http://127.0.0.2:3100?argk=argv&weight=20
Weight selection logic:
When a weight is set for an upstream, it divides the total weight among the upstreams based on their order. For example, if there are two upstreams with weights 10 and 20 respectively, the total weight is 30. The first upstream's weight range is 1-10, and the second upstream's weight range is 11-30. This logic extends to more upstreams. Each time, a random number within the total weight range is chosen, and the corresponding upstream is selected based on this number's range.
The proxy's http (s) / socks5 / sps / tcp / udp proxy function supports traffic reporting. You can set an http interface address through the parameter --traffic-url
. The proxy will report the traffic used for this connection to this address.Specifically, the proxy sends an HTTP to GET request to the HTTP URL address set by --traffic-url
. There are two reporting modes, which can be specified by the --traffic-mode
parameter. It can be reported in the normal mode or in the fast mode.
Report in normal
normal mode
When the connection is released, the proxy will report the traffic used for this connection to this --traffic-url
address.
Report in fast
mode
For each connection that has been established, the proxy will timely
report the traffic generated by this connection to this --traffic-url
address.
Timing
defaults to 5 seconds, and you can modify Timing
to the appropriate number of seconds via the parameter --traffic-interval
.
Report in fast
global mode
By default, if the API can't handle high concurrency report access, you can use the fast global mode, Use the parameter --fast-global
to open, this parameter is only valid when --traffic-mode=fast
. In fast global mode, for a --traffic-url
, no matter how many concurrent connections there are, only have one reporter, and the reporting interval is 5 seconds. In this mode, the reporting request method is POST
, Content-Type
is application/json
, the post body data is JSON Array
, example: [{},{}]
, the keys of object in the array are same with the following Reqeust parameter description
.
The traffic reporting function combined with the above API authentication function can control the user's traffic usage in real time. The traffic is reported to the interface. The interface writes the traffic data to the database, and then the authentication API queries the database to determine the traffic usage and determine whether the user can be successfully authenticated.
The following is a complete URL request example:
http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a
Request parameter description:
id
: service id flag.
server_addr
: proxies's address requested by the client, format: IP: port.
client_addr
: client address, format: IP: port.
target_addr
: target address, format: "IP: port", when tcp / udp proxy, this is empty.
username
: proxy authentication user name, this is empty when tcp / udp proxy.
bytes
: the number of traffic bytes used by the user.
out_local_addr
: outgoing tcp connection's local address,format: IP: port.
out_remote_addr
: outgoing tcp connection's remote address,format: IP: port.
upstream
: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
The --traffic-url
URL must response the HTTP status code 204
. Only when the traffic is reported will the report be considered successful, and if it response other status codes, it will be considered that the reported traffic failed, and the log will be output.
The proxy's http (s) / socks5 / sps proxy function supports a control interface, which can be specified by the parameter --control-url http interface address, Then the proxy will interval send all the usernames or client IPs currently connected to the proxy to this URL. Specifically, the proxy sends an HTTP to POST request to the HTTP URL address set by --control-url.
interval
defaults to 30 seconds, this value can be modified via the --control-sleep parameter.
When the user expires, or the user's traffic has been used up, the authentication API can only control the user cannot create a new connection, but the connection with the proxy has been established and the connection cannot be immediately disconnected. Then this problem can be solved through the control interface. The control interface will return the content through the control interface in the slowest interval
time, and the end is invalid when the user establishes the connection.
An HTTP POST request will be sent to the control. The interface form
has three fields: interface, ip, conns, and the conns
field requires a user whose proxy version is greater than proxy 12.2
.
user
The username currently connected to the agent, multiple separated by commas, for example: user1, user2
ip
The client IP is connected to the proxy, and multiple clients using English are split addresses, for example: 1.1.1.1, 2.2.2.2
conns
The tcp connection information currently connecting to the proxy port to transmit data. The conns value is a json string, the format is a sequence of connections, the element is an object, the object contains the details of the connection, conns format: [{"id":"ab7bf1f10501d6f7","client":"127.0.0.1:62112","server":"127.0.0.1:9092","user":""}]
Object field description: id: connection id, client: client's unique IP address and port, server: client's IP and no port access, user's connection authentication (null if any)
The data returned by the control interface is invalid user and IP or connection. The format is a json object data. There are three fields user, ip, and conns. The conns
field requires the proxy version greater than or equal to 12.2
. Format: {"user":"a,b","ip":"",conns:["ab7bf1f10501d6f7","cb7bf1f10501d6f7"]}
user
: The username currently connected to the proxy, multiple separated by commas, not left blank, for example: user1, user2
ip
: The ip address of the client currently connected to the proxy, multiple separated by commas, not left blank, for example: 1.1.1.1, 2.2.2.2
conns
: is an array, the element is a connection id, this id is the id field of the connection object in conns in the above Request Description
.
Представлять:
user
or IP
authentication cache will be cleared. Suppose --control-url http://127.0.0.1:33088/user/control.php
points to a PHP interface address. The content of control.php is as follows:
<?php
#revcieve proxy post data
$ userArr = explode ( " , " , $ _POST [ ' user ' ]);
$ ipArr = $ _GET [ ' ip ' ];
//invalid users array
$ badUsers =[];
foreach ( $ userArr as $ user ) {
//logic business, push invalid user into $badUsers
$ badUsers []= $ user ;
}
$ data =[ " user " => implode ( " , " $ badUsers), " ip " => "" , " conns " =>[]];
echo json_encode ( $ data );
The proxy http(s)/socks5/sps proxy function supports the user to access the proxy pair through the configuration file, and supports the http(s) proxy ``Proxy Basic proxy authentication` and the socks5 proxy authentication.
The proxy's http(s)/socks5/sps proxy function can pass
--auth-file
, --max-conns
, --ip-limit
, --rate-limit
, -a
These five parameters control.
--auth-file
The authenticated user name and password file. This parameter specifies a file, one line per rule, in the format: "username: password: number of connections: rate: upstream".
Connection number
is the maximum number of connections for the user. The 'rate' is the maximum speed of each tcp connection of the user. The unit is: byte/second. The upper level is the upper level used by the user.
Not only can the authenticated user be set by --auth-file
, but also the -a
parameter can be set directly. Multiple users can repeat multiple -a
parameters.
For example: proxy http -aa:b:0:0: -ac:d:0:0:
Пример объяснения:
For example: user:pass:100:10240:http://192.168.1.1:3100
user
is the authentication username
pass
is the authentication user password (cannot contain a colon:)
100
is the maximum number of connections for this user, not limited to write 0
10240
is the rate limit of this user's single tcp connection, the unit is: byte / sec, no limit write 0
http://192.168.1.1:3100
is the upstream used by this user, no space is left blank
--max-conns
Limit the maximum number of global connections for the proxy service, a number, 0 is unrestricted, default is 0.
--ip-limit
Controls the number of connections and connection rate of the client IP. This parameter specifies a file, one rule per line, and the beginning of # is gaze.
The sample file ip.limit, the rule format is as follows:
127.0.0.1:100:10240:http://192.168.1.1:3100
Rule interpretation:
127.0.0.1
is the IP to be restricted
100
is the maximum number of connections for this IP, not limited to write 0
10240
is the rate limit of IP single tcp connection, the unit is: byte / s, no limit write 0
http://192.168.1.1:3100
is the upstream used by this IP, and it is not left blank.
--rate-limit
Limit the speed of each tcp connection of the service, for example: 100K 2000K 1M . 0 means unlimited, default 0.
The proxy supports the cluster management. The proxy is installed on each machine node as an agent, with the control panel [ proxyadmin cluster edition
] (https://github.com/snail007/proxy-admin-cluster) Unified management of proxy services on massive machines.
If the proxy is to be run as an agent, assume that the cluster port address of the control panel is: 1.1.1.1: 55333
.
The command example is as follows:
proxy agent -k xxx -c 1.1.1.1:55333 -i test
Объяснение команды:
agent: is a function parameter, which means running agent mode.
-k : The encryption and decryption key for communication with proxyadmin cluster edition
. This key is set in the configuration file of proxyadmin cluster edition
.
-c : The cluster port address of proxyadmin cluster edition
, format: IP:port.
-i : The unique identifier of the agent ensures that each agent is different. The "unique identifier" specified here is used when adding a node to the control panel. The IP is filled with this "unique identifier". If -i is not specified, the default is empty, and the control panel adds the IP field to fill in: the agent's internet IP.
-u: proxy parameter, empty by default. You can specify an agent, and the agent will communicate with the cluster through this agent.
The format is the same as that of --jumper
. For details, please refer to the --jumper
part of the manual.
уведомление:
When the client service is configured in the control panel, all nodes use the same key, which leads to only one client working. To solve this problem, Client service parameters can use placeholders: {AGENT_ID}
to refer to the agent's id as the client's key, so as to ensure that each client has a unique key.
For example, client service parameters:
client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}
The proxy can reverse proxy http and https websites.
The supported features are as follows:
Example, configure file: rhttp.toml
。
proxy rhttp -c rhttp.toml
For detail usage, please refer to the configuration file rhttp.toml, which has a complete configuration description.