O GoProxy é um proxy http de alto desempenho, proxy https, proxy meias5, proxy ss, proxies websocket, proxies tcp, proxies udp, escudo de jogo, proxies de jogo Suporte para proxies diretos, proxy reverso, proxy transparente, proxies nat da internet, proxy https. balanceamento de carga, balanceamento de carga de proxy http, balanceamento de carga de proxies Socks5, balanceamento de carga de proxy de soquete, balanceamento de carga de proxy ss, mapeamento de porta TCP/UDP, SSH trânsito, transmissão criptografada TLS, conversão de protocolo, proxy DNS antipoluição, autenticação API, limite de velocidade, limite de conexão reversa para ajudá-lo a expor um servidor local atrás de um NAT ou firewall à Internet para que você ou seus visitantes possam acessá-lo. direta e facilmente.
E ProxyAdmin é um poderoso console web de snail007/goproxy .
O manual nesta página se aplica à versão mais recente do goproxy. Outras versões podem não ser aplicáveis.
Clique para entrar no Telegram
Dica: Todas as operações requerem privilégios de root.
A versão gratuita faz isso:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
A versão comercial faz isso:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
A instalação está concluída, o diretório de configuração é /etc/proxy Para um uso mais detalhado, consulte o diretório do manual acima para saber mais sobre os recursos que você deseja usar se a instalação falhar ou seu vps não for um Linux de 64 bits. sistema, siga as etapas semiautomáticas abaixo para instalar:
Endereço de download: https://github.com/snail007/goproxy/releases/latest
Tomemos a versão 7.9 como exemplo. Se você tiver a versão mais recente, use o link da versão mais recente. Observe que o número da versão no link de download abaixo é o número da versão mais recente.
A versão gratuita faz isso:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
A versão comercial faz isso:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
A versão gratuita faz isso:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
A versão comercial faz isso:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
atualização de proxy use espelho para baixar, se sua atualização apresentar erro com espelho, você pode definir uma variável de ambiente UPDATE_MIRROR=false
Windows: set UPDATE_MIRROR=false
e então proxy update
Linux: export UPDATE_MIRROR=false
então proxy update
proxy update
Forçar atualização.
proxy update -f
Por exemplo, proxy
colocado em c:gpproxy
.
c:
cd gp
proxy update
Forçar atualização.
c:
cd gp
proxy update -f
O proxy é licenciado sob licença GPLv3.
Grupo Oficial de Telegramas: goproxy
O autor deste projeto descobriu que um grande número de desenvolvedores baseados no projeto para desenvolvimento secundário ou usando um grande número de códigos principais do projeto sem cumprir o acordo GPLv3, o que viola seriamente a intenção original de usar o acordo de código aberto GPLv3 neste projeto. Diante dessa situação, o projeto adota o código-fonte atrasa a estratégia de lançamento, até certo ponto, para coibir esses comportamentos que não respeitam o código aberto e não respeitam os resultados do trabalho de terceiros. continuará atualizando as iterações e continue a lançar o programa binário de plataforma completa, fornecendo ferramentas de proxies poderosas e convenientes. Se você tiver necessidades comerciais personalizadas, envie um e-mail para [email protected]
clique em mim para obter a instalação do Linux
clique em mim para instalar o MacOS
clique em mim para obter a instalação do Windows
clique em mim para obter a instalação do Windows
Este manual descreve as funções, todas incluídas na versão comercial; a versão gratuita de parâmetros funcionais avançados, como autenticação, não está incluída;
Se você encontrar alguns comandos ao usar a versão gratuita para executar alguns comandos, não existe um prompt semelhante ao seguinte parâmetro xxx, indicando que este parâmetro é uma função da versão comercial.
err: unknown long flag '-a'
Comparação entre as funcionalidades da versão gratuita e da versão comercial, operações detalhadas de como adquirir e usar a versão comercial clique aqui para visualizar
O tutorial manual, o sistema padrão é Linux, o programa é proxy, todas as operações requerem privilégios de root;
Se você for Windows, use a versão Windows do proxy.exe.
O próximo tutorial apresentará o método de uso por meio dos parâmetros da linha de comando, ou você pode obter os parâmetros lendo o arquivo de configuração.
O formato específico é especificar o arquivo de configuração pelo símbolo @, por exemplo: [email protected]
O formato em configfile.txt é que a primeira linha é o nome do subcomando e a segunda linha começa com um parâmetro por linha.
Formato: parameter Parameter value
, parâmetro de gravação direta sem valor do parâmetro, por exemplo: --nolog
Por exemplo, o conteúdo de configfile.txt é o seguinte:
Http
-t tcp
-p :33080
--forever
Por padrão, as informações geradas pelo log não incluem o número de linhas do arquivo. Em alguns casos, para solucionar problemas do programa, o problema é localizado rapidamente.
Você pode usar o parâmetro --debug para gerar o número de linhas de código e milissegundos.
Por padrão, o log é exibido diretamente no console. Se desejar salvar em um arquivo, você pode usar o parâmetro --log.
Por exemplo: --log proxy.log, o log será enviado para proxy.log para facilitar a solução de problemas.
Registrando INFO e WARN por padrão, você pode definir --warn
para gerar apenas log de aviso.
O processo de proxy http, tcp, udp se comunica com o upstream. Para segurança, usamos comunicação criptografada. Claro, podemos optar por não criptografar a comunicação. é necessário.
Gere um certificado autoassinado e um arquivo de chave com o comando a seguir.
proxy keygen -C proxy
O arquivo de certificado proxy.crt e o arquivo de chave proxy.key serão gerados no diretório atual do programa.
Use o comando a seguir para gerar um novo certificado usando o certificado autoassinado proxy.crt e o arquivo de chave proxy.key: goproxy.crt e goproxy.key.
proxy keygen -s -C proxy -c goproxy
O arquivo de certificado goproxy.crt e o arquivo de chave goproxy.key serão gerados no diretório atual do programa.
Por padrão, o nome de domínio dentro do certificado é aleatório e pode ser especificado usando o parâmetro -n test.com
.
Mais uso: proxy keygen --help
.
Depois que o proxy for executado por padrão, você não poderá fechar a linha de comando se quiser manter o proxy em execução.
Se você deseja executar o proxy em segundo plano, a linha de comando pode ser fechada, basta adicionar o parâmetro --daemon no final do comando.
Por exemplo:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
O daemon executa o parâmetro --forever, por exemplo: proxy http --forever
,
O proxy bifurcará o processo filho e, em seguida, monitorará o processo filho. Se o processo filho sair de forma anormal, reinicie o processo filho após 5 segundos.
Este parâmetro é combinado com o parâmetro de execução em segundo plano --daemon e o parâmetro de log --log, que pode garantir que o proxy sempre será executado em segundo plano sem sair acidentalmente.
E você pode ver o conteúdo do log de saída do proxy por meio do arquivo de log.
Por exemplo: proxy http -p ":9090" --forever --log proxy.log --daemon
Quando o VPS está atrás do dispositivo nat, o IP da interface de rede vps é o IP da intranet. Neste momento, você pode usar o parâmetro -g para adicionar o ip da rede externa vps para evitar o loop infinito.
Suponha que o IP da sua rede externa vps seja 23.23.23.23. O comando a seguir define 23.23.23.23 com o parâmetro -g.
proxy http -g "23.23.23.23"
O proxy HTTP(S)SOCKS5SPS suporta balanceamento de carga de nível superior e alta disponibilidade, e vários parâmetros de repetição P upstream podem ser usados.
A política de balanceamento de carga oferece suporte a cinco tipos, que podem ser especificados pelo parâmetro --lb-method
:
Roundrobin usado por sua vez
Leastconn usa o número mínimo de conexões
Menos tempo usa menos tempo de conexão
Hash usa um upstream fixo com base no endereço do cliente
Peso Selecione um upstream de acordo com o peso e número de conexões de cada upstream
incitar:
O intervalo de verificação do balanceamento de carga pode ser definido por --lb-retrytime
em milissegundos.
O tempo limite da conexão de balanceamento de carga pode ser definido por --lb-timeout
em milissegundos.
Se a política de balanceamento de carga for peso, o formato -P será: 2.2.2.2: 3880?w=1, onde 1 é o peso e um número inteiro maior que 0.
Se a política de balanceamento de carga for hash, o padrão é selecionar o upstream com base no endereço do cliente. Você pode selecionar o upstream usando o endereço de destino do acesso --lb-hashtarget
.
Os proxies TCP não possuem parâmetro --lb-hashtarget
.
O padrão é balanceamento de carga + modo de alta disponibilidade. Se o parâmetro --lb-onlyha
for usado, apenas o modo de alta disponibilidade será usado, então um nó será selecionado de acordo com a estratégia de balanceamento de carga, e esse nó será usado até que não seja usado. vivo, então outro nó será selecionado para uso, alternando assim.
Se todos os nós não estiverem ativos, um nó aleatório será selecionado para uso.
Agente HTTP (s), agente SPS, penetração na intranet, agente tcp suporta a conexão de upstreams por meio de agentes intermediários de terceiros,
Os parâmetros são: --jumper, todos os formatos são os seguintes:
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 representa o proxy http e Socks5 normal.
Https,socks5s representa os agentes http e meias5 protegidos por tls.
Isso é proxy http sobre TLS, meias sobre TLS.
O proxy meias/http(s)/sps suporta listas negras e brancas de nomes de domínio.
Use o parâmetro --stop para especificar um arquivo de lista negra de nomes de domínio, então a conexão será desconectada quando o usuário conectar esses domínios no arquivo.
Especifique um arquivo de lista de permissões de nomes de domínio com o parâmetro --only e a conexão será desconectada quando o usuário se conectar a um domínio diferente dos domínios no arquivo.
Se --stop e --only estiverem definidos, apenas --only funcionará.
O formato do arquivo da lista de nomes de domínio em preto e branco é o seguinte:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
Descrição:
*
e ?
, *
representa qualquer número de caracteres, ?
2. **.baidu.com
Corresponde, não importa quantos níveis todos os sufixos tenham ..baidu.com`.
3. *.taobao.com
O sufixo correspondente é o nome de domínio de terceiro nível de .taobao.com
.
5. #
no início do comentário.
meias/http(s)/sps proxy todos suportam lista negra de portas.
Use o parâmetro --stop-port
para especificar um arquivo de lista negra de portas e, quando o usuário se conectar às portas no arquivo, a conexão poderá ser feita.
O formato do conteúdo do arquivo da lista negra de portas é o seguinte:
3306
22
Observação:
#
são comentários.meias/http(s)/sps/tcp/udp/dns/ponte de penetração de intranet/tbridge de penetração de intranet, suporte à lista preta e branca de IP do cliente.
Use o parâmetro --ip-deny para especificar um arquivo de lista negra de IP do cliente, então a conexão será desconectada quando o IP do usuário estiver neste arquivo.
Use o parâmetro --ip-allow para especificar um arquivo de lista de permissões de IP do cliente, então a conexão será desconectada quando o IP do usuário não estiver no arquivo.
Se --ip-deny e --ip-allow estiverem definidos, apenas --ip-allow funcionará.
O formato da lista negra de IP do cliente e do arquivo da lista branca é o seguinte:
192.168.1.1
192.168.*.*
192.168.1?.*
Descrição:
*
e ?
, *
representa qualquer número de caracteres, ?
2. #
no início do comentário.
Existem muitos locais nas diversas funções de proxy do proxy para definir um arquivo. Por exemplo: --blocked Especifica um arquivo de lista de nomes de domínio que vai diretamente para o nível superior.
Se o parâmetro suportar o arquivo de carregamento do protocolo, o caminho do arquivo poderá ser não apenas o caminho do arquivo, mas também:
a. A codificação base64 no início de "base64://" indica o conteúdo do arquivo acima, por exemplo: base64://ajfpoajsdfa=
b. "str://" no início do múltiplo separado por vírgula em inglês, como: str://xxx, yyy
Os arquivos bloqueados, diretos, interrompidos, somente, hosts, resolve.rules, rewriter.rules, ip.allow, ip.deny do proxy suportam o carregamento de protocolo.
proxies Socks5spshttp, o parâmetro que controla o número de conexões de clientes simultâneas é: --max-conns-rate
, que controla o número máximo de conexões de clientes por segundo, padrão: 20, 0 é ilimitado
"tcp/http/socks/sps" suporta escuta em múltiplas portas e portas de intervalo. Em circunstâncias normais, é suficiente escutar em uma porta, mas se você precisar escutar em múltiplas portas, o parâmetro -p é suportado. é: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, mais As ligações podem ser separados por vírgulas.
proxy http -t tcp -p "0.0.0.0:38080"
O argumento da porta de escuta -p
pode ser:
-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
Use a porta local 8090, assumindo que o proxy HTTP upstream seja 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Também podemos especificar o arquivo da lista negra e branca do nome de domínio do site, um nome de domínio por linha, a regra correspondente é a correspondência mais à direita, por exemplo: baidu.com, a correspondência é .baidu.com , o nome de domínio da lista negra. vai diretamente para o agente upstream, lista branca O nome de domínio não vai para o agente upstream.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Nota: O
proxy.crt
eproxy.key
usados pelo proxy secundário devem ser consistentes com o proxy primário.
Proxy HTTP nível 1 (VPS, IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy HTTP secundário (Linux local)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Então acessar a porta local 8080 é acessar a porta proxy 38080 no VPS.
Proxy HTTP secundário (janelas locais)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Em seguida, configure seu sistema windows, o proxy que precisa passar pelo programa proxy Internet é o modo http, o endereço é: 127.0.0.1, a porta é: 8080, o programa pode acessar a Internet através de vps através do canal criptografado.
Proxy HTTP nível 1 VPS_01, IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy HTTP secundário 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
Proxy HTTP nível 3 (local)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Então, acessar a porta local 8080 é acessar a porta proxy 38080 no proxy HTTP primário.
Para o protocolo HTTP proxy, podemos realizar a autenticação básica. O nome de usuário e a senha autenticados podem ser especificados na linha de comando.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Para vários usuários, repita o parâmetro -a.
Ele também pode ser colocado em um arquivo no formato "nome de usuário: senha" e então especificado com -F.
proxy http -t tcp -p ":33080" -F auth-file.txt
Além disso, o proxy http(s) também integra autenticação API HTTP externa. Podemos especificar um endereço de interface de url http com o parâmetro --auth-url.
Então, quando houver uma conexão do usuário, o proxy solicitará a url no modo GET e trará os quatro parâmetros a seguir. Se o código de status HTTP 204 for retornado, a autenticação foi bem-sucedida.
Em outros casos, a autenticação falhou.
Por exemplo:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Quando o usuário se conectar, o proxy solicitará a url ("http://test.com/auth.php") no modo GET.
Pegue cinco parâmetros: usuário, pass, ip, local_ip, target:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
Usuário: nome de usuário
Senha: senha
IP: IP do usuário, por exemplo: 192.168.1.200
Local_ip: IP do servidor acessado pelo usuário, por exemplo: 3.3.3.3
Target: URL acessada pelo usuário, por exemplo: http://demo.com:80/1.html ou https://www.baidu.com:80
Se não houver nenhum parâmetro -a ou -F ou --auth-url, a autenticação Básica será desativada.
Por padrão, o proxy determinará de forma inteligente se o nome de domínio de um site está inacessível. Se não estiver acessível, ele irá para o proxy HTTP de nível superior. Com --always, todo o tráfego do proxy HTTP pode ser forçado a ir para o proxy HTTP superior. procuração.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Descrição: O princípio da transferência ssh é usar a função de encaminhamento do ssh, ou seja, após conectar-se ao ssh, você pode acessar o endereço de destino através do proxy ssh.
Suponha que exista: vps
Porta proxy HTTP(S) local 28080, executando:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Porta proxy HTTP(S) local 28080, executando:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
O protocolo KCP requer o parâmetro --kcp-key para definir uma senha para criptografar e descriptografar dados.
Proxy HTTP nível 1 (VPS, IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
Proxy HTTP secundário (Linux local)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Então acessar a porta local 8080 é acessar a porta proxy 38080 no VPS, os dados são transmitidos através do protocolo kcp, observe que o kcp é o protocolo udp, então o firewall precisa liberar o protocolo udp 380p.
O proxy não apenas suporta a configuração de proxy em outro software, mas também fornece serviços de proxy para outro software. Ele também suporta a análise direta do nome de domínio do site solicitado para o IP de escuta do proxy e, em seguida, o proxy escuta as portas 80 e 443 e, em seguida, o proxy escuta as portas 80 e 443. o proxy fornecerá automaticamente acesso proxy ao site HTTP(S) que você precisa acessar.
Como usar:
Na máquina "proxy proxy de último nível", como o proxy deve ser disfarçado como todos os sites, a porta HTTP padrão do site é 80, HTTPS é 443 e o proxy pode escutar as portas 80 e 443. Parâmetros -p múltiplo endereços com segmentação por vírgulas.
proxy http -t tcp -p :80,:443
Este comando inicia um agente proxy na máquina e escuta as portas 80 e 443 ao mesmo tempo. Ele pode ser usado como um proxy normal ou resolver diretamente o nome de domínio que precisa ser proxy para o IP desta máquina.
Se houver um agente upstream, consulte o tutorial acima para configurar o upstream, o uso é exatamente o mesmo.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
Observação:
O resultado da resolução DNS do servidor onde o proxy está localizado não pode ser afetado pela resolução personalizada, caso contrário será um loop infinito. O proxy proxy deve especificar o parâmetro --dns-address 8.8.8.8
.
Este modo precisa ter uma certa base de rede. Se os conceitos relacionados não forem compreendidos, pesquise você mesmo.
Supondo que o proxy esteja em execução no roteador, o comando de inicialização é o seguinte:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
Em seguida, adicione a regra iptables, aqui estão as regras de referência:
# 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
Parâmetros --dns-address e --dns-ttl, usados para especificar o dns (--dns-address) usado pelo proxy para acessar o nome de domínio.
E o tempo de cache do resultado da análise (--dns-ttl) segundos, para evitar interferência do DNS do sistema no proxy, além da função de cache também pode reduzir o tempo de resolução do DNS para melhorar a velocidade de acesso.
Por exemplo:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
suporta vários endereços DNS, balanceamento de carga, separados por vírgula. Por exemplo: --dns-address "1.1.1.1:53,8.8.8.8:53"
Você também pode usar o parâmetro --dns-interface
para especificar a largura de banda usada para resolução de DNS, por exemplo: --dns-interface eth0
, a resolução de DNS usará a largura de banda eth0, este parâmetro deve ser definido como --dns-address
para ser eficaz.
O proxy http(s) do proxy pode criptografar dados tcp por meio da criptografia padrão tls e do protocolo kcp sobre tcp, além de oferecer suporte à personalização após tls e kcp.
Criptografia, ou seja, criptografia personalizada e tls|kcp podem ser usados em combinação. O uso interno da criptografia AES256, você só precisa definir uma senha ao usá-la.
A criptografia é dividida em duas partes, uma é se a criptografia e descriptografia local (-z) e a outra é se a transmissão com o upstream (-Z) é criptografada ou descriptografada.
A criptografia customizada requer que ambas as extremidades sejam proxy. Os dois níveis e três níveis a seguir são usados como exemplos:
Instância secundária
Execute em vps nível 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Execução secundária local:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Desta forma, quando o site é acessado através do agente local 8080, o site alvo é acessado por meio de transmissão criptografada com o upstream.
Instâncias de três níveis
Execute em vps nível 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Execute no vps secundário (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
Execução local de três níveis:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Desta forma, quando o site é acessado através do agente local 8080, o site alvo é acessado por meio de transmissão criptografada com o upstream.
O proxy http(s) proxy pode criptografar dados tcp por meio da criptografia padrão tls e do protocolo kcp sobre o tcp, e também pode compactar dados antes da criptografia personalizada.
Ou seja, compactação e criptografia personalizada e tls|kcp podem ser usadas em combinação. A compactação é dividida em duas partes, uma parte é a transmissão de compactação local (-m).
Parte dele é compactada com a transmissão upstream (-M).
A compactação exige que ambos os lados sejam proxy. A compactação também protege os dados (criptografados) até certo ponto.
Instância secundária
Execute em vps nível 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Execução secundária local:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Desta forma, quando o site é acessado através do agente local 8080, o site alvo é acessado por meio de compressão com o upstream.
Instâncias de três níveis
Execute em vps nível 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Execute no vps secundário (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Execução local de três níveis:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Desta forma, quando o site é acessado através do agente local 8080, o site alvo é acessado por meio de compressão com o upstream.
O proxy HTTP(S) suporta balanceamento de carga de nível superior e vários parâmetros de repetição P upstream podem ser usados.
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
O limite de velocidade é 100K, que pode ser especificado pelo parâmetro -l
, por exemplo: 100K 2000K 1M 0 significa sem limite.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
O parâmetro --bind-listen
pode ser usado para abrir a conexão do cliente com o IP do portal e usar o IP do portal como o IP de saída para acessar o site de destino. Se o IP incorreto estiver vinculado, o proxy não funcionará. ponto, o proxy tentará vincular o destino sem vincular o IP e o log será solicitado.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
Embora o parâmetro --bind-listen
acima possa especificar o IP de saída, o entry IP
e o outgoing IP
não podem ser referenciados artificialmente. Se desejar que o IP de entrada e o IP de saída sejam diferentes, você pode usar --bind-ip
parâmetro, formato: IP:port
, por exemplo: 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
. O parâmetro --bind-ip
pode ser repetido.
Por exemplo, esta máquina possui IP 5.5.5.5
, 6.6.6.6
, e monitora duas portas 8888
e 7777
, o comando é o seguinte:
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
Então a porta de acesso do cliente 7777
, o IP de saída é 5.5.5.5
, a porta de acesso 8888
, o IP de saída é 6.6.6.6
, se --bind-ip
e --bind- are set at the same time listen
, --bind-ip
tem prioridade mais alta s Além disso, a parte IP
do parâmetro --bind-ip
suporta a especificação do network interface name
, wildcards
e mais de um pode ser. especificado. A descrição detalhada é a seguinte:
--bind-ip eth0:7777
e, em seguida, o cliente acessa a porta 7777
e o IP de saída é o IP da interface de rede eth0.--bind-ip eth0.*:7777
, então o cliente acessa a porta 7777
e o IP de saída é selecionado aleatoriamente do IP da interface de rede começando com eth0.
--bind-ip 192.168.?.*:777
, então o cliente acessa a porta 7777
, o IP de saída são todos os IPs da máquina e corresponde ao IP de 192.168.?.*
A selecionado aleatoriamente.-bind-ip pppoe??,192.168.?.*:7777
, e então o cliente acessa a porta 7777
, O IP de saída é o nome da interface de rede da máquina que corresponde pppoe??
Ele é selecionado aleatoriamente no IP que corresponde 192.168.?.*
no IP da máquina.*
representa 0 para qualquer caractere, ?
Representa 1 caractere.--bind-refresh
para especificar o intervalo para atualizar as informações da interface de rede local, o padrão é 5
, a unidade é o segundo.Por padrão, o parâmetro -C, -K é o caminho para o certificado crt e o arquivo de chave.
Se for o início de base64://, então os últimos dados serão considerados codificados em base64 e serão usados após a decodificação.
Configuração do modo inteligente, pode ser inteligente | direto | pai.
O padrão é: pai.
O significado de cada valor é o seguinte:
--intelligent=direct
, os alvos bloqueados não estão diretamente conectados.
--intelligent=parent
, o alvo que não está no direto irá para o nível superior.
--intelligent=intelligent
, bloqueado e direto não tem alvos, determine de forma inteligente se deve usar o alvo de acesso upstream.
proxy help http
Execução local:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
Então acessar a porta local 33080 é acessar a porta 22 de 192.168.22.33.
O parâmetro -p
suporta:
-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
Se o número de portas de escuta locais for maior que 1, a porta superior correspondente à porta local será conectada e a porta em -P
será ignorada.
Se você precisar de uma conexão de todas as portas, conecte-se à porta especificada superior, você pode adicionar o parâmetro --lock-port
.
como:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
Em seguida, a conexão da porta 33080
se conecta à porta 33080
de 0
e as outras portas são semelhantes -P
Se você deseja conectar as portas de 33080
, 33081
, etc. À porta 22
de 192.168.22.33, você pode adicionar o parâmetro --lock-port
.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) é executado:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
Execução local:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
Em seguida, acesse a porta local 23080 é acessar a porta 8020 de 22.22.22.33.
Proxy Primário TCP VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
Proxy TCP secundário VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Proxy TCP de nível 3 (local)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
Em seguida, o acesso à porta local 8080 é acessar a porta 8080 de 66.66.66.66 através do túnel TCP criptografado.
VPS (IP: 22.22.2.33) é executado:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
Execução local:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Em seguida, acesse a porta local 23080 é acessar a porta 8080 de 22.22.22.33 através do túnel TCP criptografado.
Proxy Primário TCP 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
Proxy TCP secundário 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
Proxy TCP de nível 3 (local)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Em seguida, o acesso à porta local 8080 é acessar a porta 8080 de 66.66.66.66 através do túnel TCP criptografado.
Às vezes, a rede em que o proxy está localizado não pode acessar diretamente a rede externa
O parâmetro -j pode ajudá -lo a conectar o proxy ao peer -p através do proxy HTTPS ou SOCKS5 ao mapear a porta TCP proxy, mapeando a porta externa para o local.
O formato -j parâmetro é o seguinte:
Escrita de procuração HTTPS:
O proxy precisa de autenticação, nome de usuário: nome de usuário senha: senha
Https: // nome de usuário: senha@host: porta
Agente não requer autenticação
Https: // host: porta
SOCKS5 Escrita de proxy:
O proxy precisa de autenticação, nome de usuário: nome de usuário senha: senha
Socks5: // Nome de usuário: senha@host: Port
Agente não requer autenticação
Socks5: // Host: Port
Host: o nome IP ou domínio do proxy
Porta: a porta do proxy
Quando o proxy TCP é um tipo superior (parâmetro: -t) é o TCP, ele suporta o IP --bind-listen
saída especificado. Como IP de saída para acessar o site de destino.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
Embora o parâmetro acima --bind-listen
possa especificar o IP de saída, o entry IP
e o outgoing IP
não podem --bind-ip
referenciados artificialmente. Parâmetro, formato: IP:port
, por exemplo: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. pode repetir a identificação do parâmetro --bind-ip
.
Por exemplo, esta máquina possui IP 5.5.5.5
, 6.6.6.6
e monitora duas portas 8888
e 7777
, o comando é o seguinte:
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
Em seguida, a porta de acesso ao cliente 7777
, o --bind-ip
de saída é 5.5.5.5
, porta de acesso 8888
, o IP de saída é 6.6.6.6
, se ambos --bind-ip
e --bind- are set at the same time listen
--bind-ip
tem maior prioridade.
Além disso, a parte IP
do parâmetro --bind-ip
suporta especificar o network interface name
, wildcards
e mais de um pode ser especificado.
--bind-ip eth0:7777
, o cliente acessa a porta 7777
, e o IP de saída é o IP da interface da rede ETH0.eth0.
7777
--bind-ip eth0.*:7777
--bind-ip 192.168.?.*:7777
, então o cliente acessa a porta 7777
, e o IP de saída é todo o IPS da máquina, correspondendo ao IP de 192.168.?.*
? selecionado aleatoriamente um.7777
, separados por vírgulas de meia largura, como: --bind-ip pppoe??,192.168.?.*:7777
IP é o nome da interface de rede da máquina que corresponde 192.168.?.*
pppoe??
*
representa 0 para qualquer número de caracteres e ?
--bind-refresh
para especificar o intervalo para atualizar as informações da interface de rede local, o padrão é 5
, a unidade é a segunda.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
pode limitar o número máximo de conexões por porta. 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
parâmetro --rate-limit
pode limitar a taxa de cada conexão TCP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--ip-rate
A taxa total de cada IP proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
cliente. 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
porta Limite O parâmetro --port-rate
Limite a taxa total de cada porta de serviço. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
e ( --ip-rate
ou --port-rate
) podem ser usados juntos. --c
Controla --C
deve comprimir a transmissão entre o local e o cliente, o padrão false;
Exemplos:
VPS (IP: 22.22.22.33) Implementação: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
Execução local: proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
Execução local:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
Em seguida, acesse a porta UDP local: 5353 deve acessar 8.8.8.8 UDP: 53 Port.
O parâmetro -p
suporta:
-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
Se o número de portas de escuta local for maior que 1, a porta superior correspondente correspondente à porta local será conectada e a porta em -P
será ignorada.
Se você precisar de uma conexão de todas as portas, conecte-se à porta superior especificada, poderá adicionar o parâmetro --lock-port
.
como:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
Em seguida, a conexão da porta 33080
se conecta à porta 33080
de 0
e as outras portas são semelhantes -P
Se você deseja conectar as portas de 33080
, 33081
, etc. à porta 2222
de 192.168.22.33, você pode adicionar o parâmetro --lock-port
.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) é executado:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
Execução local:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
Em seguida, acesse a porta Local UDP: 5353 é através do túnel TCP, através da porta VPS Access 8.8.8.8 UDP: 53.
Proxy Primário TCP VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
Proxy TCP secundário VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Proxy TCP de nível 3 (local)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
Em seguida, o acesso à porta 5353 local é através do túnel TCP, através do VPS para acessar a porta 8.8.8.8.
VPS (IP: 22.22.2.33) é executado:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Execução local:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Em seguida, acesse a porta Local UDP: 5353 é através do túnel TCP criptografado, através do VPS Access 8.8.8.8 UDP: 53 porta.
Proxy Primário TCP 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
Proxy TCP secundário 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
Proxy TCP de nível 3 (local)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Em seguida, acesse a porta local 5353 é acessar a porta 8.8.8.8 53 a VPS_01 através do túnel TCP criptografado.
Quando os proxies UDP upstream --bind-listen
parâmetro: -t) são UDP, ele suporta o IP de saída especificado. IP para acessar o destino.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
Penetração da intranet, dividida em duas versões, "versão multi-link" e "versão multiplexada", geralmente como um serviço da web, esse serviço não é uma conexão de longo prazo, é recomendável usar "versão de múltiplas links", se é manter o tempo que a conexão de tempo sugere usar uma "versão multiplexada".
O tutorial a seguir usa a "versão multiplexada" como um exemplo para ilustrar como usá -lo.
A penetração da intranet consiste em três partes: cliente, servidor e ponte;
Fundo:
Demanda:
Em casa, você pode acessar a porta 80 da Máquina A da empresa acessando a porta 28080 do VPS.
Passos:
Execute no 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
Completo
Fundo:
Demanda:
Preencha o endereço na configuração da interface de retorno de chamada da página da web da conta de desenvolvimento do WeChat: http://22.22.22.22/calback.php
Em seguida, você pode acessar o Calback.php sob a porta 80 do notebook.
Por exemplo: wx-dev.xxx.com resolve 22.22.22.22 e depois em seu próprio notebook nginx
Configure o nome de domínio wx-dev.xxx.com para o diretório específico.
Passos:
Execute em VPS para garantir que a porta 80 do VPS não seja ocupada por outros programas.
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
Execute em seu laptop
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Completo
Fundo:
Demanda:
Em casa, você pode usar a máquina da empresa A para executar serviços de resolução de nomes de domínio, definindo o DNS local para 22.22.22.22.
Passos:
Execute no 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
Completo
Fundo:
Demanda:
Para estar seguro, não quero ter acesso à máquina da empresa A no VPS e posso acessar a porta 28080 da máquina em casa.
Acesso à porta 80 da máquina da empresa A via túnel criptografado.
Passos:
Execute no VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
Executar na máquina da empresa A
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Execute no seu computador doméstico
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Completo
Dica:
Se vários clientes estiverem conectados à mesma ponte ao mesmo tempo, você precisará especificar uma chave diferente, que pode ser definida pelo parâmetro --k e --k pode ser qualquer string exclusiva.
Apenas seja o único na mesma ponte.
Quando o servidor está conectado à ponte, se houver vários clientes conectados à mesma ponte ao mesmo tempo, você precisará usar o parâmetro --k para selecionar o cliente.
Exponha várias portas repetindo o parâmetro -r.
Fundo:
Demanda:
Em casa, você pode acessar a porta 80 da Máquina A da empresa acessando a porta 28080 do VPS.
Em casa, posso acessar o porto de 21 porto da empresa A acessar a porta 29090 do VPS.
Passos:
Execute no 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
Completo
O formato completo de -r é: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1.
Por exemplo: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
Se o parâmetro --UDP for especificado, o protocolo padrão do UDP, então: -r ":8080@:80"
Padrives para UDP;
Se o parâmetro --UDP não for especificado, o protocolo padrão para o TCP, então: -r ":8080@:80"
Padrives para TCP;
4.7.2.
Por exemplo: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
Se o parâmetro --k for especificado, como o teste --k, então: -r ":8080@:80"
client_key padrão para testar;
Se o parâmetro --k não for especificado, então: -r ":8080@:80"
client_key padrão para padrão;
0.0.0.0
127.0.0.1
Às vezes, a rede em que o servidor ou o cliente está localizado não pode acessar diretamente a rede externa
O parâmetro -j pode ajudá -lo a conectar o servidor ou cliente à ponte via HTTPS ou SOCKS5.
O formato -j parâmetro é o seguinte:
Escrita de procuração HTTPS:
O proxy precisa de autenticação, nome de usuário: nome de usuário senha: senha
Https: // nome de usuário: senha@host: porta
Agente não requer autenticação
Https: // host: porta
SOCKS5 Escrita de proxy:
O proxy precisa de autenticação, nome de usuário: nome de usuário senha: senha
Socks5: // Nome de usuário: senha@host: Port
Agente não requer autenticação
Socks5: // Host: Port
Host: o nome IP ou domínio do proxy
Porta: a porta do proxy
Normalmente, o cliente de solicitação HTTP usa o IP e a porta do servidor para definir o campo do host, mas não é o mesmo que o host real esperado, o que faz com que o TCP seja passado. No entanto, o back -end depende do campo hospedeiro para localizar o Host virtual --http-host
--http-host
funcionará. parâmetro --http-host
, Dois cabeçalhos serão X-Forwarded-For
ao cabeçalho de cada solicitação X-Real-IP
.
O formato do parâmetro server
-http -host é o seguinte:
--http-host www.test.com:80@2200
, se o servidor escuta em várias portas, basta repetir o parâmetro --http-host
para definir o host para cada porta.
Exemplo:
Por exemplo, o cliente local nginx, 127.0.0.1:80 fornece um serviço da web, que está vinculado a um nome de domínio local.com
.
Em seguida, os parâmetros de inicialização do servidor podem ser os seguintes:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
Explicação:
-r :[email protected]:80
e --http-host local.com:80@2500
A porta 2500 é a porta que o servidor ouve localmente.
Quando o protocolo HTTP é usado para solicitar a porta IP: 2500 do servidor, o campo Host Host do HTTP será definido como local.com
.
Se você iniciar um servidor de encaixe separadamente, é o painel de controle de proxy-Admin.
Em seguida, inicie o servidor e adicione o parâmetro--server-id = o ID da regra de mapeamento para contar o tráfego.
Suporte à penetração da intranet Quando o servidor e as condições da rede do cliente são atendidas, o servidor e o cliente estão diretamente conectados através do P2P.
Ao iniciar a ponte, servidor, cliente, adicione o parâmetro --p2p
.
Se o orifício P2P falhar entre o servidor e o cliente, os dados de transferência de ponte serão alterados automaticamente.
A Intranet Penetrating Bridge pode definir a tecla Whitelist.
A.
b.
c.
O padrão está vazio, permitindo todas as teclas.
Julgamento do tipo Senat, fácil de verificar se a rede suporta P2P, você pode executar: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
incitar:
O proxy do SOCKS5, suporta o protocolo Connect, UDP, não suporta o Bind, suporta o nome de usuário e a autenticação de senha.
*** A --udp-port 0
UDP do SOCKS5 é desligada por padrão e pode ser ativada por --udp
. --udp-port 0
, 0
representa uma porta gratuita é selecionada aleatoriamente, ou você pode especificar manualmente uma porta específica.
proxy socks -t tcp -p "0.0.0.0:38080"
Ouça o argumento da porta -p
pode ser:
-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
Use a porta local 8090, assumindo que o proxy de meias a montante é 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Também podemos especificar o arquivo da lista em preto e branco do nome do domínio do site, um nome de domínio e um nome de domínio, a regra de correspondência é a correspondência mais à direita, por exemplo: Baidu.com, a correspondência é Nome do domínio Nome do domínio vai diretamente para o agente a montante, o nome do domínio da lista não vai para o agente a montante;
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Proxy de meias de nível 1 (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy de meias secundárias (Linux local)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Em seguida, acesse a porta local 8080 é acessar a porta proxy 38080 no VPS.
Proxy de meias secundárias (janelas locais)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Em seguida, defina seu sistema Windos, o proxy que precisa passar pelo programa de Internet proxy é o modo Socks5, o endereço é: 127.0.0.1, a porta é: 8080, o programa pode acessar a Internet através do VPS através do canal criptografado.
Soas de nível 1 proxy vps_01, ip: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Meias secundárias 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
Proxy de meias de nível 3 (local)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Em seguida, o acesso à porta 8080 local é acessar a porta proxy 38080 no proxy de meias de primeiro nível.
Por padrão, o proxy determinará inteligentemente se um nome de domínio do site é inacessível. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Descrição: O princípio da transferência SSH é usar a função de encaminhamento do SSH, ou seja, depois de se conectar ao SSH, você pode acessar o endereço de destino através do SSH Proxy.
Suponha que exista: VPS
Porta de proxy 28080 local, execute:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Porta de proxy 28080 local, execute:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Em seguida, acesse a porta local 28080 é acessar o endereço de destino através do VPS.
Para o protocolo SOCKS5 Proxy, podemos executar o nome de usuário e a autenticação de senha.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Para vários usuários, repita o parâmetro -a.
Ele também pode ser colocado em um arquivo no formato de um "nome de usuário: senha" e depois especificado com -f.
proxy socks -t tcp -p ":33080" -F auth-file.txt
Além disso, o agente Socks5 também integra a autenticação da API HTTP externa.
Então, quando houver uma conexão do usuário, o proxy solicitará o URL no modo GET, com os três parâmetros a seguir.
Em outros casos, a autenticação falhou.
Por exemplo:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Quando o usuário se conectar, o proxy solicitará o URL ("http://test.com/auth.php") no modo GET.
Traga quatro parâmetros: Usuário, Pass, IP, Local_ip:
Http://test.com/auth.php?user= {user }&pass= (pass }&ip= (
Usuário: Nome de usuário
Passe: senha
IP: IP do usuário, por exemplo: 192.168.1.200
LOCAL_IP: IP do servidor acessado pelo usuário, por exemplo: 3.3.3.3
Se não houver parâmetro -a ou -f ou --auth -url, a autenticação será desligada.
O protocolo KCP requer o parâmetro --kcp-key para definir uma senha para criptografar e descriptografar dados.
Nível 1 HTTP Proxy (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
Proxy HTTP secundário (Localux local)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Em seguida, acesse a porta local 8080 é acessar a porta proxy 38080 no VPS, os dados são transmitidos através do protocolo KCP.
-DNS-Address e--DNS-TTL Parâmetros, usados para especificar o DNS (--DNS-Address) usado pelo proxy para acessar o nome do domínio.
E o tempo de cache do resultado da análise (--DNS-TTL), para evitar a interferência do sistema DNS no proxy, além da função de cache também pode reduzir o tempo de resolução do DNS para melhorar a velocidade de acesso.
Por exemplo:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
Você também pode usar o parâmetro --dns-interface
para especificar a largura de banda usada para a resolução DNS, por exemplo: --dns-interface eth0
, a resolução DNS usará a largura de banda ETH0, esse parâmetro deve ser definido como --dns-address
para ser eficaz.
O proxy do proxy pode criptografar dados TCP por meio de criptografia padrão TLS e protocolo KCP na parte superior do TCP. Criptografia AES256, você só precisa definir uma senha ao usá -la.
A criptografia é dividida em duas partes, uma é se a criptografia e descriptografia local (-z), e a outra é se a transmissão com o upstream (-z) é criptografada ou descriptografada.
A criptografia personalizada exige que ambos os lados sejam proxy.
Os dois níveis a seguir, três níveis, por exemplo:
Instância secundária
Execute no nível 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Execução secundária local:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Dessa forma, quando o site é acessado através do agente local 8080, o site de destino é acessado através da transmissão criptografada com o upstream.
Instâncias de três níveis
Execute no nível 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Execute no VPS secundário (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
Execução local de três níveis:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Dessa forma, quando o site é acessado através do agente local 8080, o site de destino é acessado através da transmissão criptografada com o upstream.
O proxy das meias do proxy pode criptografar dados TCP por meio de criptografia personalizada e criptografia padrão TLS e protocolo KCP na parte superior do TCP.
Compressa os dados, ou seja, a função de compressão e a criptografia e o TLS personalizados | KCP podem ser usados em combinação, e a compactação é dividida em duas partes.
Parte é a transmissão local de compressão (-m), e a parte é se a transmissão com o upstream (-m) é compactada.
A compressão exige que ambos os lados sejam proxy, e a compactação também protege os dados (criptografos) até certo ponto.
Os dois níveis a seguir, três níveis, por exemplo:
Instância secundária
Execute no nível 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Execução secundária local:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Dessa forma, quando o site é acessado através do agente local 8080, o site de destino é acessado através da compactação com o upstream.
Instâncias de três níveis
Execute no nível 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Execute no VPS secundário (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Execução local de três níveis:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Dessa forma, quando o site é acessado através do agente local 8080, o site de destino é acessado através da compactação com o upstream.
O proxy de meias suporta o balanceamento de carga de nível superior e vários parâmetros de repetição-P a montante podem ser usados.
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
O limite de velocidade é 100k, que pode ser especificado pelo parâmetro -l
, por exemplo: 100k 2000k 1m.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
O parâmetro --bind-listen
pode ser usado para abrir a conexão do cliente com o IP do portal e usar o IP do portal como IP de saída para acessar o site de destino. o IP da entrada.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
Embora o parâmetro acima --bind-listen
possa especificar o IP de saída, o entry IP
e --bind-ip
outgoing IP
não podem ser interferidos pelos seres humanos. Parâmetro, formato: IP:port
, por exemplo: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Repita o parâmetro --bind-ip
.
Por exemplo, a máquina possui IP 5.5.5.5
, 6.6.6.6
e monitora duas portas 8888
e 7777
, o comando é o seguinte:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Em seguida, a porta de acesso ao cliente 7777
, o --bind-ip
de saída é 5.5.5.5
, porta de acesso 8888
, o IP de saída é 6.6.6.6
, se ambos --bind-ip
e --bind- are set at the same time listen
--bind-ip
tem maior prioridade.
Além disso, a parte IP
do parâmetro --bind-ip
suporta especificar o network interface name
, wildcards
e mais de um.
--bind-ip eth0:7777
, o cliente acessa a porta 7777
, e o IP de saída é o IP da interface da rede ETH0.eth0.
7777
--bind-ip eth0.*:7777
--bind-ip 192.168.?.*:7777
, então o cliente acessa a porta 7777
, e o IP de saída é todo o IPS da máquina, correspondendo ao IP de 192.168.?.*
? selecionado aleatoriamente um.7777
, separados por vírgulas de meia largura, como: --bind-ip pppoe??,192.168.?.*:7777
IP é o nome da interface de rede da máquina que corresponde 192.168.?.*
pppoe??
*
representa 0 para qualquer número de caracteres e ?
--bind-refresh
para especificar o intervalo para atualizar as informações da interface de rede local, o padrão é 5
, a unidade é a segunda.O SOCKS5 suporta a autenticação em cascata e -a pode configurar informações de autenticação upstream.
Upstream:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
local:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
Por padrão, o parâmetro -c, -k é o caminho para o certificado CRT e o arquivo de chave.
Se for o início de Base64: //, os últimos dados serão considerados codificados base64 e serão usados após a decodificação.
A configuração do modo inteligente, pode ser de inteligente | Direct | pai.
O padrão é: pai.
O significado de cada valor é o seguinte:
--intelligent=direct
, os alvos nos bloqueados não estão diretamente conectados.
--intelligent=parent
, o alvo que não está no direto está indo para o nível superior.
--intelligent=intelligent
, bloqueado e direto não possui metas, determine de forma inteligente se o uso da meta de acesso a montante.
Por padrão, o número da porta da função UDP do SOCKS5, o proxy é instalado na solicitação rfc1982 draft
, que é especificada aleatoriamente durante o processo de handshake de protocolo e não precisa ser especificado com antecedência.
No entanto, em alguns casos, você precisa corrigir a --udp-port port number
da função UDP.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
Por padrão, a funcionalidade UDP do proxy do --udp-compat
no proxy opera de acordo com a especificação Socks5 RFC 1928. --udp-compat
O parâmetro pode ser adicionado para ativar o modo de compatibilidade para a funcionalidade SOCKS5 UDP.
Além disso, o parâmetro -udp-gc
pode ser utilizado para definir o tempo de inatividade máxima para UDP.
proxy help socks
A conversão do protocolo proxy usa o subcompôs SPS Coloque o proxy HTTP (s) existente de proxy ou proxy SS ou proxy SS é convertido em uma porta que suporta HTTP (s) e Socks5 e SS proxies, e o proxy HTTP (s) suporta proxy para a frente e proxy reverso (SNI), Proxy de Socks5 convertido, a função UDP ainda é suportada quando o nível superior é de meias5 ou SS; A conexão da cadeia é suportada, ou seja, vários níveis de nó SPS podem ser suportados.
Os métodos de criptografia suportados pela função ss
são: 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
Ouça o argumento da porta -p
pode ser:
-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
A função UDP de SS é desligada por padrão e pode ser ativada por --udp
--ssudp
. 0
desempenho pode ser aprimorado correndo uma --udp-port 0
.
Suponha que já exista um proxy (s) normal (s): 127.0.0.1:8080. 192-CFB, senha SS: Passe.
O comando é o seguinte:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Suponha que já exista um proxy HTTP (s): 127.0.1:8080. Arquivo., Criptografia SS: AES-192-CFB, senha SS: PASS.
O comando é o seguinte:
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
Suponha que já exista um proxy HTTP (s) KCP (senha é: Demo123): 127.0.0.1:8080, agora o transformamos em um proxy normal que suporta HTTP (s) e Socks5 e SS. , Criptografia SS: AES-192-CFB, senha SS: Passe.
O comando é o seguinte:
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
Suponha que já exista um proxy normal de meias5: 127.0.0.1:8080, agora o transformamos em um proxy comum que suporta http (s) e meias5 e ss. , SS Senha: Passe.
O comando é o seguinte:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Suponha que já exista um proxy TLS Socks5: 127.0.0.1:8080, agora o transformamos em um proxy comum que suporta HTTP (S) e SOCKS5 e SS. : AES-192-CFB, senha SS: PASS.
O comando é o seguinte:
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
levar a cabo.
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 |
---|---|---|---|
Sim/Não | Sim | Sim | From parent-auth |
Sim/Não | Não | Sim | From parent-auth |
Sim/Não | Sim | Não | Não |
Não | Não | Não | Não |
Sim | Não | Não | 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.
como:
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.
Por exemplo:
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 ser eficaz.
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!
Dica:
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:
Dica:
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
Ou
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
parâmetro.
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 habilitado.
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
.
Introduzir:
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:
Exemplo de explicação:
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
Explicação do comando:
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.
perceber:
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.