Le GoProxy est un proxy http haute performance, un proxy https, un proxy chaussettes5, un proxy ss, des proxys websocket, des proxys TCP, des proxys udp, un bouclier de jeu, des proxys de jeu prenant en charge les proxys directs, le proxy inverse, le proxy transparent, les proxys Internet nat, le proxy https. équilibrage de charge, équilibrage de charge proxy http, équilibrage de charge proxy chaussettes5, équilibrage de charge proxy socket, équilibrage de charge proxy ss, mappage de port TCP/UDP, SSH transit, transmission cryptée TLS, conversion de protocole, proxy DNS anti-pollution, authentification API, limitation de vitesse, limitation de connexion. Proxy inverse pour vous aider à exposer un serveur local derrière un NAT ou un pare-feu à Internet afin que vous ou vos visiteurs puissiez y accéder. directement et facilement.
Et ProxyAdmin est une puissante console Web de snail007/goproxy .
Le manuel sur cette page s'applique à la dernière version de goproxy. Les autres versions peuvent ne pas être applicables. Veuillez utiliser la commande selon vos propres instructions.
Cliquez pour rejoindre le télégramme
Astuce : Toutes les opérations nécessitent les privilèges root.
La version gratuite effectue ceci :
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
La version commerciale effectue ceci :
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
L'installation est terminée, le répertoire de configuration est /etc/proxy Pour une utilisation plus détaillée, veuillez vous référer au répertoire manuel ci-dessus pour en savoir plus sur les fonctionnalités que vous souhaitez utiliser si l'installation échoue ou si votre vps n'est pas un Linux 64 bits. système, suivez les étapes semi-automatiques ci-dessous pour installer :
Adresse de téléchargement : https://github.com/snail007/goproxy/releases/latest
Prenons la v7.9 comme exemple. Si vous disposez de la dernière version, veuillez utiliser la dernière version du lien. Notez que le numéro de version dans le lien de téléchargement ci-dessous est le dernier numéro de version.
La version gratuite effectue ceci :
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
La version commerciale effectue ceci :
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
La version gratuite effectue ceci :
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
La version commerciale effectue ceci :
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
la mise à jour du proxy utilise le miroir pour télécharger, si votre mise à jour présente une erreur avec le miroir, vous pouvez définir une variable d'environnement UPDATE_MIRROR=false
Windows : set UPDATE_MIRROR=false
puis proxy update
Linux : export UPDATE_MIRROR=false
puis proxy update
proxy update
Forcer la mise à jour.
proxy update -f
Par exemple proxy
placé dans c:gpproxy
.
c:
cd gp
proxy update
Forcer la mise à jour.
c:
cd gp
proxy update -f
Proxy est sous licence GPLv3.
Groupe Telegram officiel : goproxy
L'auteur de ce projet a constaté qu'un grand nombre de développeurs s'appuient sur le projet pour un développement secondaire ou utilisent un grand nombre de codes de base du projet sans se conformer à l'accord GPLv3, ce qui viole sérieusement l'intention initiale d'utiliser l'accord open source GPLv3. dans ce projet. Compte tenu de cette situation, le projet adopte la source. Le code retarde la stratégie de publication, dans une certaine mesure, pour freiner ces comportements qui ne respectent pas l'open source et ne respectent pas les résultats du travail des autres. continuera à mettre à jour les itérations et continuez à publier le programme binaire complet de la plate-forme, vous fournissant des outils de proxy puissants et pratiques. Si vous avez des besoins professionnels personnalisés, veuillez envoyer un e-mail à [email protected]
cliquez-moi pour installer Linux
cliquez-moi pour installer MacOS
cliquez-moi pour installer Windows
cliquez-moi pour installer Windows
Ce manuel décrit les fonctions, qui sont toutes incluses dans la version commerciale ; la version gratuite des paramètres fonctionnels avancés tels que l'authentification n'est pas incluse ;
Si vous rencontrez certaines commandes lorsque vous utilisez la version gratuite pour exécuter certaines commandes, une invite similaire au paramètre xxx suivant n'existe pas, indiquant que ce paramètre est une fonction de la version commerciale.
err: unknown long flag '-a'
Comparaison entre les fonctionnalités de la version gratuite et de la version commerciale, opérations détaillées sur la façon d'acheter et d'utiliser la version commerciale, veuillez cliquer ici pour voir
Le tutoriel manuel, le système par défaut est Linux, le programme est proxy ; toutes les opérations nécessitent les privilèges root ;
Si vous utilisez Windows, veuillez utiliser la version Windows de proxy.exe.
Le prochain didacticiel présentera la méthode d'utilisation via les paramètres de ligne de commande, ou vous pourrez obtenir les paramètres en lisant le fichier de configuration.
Le format spécifique est de spécifier le fichier de configuration par le symbole @, par exemple : proxy @configfile.txt
Le format dans configfile.txt est que la première ligne est le nom de la sous-commande et la deuxième ligne commence par un paramètre par ligne.
Format : parameter Parameter value
, paramètre d'écriture directe sans valeur de paramètre, par exemple : --nolog
Par exemple, le contenu du fichier configfile.txt est le suivant :
Http
-t tcp
-p :33080
--forever
Par défaut, les informations générées par le journal n'incluent pas le nombre de lignes de fichier. Dans certains cas, afin de dépanner le programme, le problème est rapidement localisé.
Vous pouvez utiliser le paramètre --debug pour afficher le nombre de lignes de code et les millisecondes.
Par défaut, le journal est affiché directement dans la console. Si vous souhaitez enregistrer dans un fichier, vous pouvez utiliser le paramètre --log.
Par exemple : --log proxy.log, le journal sera affiché dans proxy.log pour faciliter le dépannage.
En journalisant INFO et WARN par défaut, vous pouvez définir --warn
pour afficher uniquement la journalisation d'avertissement.
Le processus proxy http, tcp, udp communique avec l'amont. Pour des raisons de sécurité, nous utilisons une communication chiffrée. Bien entendu, nous pouvons choisir de ne pas chiffrer la communication. Toutes les communications et la communication amont de ce tutoriel sont cryptées, ainsi que le fichier de certificat. est requis.
Générez un certificat auto-signé et un fichier de clé avec la commande suivante.
proxy keygen -C proxy
Le fichier de certificat proxy.crt et le fichier de clé proxy.key seront générés dans le répertoire du programme actuel.
Utilisez la commande suivante pour générer un nouveau certificat à l'aide du certificat auto-signé proxy.crt et du fichier de clé proxy.key : goproxy.crt et goproxy.key.
proxy keygen -s -C proxy -c goproxy
Le fichier de certificat goproxy.crt et le fichier de clé goproxy.key seront générés dans le répertoire du programme actuel.
Par défaut, le nom de domaine à l'intérieur du certificat est aléatoire et peut être spécifié à l'aide du paramètre -n test.com
.
Plus d'utilisation : proxy keygen --help
.
Une fois le proxy exécuté par défaut, vous ne pouvez pas fermer la ligne de commande si vous souhaitez que le proxy continue de fonctionner.
Si vous souhaitez exécuter le proxy en arrière-plan, la ligne de commande peut être fermée, ajoutez simplement le paramètre --daemon à la fin de la commande.
Par exemple:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
Le démon exécute le paramètre --forever, par exemple : proxy http --forever
,
Le proxy lancera le processus enfant, puis surveillera le processus enfant. Si le processus enfant se termine anormalement, redémarrez le processus enfant après 5 secondes.
Ce paramètre correspond au paramètre d'exécution en arrière-plan --daemon et au paramètre de journalisation --log, ce qui peut garantir que le proxy s'exécutera toujours en arrière-plan sans se fermer accidentellement.
Et vous pouvez voir le contenu du journal de sortie du proxy via le fichier journal.
Par exemple : proxy http -p ":9090" --forever --log proxy.log --daemon
Lorsque le VPS est derrière le périphérique nat, l'adresse IP de l'interface réseau vps est l'adresse IP de l'intranet. À ce stade, vous pouvez utiliser le paramètre -g pour ajouter l'adresse IP du réseau externe vps afin d'éviter la boucle infinie.
Supposons que l'adresse IP de votre réseau externe vps soit 23.23.23.23. La commande suivante définit 23.23.23.23 avec le paramètre -g.
proxy http -g "23.23.23.23"
Le proxy HTTP(S)SOCKS5SPS prend en charge l'équilibrage de charge de niveau supérieur et la haute disponibilité, et plusieurs paramètres de répétition P en amont peuvent être utilisés.
La stratégie d'équilibrage de charge prend en charge cinq types, qui peuvent être spécifiés par le paramètre --lb-method
:
Roundrobin utilisé à son tour
Leastconn utilise le nombre minimum de connexions
Le moins de temps utilise le moins de temps de connexion
Le hachage utilise un amont fixe basé sur l'adresse du client
Poids Sélectionner un amont en fonction du poids et du nombre de connexions de chaque amont
rapide:
L'intervalle de vérification de l'équilibrage de charge peut être défini par --lb-retrytime
en millisecondes.
Le délai d'expiration de la connexion à l'équilibrage de charge peut être défini par --lb-timeout
en millisecondes.
Si la politique d'équilibrage de charge est la pondération, le format -P est : 2.2.2.2 : 3880?w=1, où 1 est le poids et un entier supérieur à 0.
Si la politique d'équilibrage de charge est de hachage, la valeur par défaut consiste à sélectionner l'amont en fonction de l'adresse du client. Vous pouvez sélectionner l'amont en utilisant l'adresse de destination de l'accès --lb-hashtarget
.
Les proxys TCP n'ont pas de paramètre --lb-hashtarget
.
La valeur par défaut est l'équilibrage de charge + le mode haute disponibilité. Si le paramètre --lb-onlyha
est utilisé, seul le mode haute disponibilité est utilisé, alors un nœud est sélectionné en fonction de la stratégie d'équilibrage de charge, et ce nœud sera utilisé jusqu'à ce qu'il ne le soit pas. vivant, alors un autre nœud sera sélectionné pour être utilisé, faisant ainsi du vélo.
Si tous les nœuds ne sont pas vivants, un nœud aléatoire sera sélectionné pour être utilisé.
Agent Http(s), agent SPS, pénétration intranet, agent TCP prenant en charge la connexion des amonts via des agents tiers intermédiaires,
Les paramètres sont : --jumper, tous les formats sont les suivants :
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 représente le proxy http et chaussettes5 normal.
Https,socks5s représente les agents http et chaussettes5 protégés par tls.
C'est un proxy http sur TLS, des chaussettes sur TLS.
Le proxy chaussettes/http(s)/sps prend en charge les listes noires et blanches de noms de domaine.
Utilisez le paramètre --stop pour spécifier un fichier de liste noire de noms de domaine, puis la connexion sera déconnectée lorsque l'utilisateur connectera ces domaines dans le fichier.
Spécifiez un fichier de liste blanche de noms de domaine avec le paramètre --only, puis la connexion sera déconnectée lorsque l'utilisateur se connectera à un domaine autre que ceux du fichier.
Si --stop et --only sont définis, alors seul --only fonctionnera.
Le format du fichier de liste de noms de domaine en noir et blanc est le suivant :
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
Description:
*
et ?
, *
représente n'importe quel nombre de caractères, ?
2. **.baidu.com
Correspond quel que soit le nombre de niveaux, tous les suffixes sont ..baidu.com`.
3. *.taobao.com
Le suffixe correspondant est le nom de domaine de troisième niveau de .taobao.com
.
5. #
au début du commentaire.
Les proxy chaussettes/http(s)/sps prennent tous en charge la liste noire des ports.
Utilisez le paramètre --stop-port
pour spécifier un fichier de liste noire de ports, puis lorsque l'utilisateur se connecte aux ports du fichier, la connexion peut être établie.
Le format du contenu du fichier de liste noire de ports est le suivant :
3306
22
Note:
#
sont des commentaires.chaussettes/http(s)/sps/tcp/udp/dns/pont de pénétration intranet/tbridge de pénétration intranet, prend en charge la liste noire et blanche des IP clients.
Utilisez le paramètre --ip-deny pour spécifier un fichier de liste noire d'adresses IP client, puis la connexion sera déconnectée lorsque l'adresse IP de l'utilisateur se trouve dans ce fichier.
Utilisez le paramètre --ip-allow pour spécifier un fichier de liste blanche d'adresses IP client, puis la connexion sera déconnectée lorsque l'adresse IP de l'utilisateur ne figure pas dans le fichier.
Si --ip-deny et --ip-allow sont définis, alors seul --ip-allow fonctionnera.
Le format du fichier de liste noire et de liste blanche d'adresses IP client est le suivant :
192.168.1.1
192.168.*.*
192.168.1?.*
Description:
*
et ?
, *
représente n'importe quel nombre de caractères, ?
représente un caractère arbitraire. 2. #
au début du commentaire.
Il existe de nombreux endroits dans les différentes fonctions de proxy du proxy pour définir un fichier. Par exemple : --blocked Spécifie un fichier de liste de noms de domaine qui va directement au niveau supérieur. La valeur du paramètre est le chemin du fichier.
Si le paramètre prend en charge le fichier de chargement du protocole, le chemin du fichier peut être non seulement le chemin du fichier, mais également :
a. L'encodage base64 au début de « base64:// » indique le contenu du fichier ci-dessus, par exemple : base64://ajfpoajsdfa=
b. "str://" au début du multiple anglais séparé par des virgules, tel que : str://xxx, yyy
Les fichiers proxy bloqués, directs, stop, uniquement, hôtes, solve.rules, rewriter.rules, ip.allow, ip.deny prennent en charge le chargement du protocole.
proxys chaussettes5spshttp, le paramètre qui contrôle le nombre de connexions client simultanées est : --max-conns-rate
, qui contrôle le nombre maximum de connexions client par seconde, par défaut : 20, 0 est illimité
"tcp / http / chaussettes / sps" prend en charge l'écoute sur plusieurs ports et plages de ports. Dans des circonstances normales, il suffit d'écouter sur un seul port, mais si vous devez écouter sur plusieurs ports, le paramètre -p est pris en charge. est : -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, plus Les liaisons peuvent être séparés par des virgules.
proxy http -t tcp -p "0.0.0.0:38080"
L'argument du port d'écoute -p
peut être :
-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
Utilisez le port local 8090, en supposant que le proxy HTTP en amont est 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Nous pouvons également spécifier le fichier de liste noire et blanche du nom de domaine du site Web, un nom de domaine par ligne, la règle de correspondance est la correspondance la plus à droite, par exemple : baidu.com, la correspondance est .baidu.com, le nom de domaine de la liste noire . va directement à l'agent en amont, liste blanche Le nom de domaine ne va pas à l'agent en amont.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Remarque : Les
proxy.crt
etproxy.key
utilisés par le proxy secondaire doivent être cohérents avec le proxy principal.
Proxy HTTP niveau 1 (VPS, IP : 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy HTTP secondaire (Linux local)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Accédez ensuite au port local 8080 pour accéder au port proxy 38080 sur le VPS.
Proxy HTTP secondaire (fenêtres locales)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Ensuite, configurez votre système Windos, le proxy qui doit passer par le programme proxy Internet est le mode http, l'adresse est : 127.0.0.1, le port est : 8080, le programme peut accéder à Internet via vps via le canal crypté.
Proxy HTTP niveau 1 VPS_01, IP : 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy HTTP secondaire 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 de niveau 3 (local)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Ensuite, accéder au port local 8080 consiste à accéder au port proxy 38080 sur le proxy HTTP principal.
Pour le protocole proxy HTTP, nous pouvons effectuer une authentification de base. Le nom d'utilisateur et le mot de passe authentifiés peuvent être spécifiés sur la ligne de commande.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Pour plusieurs utilisateurs, répétez le paramètre -a.
Il peut également être placé dans un fichier au format "nom d'utilisateur: mot de passe" puis spécifié avec -F.
proxy http -t tcp -p ":33080" -F auth-file.txt
De plus, le proxy http(s) intègre également l'authentification API HTTP externe. Nous pouvons spécifier une adresse d'interface url http avec le paramètre --auth-url.
Ensuite, lorsqu'il y a une connexion utilisateur, le proxy demandera l'url en mode GET, et apportera les quatre paramètres suivants. Si le code d'état HTTP 204 est renvoyé, l'authentification est réussie.
Dans d'autres cas, l'authentification a échoué.
Par exemple:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Lorsque l'utilisateur se connecte, le proxy demandera l'url ("http://test.com/auth.php") en mode GET.
Prenez cinq paramètres : user, pass, ip, local_ip, target :
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
Utilisateur : nom d'utilisateur
Pass : mot de passe
IP : IP de l'utilisateur, par exemple : 192.168.1.200
Local_ip : IP du serveur accédé par l'utilisateur, par exemple : 3.3.3.3
Cible : URL consultée par l'utilisateur, par exemple : http://demo.com:80/1.html ou https://www.baidu.com:80
S'il n'y a pas de paramètre -a, -F ou --auth-url, l'authentification de base est désactivée.
Par défaut, le proxy déterminera intelligemment si un nom de domaine de site Web est inaccessible, s'il n'est pas accessible, il ira au proxy HTTP de niveau supérieur. Avec --always, tout le trafic du proxy HTTP peut être forcé d'aller vers le proxy HTTP supérieur. procuration.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Description : Le principe du transfert ssh est d'utiliser la fonction de transfert de ssh, c'est-à-dire qu'après vous être connecté à ssh, vous pouvez accéder à l'adresse cible via le proxy ssh.
Supposons qu'il y ait : vps
Port proxy HTTP(S) local 28080, exécutant :
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Port proxy HTTP(S) local 28080, exécutant :
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Le protocole KCP nécessite le paramètre --kcp-key pour définir un mot de passe pour le cryptage et le déchiffrement des données.
Proxy HTTP niveau 1 (VPS, IP : 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
Proxy HTTP secondaire (Linux local)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Ensuite, accéder au port local 8080 consiste à accéder au port proxy 38080 sur le VPS, les données sont transmises via le protocole kcp, notez que le kcp est le protocole udp, le pare-feu doit donc libérer le protocole udp 380p.
Le proxy prend non seulement en charge le paramètre de proxy dans d'autres logiciels, mais fournit également des services de proxy pour d'autres logiciels. Il prend également en charge l'analyse directe du nom de domaine du site Web demandé par rapport à l'adresse IP d'écoute du proxy, puis le proxy écoute les ports 80 et 443, puis. le proxy vous permettra automatiquement d'accéder par proxy au site Web HTTP(S) auquel vous devez accéder.
Comment utiliser :
Sur la machine "proxy proxy de dernier niveau", étant donné que le proxy doit être déguisé en tous les sites Web, le port HTTP par défaut du site Web est 80, HTTPS est 443 et le proxy peut écouter les ports 80 et 443. Paramètres -p multiple adresses avec segmentation par virgules.
proxy http -t tcp -p :80,:443
Cette commande démarre un agent proxy sur la machine et écoute les ports 80 et 443 en même temps. Elle peut être utilisée comme proxy normal ou résoudre directement le nom de domaine qui doit être proxy sur l'adresse IP de cette machine.
S'il existe un agent en amont, alors référez-vous au tutoriel ci-dessus pour définir l'amont, l'utilisation est exactement la même.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
Note:
Le résultat de la résolution DNS du serveur où se trouve le proxy ne peut pas être affecté par la résolution personnalisée, sinon il s'agira d'une boucle infinie. Le proxy proxy doit spécifier le paramètre --dns-address 8.8.8.8
.
Ce mode doit avoir une certaine base de réseau. Si les concepts associés ne sont pas compris, veuillez le rechercher vous-même.
En supposant que le proxy s'exécute désormais sur le routeur, la commande de démarrage est la suivante :
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
Ajoutez ensuite la règle iptables, voici les règles de référence :
# 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
Paramètres --dns-address et --dns-ttl, utilisés pour spécifier le DNS (--dns-address) utilisé par le proxy pour accéder au nom de domaine.
Et le temps de cache des résultats de l'analyse (--dns-ttl) secondes, pour éviter les interférences DNS du système avec le proxy, en plus de la fonction de cache, peut également réduire le temps de résolution DNS pour améliorer la vitesse d'accès.
Par exemple:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
prend en charge plusieurs adresses DNS, équilibrage de charge, séparées par une virgule. Par exemple : --dns-address "1.1.1.1:53,8.8.8.8:53"
Vous pouvez également utiliser le paramètre --dns-interface
pour spécifier la bande passante utilisée pour la résolution DNS, par exemple : --dns-interface eth0
, la résolution DNS utilisera la bande passante eth0, ce paramètre doit être défini sur --dns-address
pour être efficace.
Le proxy http(s) du proxy peut crypter les données TCP via le cryptage standard tls et le protocole kcp en plus de TCP, en plus de prendre en charge la personnalisation après tls et kcp.
Le cryptage, c'est-à-dire le cryptage personnalisé et tls|kcp peuvent être utilisés en combinaison. L'utilisation interne du cryptage AES256, il vous suffit de définir un mot de passe lorsque vous l'utilisez.
Le cryptage est divisé en deux parties, l'une est de savoir si le cryptage et le déchiffrement locaux (-z), et l'autre est de savoir si la transmission avec l'amont (-Z) est cryptée ou déchiffrée.
Le chiffrement personnalisé nécessite que les deux extrémités soient proxy. Les deux niveaux et trois niveaux suivants sont utilisés à titre d'exemple :
Instance secondaire
Exécuter sur vps de niveau 1 (ip : 2.2.2.2) :
proxy http -t tcp -z demo_password -p :7777
Exécution secondaire locale :
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
De cette manière, lorsque l'on accède au site Web via l'agent local 8080, l'accès au site Web cible est effectué via une transmission cryptée avec le canal amont.
Instances à trois niveaux
Exécuter sur vps de niveau 1 (ip : 2.2.2.2) :
proxy http -t tcp -z demo_password -p :7777
Exécuter sur le vps secondaire (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
Exécution locale à trois niveaux :
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
De cette manière, lorsque l'on accède au site Web via l'agent local 8080, l'accès au site Web cible est effectué via une transmission cryptée avec le canal amont.
Le proxy http(s) peut crypter les données TCP via le cryptage standard TLS et le protocole KCP en plus de TCP, et peut également compresser les données avant le cryptage personnalisé.
C'est-à-dire que la compression et le cryptage personnalisé et tls|kcp peuvent être utilisés en combinaison. La compression est divisée en deux parties, l'une étant la transmission par compression locale (-m).
Une partie est compressée avec la transmission amont (-M).
La compression nécessite que les deux côtés soient proxy. La compression protège également les données (chiffrées) dans une certaine mesure. Ce qui suit utilise les niveaux 2 et 3 comme exemples :
Instance secondaire
Exécuter sur vps de niveau 1 (ip : 2.2.2.2) :
proxy http -t tcp -m -p :7777
Exécution secondaire locale :
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
De cette manière, lorsque l'on accède au site Web via l'agent local 8080, l'accès au site Web cible est effectué par compression avec l'amont.
Instances à trois niveaux
Exécuter sur vps de niveau 1 (ip : 2.2.2.2) :
proxy http -t tcp -m -p :7777
Exécuter sur le vps secondaire (ip : 3.3.3.3) :
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Exécution locale à trois niveaux :
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
De cette manière, lorsque l'on accède au site Web via l'agent local 8080, l'accès au site Web cible est effectué par compression avec l'amont.
Le proxy HTTP(S) prend en charge l'équilibrage de charge de niveau supérieur et plusieurs paramètres de répétition P en amont peuvent être utilisés.
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
La limite de vitesse est de 100K, qui peut être spécifiée par le paramètre -l
, par exemple : 100K 2000K 1M 0 signifie aucune limite.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
Le paramètre --bind-listen
peut être utilisé pour ouvrir la connexion client avec l'adresse IP du portail et utiliser l'adresse IP du portail comme adresse IP sortante pour accéder au site Web cible. Si une adresse IP incorrecte est liée, le proxy ne fonctionnera pas. À ce stade, le proxy essaiera de lier la cible sans lier l'adresse IP, et le journal vous le demandera.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
Bien que le paramètre --bind-listen
ci-dessus puisse spécifier l'IP sortante, l' entry IP
et l' outgoing IP
ne peuvent pas être référencées artificiellement. Si vous souhaitez que l'IP d'entrée et l'IP de sortie soient différentes, vous pouvez utiliser --bind-ip
paramètre, format : IP:port
, par exemple : 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
. Le paramètre --bind-ip
peut être répété.
Par exemple, cette machine a l'IP 5.5.5.5
, 6.6.6.6
, et surveille deux ports 8888
et 7777
, la commande est la suivante :
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
Ensuite, le port d'accès client 7777
, l'adresse IP sortante est 5.5.5.5
, le port d'accès 8888
, l'adresse IP sortante est 6.6.6.6
, si --bind-ip
et --bind- are set at the same time listen
, --bind-ip
a une priorité plus élevée. De plus, la partie IP
du paramètre --bind-ip
prend en charge la spécification du network interface name
, wildcards
et plusieurs peuvent l'être. spécifié. La description détaillée est la suivante :
--bind-ip eth0:7777
, puis le client accède au port 7777
et l'adresse IP de sortie est l'adresse IP de l'interface réseau eth0.--bind-ip eth0.*:7777
, puis le client accède au port 7777
et l'adresse IP de sortie est sélectionnée de manière aléatoire parmi l'adresse IP de l'interface réseau commençant par eth0.
--bind-ip 192.168.?.*:777
, puis le client accède au port 7777
, l'IP sortante est toutes les IP de la machine et correspond à l'IP de 192.168.?.*
A choisi au hasard.-bind-ip pppoe??,192.168.?.*:7777
, puis le client accède au port 7777
, L'adresse IP sortante est le nom de l'interface réseau de la machine correspondant pppoe??
Elle est sélectionnée au hasard parmi l'adresse IP correspondant à 192.168.?.*
dans l'adresse IP de la machine.*
représente 0 pour n'importe quel caractère, ?
Représente 1 caractère.--bind-refresh
pour spécifier l'intervalle d'actualisation des informations de l'interface réseau locale, la valeur par défaut est 5
, l'unité est la seconde.Par défaut, le paramètre -C, -K est le chemin d'accès au certificat crt et au fichier de clé.
S'il s'agit du début de base64://, alors ces dernières données sont considérées comme codées en base64 et seront utilisées après décodage.
Le paramètre de mode intelligent peut être l'un des paramètres intelligent|direct|parent.
La valeur par défaut est : parent.
La signification de chaque valeur est la suivante :
--intelligent=direct
, les cibles bloquées ne sont pas directement connectées.
--intelligent=parent
, la cible qui n'est pas dans le direct va au niveau supérieur.
--intelligent=intelligent
, bloqué et direct n'a pas de cible, détermine intelligemment s'il faut utiliser la cible d'accès en amont.
proxy help http
Exécution locale :
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
Accédez ensuite au port local 33080 pour accéder au port 22 de 192.168.22.33.
Le paramètre -p
prend en charge :
-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
Si le nombre de ports d'écoute locaux est supérieur à 1, le port supérieur correspondant au port local sera connecté et le port en -P
sera ignoré.
Si vous avez besoin d'une connexion depuis tous les ports, connectez-vous au port spécifié supérieur, vous pouvez ajouter le paramètre --lock-port
.
tel que:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
Ensuite, la connexion du port 33080
se connectera au -P
33080
de 192.168.22.33 0
et les autres ports sont similaires.
Si vous souhaitez connecter les ports de 33080
, 33081
, etc. au Port 22
de 192.168.22.33, vous pouvez ajouter le paramètre --lock-port
.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) est exécuté:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
Exécution locale:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
Ensuite, l'accès au port local 23080 doit accéder au port 8020 de 22.22.22.33.
Proxy TCP primaire VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
Proxy TCP secondaire VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Proxy TCP de niveau 3 (local)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
Ensuite, l'accès au port local 8080 doit accéder au port 8080 de 66.66.66.66 via le tunnel TCP crypté.
VPS (IP: 22.22.2.33) est exécuté:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
Exécution locale:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port local 23080 doit accéder au port 8080 de 22.22.22.33 via le tunnel TCP crypté.
Proxy TCP primaire 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 secondaire 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 niveau 3 (local)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port local 8080 doit accéder au port 8080 de 66.66.66.66 via le tunnel TCP crypté.
Parfois, le réseau où le proxy est situé ne peut pas accéder directement au réseau externe.
Le paramètre -j peut vous aider à connecter le proxy au PEER-P via le proxy HTTPS ou SOCKS5 lors du mappage du port TCP proxy, cartographant le port externe vers le local.
Le format de paramètre -j est le suivant:
Écriture de proxy https:
Le proxy a besoin d'authentification, nom d'utilisateur: nom d'utilisateur Mot de passe: mot de passe
Https: // nom d'utilisateur: mot de passe @ hôte: port
L'agent ne nécessite pas d'authentification
Https: // hôte: port
SCOCKS5 Écriture de procuration:
Le proxy a besoin d'authentification, nom d'utilisateur: nom d'utilisateur Mot de passe: mot de passe
Socks5: // nom d'utilisateur: mot de passe @ hôte: port
L'agent ne nécessite pas d'authentification
Socks5: // hôte: port
Hôte: IP ou nom de domaine du proxy
Port: le port du proxy
Lorsque le proxy TCP est un type supérieur (paramètre: -T) est TCP, il prend en charge l'IP sortante --bind-listen
. Comme l'IP sortante pour accéder au site Web cible.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
Bien que le paramètre de --bind-ip
--bind-listen
lind peut spécifier l'IP sortant, l' entry IP
et l' outgoing IP
ne peuvent pas être référencés artificiellement. Paramètre, format: IP:port
, par exemple: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. peut répéter l'identification des paramètres --bind-ip
.
Par exemple, cette machine a IP 5.5.5.5
, 6.6.6.6
et surveille deux ports 8888
et 7777
, la commande est la suivante:
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
Ensuite, le port d'accès client 7777
, l'IP sortant est 5.5.5.5
, le port d'accès 8888
, l'IP sortante est 6.6.6.6
, si les deux --bind-ip
et --bind- are set at the same time listen
, --bind-ip
a une priorité plus élevée.
En outre, la partie IP
du paramètre --bind-ip
prend en charge la spécification du network interface name
, wildcards
et plus d'un peut être spécifié.
--bind-ip eth0:7777
, puis le client accède au port 7777
, et l'IP de sortie est l'IP de l'interface réseau ETH0.--bind-ip eth0.*:7777
, le client accède au port 7777
, et la sortie IP est une sélection au hasard de l'un des IP d'interface réseau commençant par eth0.
--bind-ip 192.168.?.*:7777
, alors le client accède au port 7777
, et l'IP sortante est tous les IP de la machine, correspondant à l'IP de 192.168.?.*
A Sélectionné au hasard.--bind-ip pppoe??,192.168.?.*:7777
, puis le client accède au port 7777
, le sortant IP est le nom d'interface réseau de la machine correspondant à 192.168.?.*
pppoe??
*
représente 0 à un certain nombre de caractères, ?
représente 1 caractère.--bind-refresh
pour spécifier l'intervalle pour actualiser les informations d'interface réseau locales, la valeur par défaut est 5
, l'unité est deuxième.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
peut limiter le nombre maximal de connexions par port. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--rate-limit
peut limiter la vitesse de chaque connexion TCP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--ip-rate
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
client IP proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
--port-rate
Limitez le taux total de chaque port proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
service. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
et ( --ip-rate
ou --port-rate
) peut être utilisée ensemble. --c
contrôle --C
opportunité de compresser la transmission entre local et client, par défaut false;
Exemples:
VPS (IP: 22.22.22.33) Implémentation: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
EXÉCUTION locale: proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
Exécution locale:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
Ensuite, l'accès au port UDP: 5353 local doit accéder au 8.8.8.8 UDP: 53 Port.
Le paramètre -p
prend en charge:
-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
Si le nombre de ports d'écoute locaux est supérieur à 1, le port supérieur correspondant correspondant au port local sera connecté et le port en -P
sera ignoré.
Si vous avez besoin d'une connexion à partir de tous les ports, connectez-vous au port spécifié supérieur, vous pouvez ajouter le paramètre --lock-port
.
tel que:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
Ensuite, la connexion du port 33080
se connectera au -P
33080
de 192.168.22.33 0
et les autres ports sont similaires.
Si vous souhaitez connecter les ports de 33080
, 33081
, etc. au port 2222
de 192.168.22.33, vous pouvez ajouter le paramètre --lock-port
.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) est exécuté:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
Exécution locale:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
Ensuite, l'accès au port UDP: 5353 local est via le tunnel TCP, via le port VPS Access 8.8.8.8 UDP: 53.
Proxy TCP primaire VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
Proxy TCP secondaire VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Proxy TCP de niveau 3 (local)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
Ensuite, l'accès au port local 5353 est via le tunnel TCP, via le VPS pour accéder au port 8.8.8.8.
VPS (IP: 22.22.2.33) est exécuté:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Exécution locale:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port UDP: 5353 local se situe via le tunnel TCP chiffré, via le port VPS Access 8.8.8.8 UDP: 53.
Proxy TCP primaire 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 secondaire 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 niveau 3 (local)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port local 5353 doit accéder au port 8.8.8.8 53 via VPS_01 via le tunnel TCP crypté.
Lorsque les proxies UDP en amont (Paramètre: -T) sont UDP, il prend en charge l'IP sortante --bind-listen
. IP pour accéder à la cible.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
Pénétration intranet, divisée en deux versions, "version multi-link" et "version multiplexée", généralement comme un service Web, ce service n'est pas une connexion à long terme, il est recommandé d'utiliser "version multi-link", s'il est de garder longtemps que la connexion temporelle suggère d'utiliser une "version multiplexée".
Le tutoriel suivant utilise la "version multiplexée" comme exemple pour illustrer comment l'utiliser.
La pénétration d'intranet se compose de trois parties: le client, le serveur et le pont; le client et le serveur se connectent activement au pont pour le pont.
Arrière-plan:
Demande:
À la maison, vous pouvez accéder au port 80 de la machine de l'entreprise A en accédant au port 28080 du VPS.
Mesures:
Exécuter sur 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
Complet
Arrière-plan:
Demande:
Remplissez l'adresse de l'interface de rappel de page Web Configuration du compte de développement de WeChat: http://22.22.22.22/calback.php
Ensuite, vous pouvez accéder à Calback.php sous le port 80 du cahier.
Par exemple: wx-dv.xxx.com se résout au 22.22.22.22, puis dans votre propre ordinateur portable nginx
Configurez le nom de domaine wx-dv.xxx.com dans le répertoire spécifique.
Mesures:
Exécutez sur des VP pour s'assurer que le port 80 des VP n'est pas occupé par d'autres programmes.
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
Exécuter sur votre ordinateur portable
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Complet
Arrière-plan:
Demande:
À la maison, vous pouvez utiliser la machine de l'entreprise A pour effectuer des services de résolution de noms de domaine en définissant le DNS local sur 22.22.22.22.
Mesures:
Exécuter sur 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
Complet
Arrière-plan:
Demande:
Pour être en sécurité, je ne veux pas avoir accès à la machine de l'entreprise A sur le VPS, et je peux accéder au port 28080 de la machine à la maison.
Accès au port 80 de la machine de l'entreprise A via un tunnel crypté.
Mesures:
Exécuter sur VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
Exécuter sur la machine d'entreprise A
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Exécutez sur votre ordinateur personnel
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Complet
Conseil:
Si plusieurs clients sont connectés au même pont en même temps, vous devez spécifier une clé différente, qui peut être définie par le paramètre --k, et --k peut être n'importe quelle chaîne unique.
Soyez juste le seul sur le même pont.
Lorsque le serveur est connecté au pont, s'il y a plusieurs clients se connectant au même pont en même temps, vous devez utiliser le paramètre --k pour sélectionner le client.
Exposez plusieurs ports en répétant le paramètre -r.
Arrière-plan:
Demande:
À la maison, vous pouvez accéder au port 80 de la machine de l'entreprise A en accédant au port 28080 du VPS.
À la maison, je peux accéder à la machine de compagnie de 21 ports de compagnie A en accédant au port 29090 du VPS.
Mesures:
Exécuter sur 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
Complet
Le format complet de -r est: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1.
Par exemple: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
Si le paramètre --udp est spécifié, le protocole par défaut est udp, alors: -r ":8080@:80"
par défaut à UDP;
Si le paramètre --udp n'est pas spécifié, le protocole par défaut est TCP, alors: -r ":8080@:80"
par défaut à TCP;
4.7.2.
Par exemple: -r "UDP: //: 10053 @ [test1]: 53" -r "tcp: //: 10800 @ [test2]: 1080" -r ": 8080 @: 80"
Si le paramètre --k est spécifié, tel que le test --k, alors: -r ":8080@:80"
Client_key par défaut à tester;
Si le paramètre --k n'est pas spécifié, alors: -r ":8080@:80"
Client_key par défaut par défaut;
0.0.0.0
127.0.0.1
Parfois, le réseau où le serveur ou le client est situé ne peut pas accéder directement au réseau externe.
Le paramètre -j peut vous aider à connecter le serveur ou le client au pont via HTTPS ou SOCKS5.
Le format de paramètre -j est le suivant:
Écriture de proxy https:
Le proxy a besoin d'authentification, nom d'utilisateur: nom d'utilisateur Mot de passe: mot de passe
Https: // nom d'utilisateur: mot de passe @ hôte: port
L'agent ne nécessite pas d'authentification
Https: // hôte: port
SCOCKS5 Écriture de procuration:
Le proxy a besoin d'authentification, nom d'utilisateur: nom d'utilisateur Mot de passe: mot de passe
Socks5: // nom d'utilisateur: mot de passe @ hôte: port
L'agent ne nécessite pas d'authentification
Socks5: // hôte: port
Hôte: IP ou nom de domaine du proxy
Port: le port du proxy
Habituellement, le client de demande HTTP utilisera l'IP et le port du serveur pour définir le champ hôte, mais ce n'est pas la même chose que l'hôte réel backend attendu, ce qui fait passer TCP. L'hôte --http-host
et il ne fonctionnera --http-host
. paramètre --http-host
, Deux en X-Real-IP
têtes seront ajoutés à l'en X-Forwarded-For
tête de chaque demande HTTP.
Le format du paramètre server
-http-host est le suivant:
--http-host www.test.com:80@2200
, si le serveur écoute plusieurs ports, répétez simplement le paramètre --http-host
pour définir l'hôte pour chaque port.
Exemple:
Par exemple, le client local Nginx, 127.0.0.1:80 fournit un service Web, qui est lié à un nom de domaine local.com
.
Ensuite, les paramètres de démarrage du serveur peuvent être les suivants:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
Explication:
-r :[email protected]:80
et --http-host local.com:80@2500
Le port 2500 est le port que le serveur écoute localement.
Lorsque le protocole HTTP est utilisé pour demander le port IP: 2500 du serveur, le champ hôte d'en-tête de HTTP sera défini sur local.com
.
Si vous démarrez un pair d'amarrage du serveur séparément, il s'agit du panneau de configuration de l'admin proxy.
Ensuite, démarrez le serveur et ajoutez le paramètre --server-id = L'ID de la règle de mappage pour compter le trafic.
Prise en charge de la pénétration intranet Lorsque les conditions du serveur et du réseau client sont remplies, le serveur et le client sont directement connectés via P2P.
Lors du démarrage du pont, du serveur, du client, ajoutez le paramètre --p2p
.
Si le trou P2P échoue entre le serveur et le client, les données de transfert de pont sont automatiquement commutées.
Le pont pénétrant intranet peut définir la liste blanche de la clé du client.
a.
b.
c.
La valeur par défaut est vide, permettant toutes les clés.
Jugement de type Senat, facile à vérifier si le réseau prend en charge P2P, vous pouvez exécuter: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
rapide:
SOCKS5 Proxy, prend en charge Connect, UDP Protocol, ne prend pas en charge Bind, prend en charge l'authentification du nom d'utilisateur et du mot de passe.
*** La --udp-port 0
UDP de SOCKS5 est désactivée par défaut et peut être activée par --udp
. --udp-port 0
, 0
représente un port libre sélectionné au hasard, ou vous pouvez spécifier manuellement un port spécifique.
proxy socks -t tcp -p "0.0.0.0:38080"
Écouter l'argument du port -p
peut être:
-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
Utilisez le port local 8090, en supposant que le proxy SOCKS5 en amont est 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Nous pouvons également spécifier le fichier de liste noir et blanc du nom de domaine du site Web, un nom de domaine et un nom de domaine, la règle correspondante est la correspondance la plus à droite, par exemple: baidu.com, le match est . Nom de domaine Le nom de domaine va directement à l'agent en amont, White Le nom de domaine de la liste ne va pas à l'agent en amont;
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Proxy de chaussettes de niveau 1 (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Proxy de chaussettes secondaires (Linux local)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port local 8080 doit accéder au port proxy 38080 sur le VPS.
Proxy de chaussettes secondaires (fenêtres locales)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Ensuite, définissez votre système WINDOS, le proxy qui doit passer par le programme Internet Proxy est le mode SOCKS5, l'adresse est: 127.0.0.1, le port est: 8080, le programme peut accéder à Internet via VPS via la chaîne cryptée.
Socks de niveau 1 Proxy VPS_01, IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
SOCKES SECONDAIRES 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 chaussettes de niveau 3 (local)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Ensuite, l'accès au port local 8080 consiste à accéder au port proxy 38080 sur le proxy de chaussettes de premier niveau.
Par défaut, le proxy déterminera intelligemment si un nom de domaine de site Web est inaccessible. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Description: Le principe du transfert SSH est d'utiliser la fonction de transfert de SSH, c'est-à-dire, après vous être connecté à SSH, vous pouvez accéder à l'adresse cible via le proxy SSH.
Supposons qu'il y ait: VPS
Port proxy local SOCKS5 28080, exécuter:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Port proxy local SOCKS5 28080, exécuter:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Ensuite, l'accès au port local 28080 doit accéder à l'adresse cible via le VPS.
Pour le protocole de proxy SOCKS5, nous pouvons effectuer un nom d'utilisateur et une authentification de mot de passe.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Pour plusieurs utilisateurs, répétez le paramètre -a.
Il peut également être placé dans un fichier au format d'un "nom d'utilisateur: mot de passe" puis spécifié avec -f.
proxy socks -t tcp -p ":33080" -F auth-file.txt
De plus, l'agent SOCKS5 intègre également l'authentification de l'API HTTP externe.
Ensuite, lorsqu'il y a une connexion utilisateur, le proxy demande l'URL en mode GET, avec les trois paramètres suivants.
Dans d'autres cas, l'authentification a échoué.
Par exemple:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Lorsque l'utilisateur se connectera, le proxy demandera l'URL ("http://test.com/auth.php") en mode get.
Apportez quatre paramètres: utilisateur, pass, ip, local_ip:
Http://test.com/auth.php?user=peser }&pass={pass acass acass
Utilisateur: nom d'utilisateur
Passer: mot de passe
IP: IP de l'utilisateur, par exemple: 192.168.1.200
Local_ip: IP du serveur accessible par l'utilisateur, par exemple: 3.3.3.3
S'il n'y a pas de paramètre -a ou -f ou --Auth-URL, l'authentification est désactivée.
Le protocole KCP nécessite le paramètre --kcp-key pour définir un mot de passe pour crypter et décrypter les données.
Niveau 1 Proxy HTTP (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
Proxy HTTP secondaire (Linux local)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Ensuite, l'accès au port local 8080 doit accéder au port proxy 38080 sur le VPS, les données sont transmises via le protocole KCP.
- DNS-ADDRESS ET - DNS-TTL, utilisés pour spécifier le DNS (--DNS-ADDRESS) utilisé par le proxy pour accéder au nom de domaine.
Et le temps de cache de résultat de l'analyse (--DNS-TTL), pour éviter les interférences DNS du système au proxy, en plus de la fonction de cache peut également réduire le temps de résolution DNS pour améliorer la vitesse d'accès.
Par exemple:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
Vous pouvez également utiliser le paramètre --dns-interface
pour spécifier la bande passante utilisée pour la résolution DNS, par exemple: --dns-interface eth0
, la résolution DNS utilisera la bande passante ETH0, ce paramètre doit être défini sur --dns-address
à être efficace.
Le proxy de chaussettes du proxy peut crypter les données TCP via le cryptage standard TLS et le protocole KCP en plus de TCP. Encryption AES256, il vous suffit de définir un mot de passe lorsque vous l'utilisez.
Le cryptage est divisé en deux parties, l'une est de savoir si le cryptage et le décryptage locaux (-z), et l'autre est de savoir si la transmission avec le (-z) en amont (-z) est cryptée ou décryptée.
Le cryptage personnalisé nécessite que les deux côtés soient proxy.
Les deux niveaux suivants, trois niveaux par exemple:
Instance secondaire
Exécuter sur les VP de niveau 1 (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Exécution secondaire locale:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
De cette façon, lorsque le site Web est accessible via l'agent local 8080, le site Web Target est accessible par transmission chiffrée avec le amont.
Instances à trois niveaux
Exécuter sur les VP de niveau 1 (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Exécuter sur les VP secondaires (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
Exécution locale à trois niveaux:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
De cette façon, lorsque le site Web est accessible via l'agent local 8080, le site Web Target est accessible par transmission chiffrée avec le amont.
Le proxy de chaussettes du proxy peut crypter les données TCP via le cryptage personnalisé et le cryptage standard TLS et le protocole KCP en plus de TCP.
Compressez les données, c'est-à-dire que la fonction de compression et le cryptage personnalisé et TLS | KCP peuvent être utilisés en combinaison, et la compression est divisée en deux parties.
Une partie de celle-ci est la transmission de compression locale (-M), et la partie est de savoir si la transmission avec le amont (-M) est comprimée.
La compression nécessite que les deux côtés soient proxy et la compression protège également les données (chiffre) dans une certaine mesure.
Les deux niveaux suivants, trois niveaux par exemple:
Instance secondaire
Exécuter sur les VP de niveau 1 (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Exécution secondaire locale:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
De cette façon, lorsque le site Web est accessible via l'agent local 8080, le site Web Target est accessible par compression avec le amont.
Instances à trois niveaux
Exécuter sur les VP de niveau 1 (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Exécuter sur les VP secondaires (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Exécution locale à trois niveaux:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
De cette façon, lorsque le site Web est accessible via l'agent local 8080, le site Web Target est accessible par compression avec le amont.
Le proxy SOCKS prend en charge l'équilibrage de la charge de niveau supérieur, et plusieurs paramètres de répétition en amont peuvent être utilisés.
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
La limite de vitesse est de 100k, qui peut être spécifiée par le paramètre -l
, par exemple: 100k 2000k 1M.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
Le paramètre --bind-listen
peut être utilisé pour ouvrir la connexion du client avec l'IP du portail et utiliser l'IP du portail comme IP sortant pour accéder au site Web cible. L'IP entrant.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
Bien que le paramètre de --bind-ip
--bind-listen
peut spécifier l'IP sortant, l' entry IP
et outgoing IP
ne peuvent pas être interférées par les humains. Paramètre, Format: IP:port
, par exemple: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Répétez le paramètre --bind-ip
.
Par exemple, la machine a IP 5.5.5.5
, 6.6.6.6
et surveille deux ports 8888
et 7777
, la commande est la suivante:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Ensuite, le port d'accès client 7777
, l'IP sortant est 5.5.5.5
, le port d'accès 8888
, l'IP sortante est 6.6.6.6
, si les deux --bind-ip
et --bind- are set at the same time listen
, --bind-ip
a une priorité plus élevée.
En outre, la partie IP
du paramètre --bind-ip
prend en charge le network interface name
, wildcards
et plus d'un.
--bind-ip eth0:7777
, puis le client accède au port 7777
, et l'IP de sortie est l'IP de l'interface réseau ETH0.--bind-ip eth0.*:7777
, le client accède au port 7777
, et la sortie IP est une sélection au hasard de l'un des IP d'interface réseau commençant par eth0.
--bind-ip 192.168.?.*:7777
, alors le client accède au port 7777
, et l'IP sortante est tous les IP de la machine, correspondant à l'IP de 192.168.?.*
A Sélectionné au hasard.--bind-ip pppoe??,192.168.?.*:7777
, puis le client accède au port 7777
, le sortant IP est le nom d'interface réseau de la machine correspondant à 192.168.?.*
pppoe??
*
représente 0 à un certain nombre de caractères, ?
représente 1 caractère.--bind-refresh
pour spécifier l'intervalle pour actualiser les informations d'interface réseau locales, la valeur par défaut est 5
, l'unité est deuxième.SOCKS5 prend en charge l'authentification en cascade et -A peut définir des informations d'authentification en amont.
en amont:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
locale:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
Par défaut, le paramètre -C, -K est le chemin d'accès au certificat CRT et au fichier clé.
S'il s'agit du début de la base64: //, ces dernières données sont considérées comme encodées de la base64 et seront utilisées après le décodage.
Le paramètre de mode intelligent peut être celui des parents intelligents | directe | parent.
La valeur par défaut est: parent.
La signification de chaque valeur est la suivante:
--intelligent=direct
, les cibles dans le bloqué ne sont pas directement connectées.
--intelligent=parent
, la cible qui n'est pas directe va au niveau supérieur.
--intelligent=intelligent
, bloqué et direct n'a pas de cibles, déterminez intelligemment s'il faut utiliser l'objectif d'accès en amont.
Par défaut, le numéro de port de la fonction UDP de SOCKS5, le proxy est installé dans le rfc1982 draft
, qui est spécifié au hasard pendant le processus de poignée de main du protocole et n'a pas besoin d'être spécifié à l'avance.
Cependant, dans certains cas, vous devez réparer le --udp-port port number
de fonction UDP.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
Par défaut, la fonctionnalité UDP du proxy --udp-compat
dans le proxy fonctionne conformément à la spécification SOCKS5 RFC 1928. --udp-compat
paramètre peut être ajouté pour activer le mode de compatibilité pour la fonctionnalité UDP SOCKS5.
De plus, le paramètre -udp-gc
peut être utilisé pour définir le temps d'inactivité maximal pour UDP.
proxy help socks
La conversion du protocole proxy utilise la sous-commande SPS. Mettez le proxy HTTP (S) existant ou le proxy SOCKS5 ou le proxy SS est converti en un port qui prend en charge les procurations HTTP (S) et SOCKS5 et SS, et le proxy HTTP (S) prend en charge le proxy vers l'avant et l'inverse proxy inversé (SNI), le proxy SOCKS5 converti, la fonction UDP est toujours prise en charge lorsque le niveau supérieur est SOCKS5 ou SS; La connexion de la chaîne est prise en charge, c'est-à-dire que plusieurs niveaux de nœuds SPS peuvent être pris en charge.
Les méthodes de chiffrement soutenues par la fonction ss
sont: 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
Écouter l'argument du port -p
peut être:
-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
La fonction UDP de SS est désactivée par défaut et peut être activée par --ssudp
--udp
0
performances peuvent être améliorées en fixant un --udp-port 0
.
Supposons qu'il y ait déjà un proxy HTTP (S) normal: 127.0.0.1:8080. 192-CFB, Mot de passe SS: Pass.
La commande est la suivante:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Supposons qu'il y ait déjà un proxy TLS HTTP (S): 127.0.0.1:8080. Fichier., SS Encryption: AES-192-CFB, SS Mot de passe: Pass.
La commande est la suivante:
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
Supposons qu'il y ait déjà un proxy KCP HTTP (S) (Mot de passe est: Demo123): 127.0.0.1:8080, nous le transformons maintenant en un proxy normal qui prend en charge les HTTP (s) et SSS5 et SS. , SS Encryption: AES-192-CFB, SS Mot de passe: Pass.
La commande est la suivante:
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
Supposons qu'il y ait déjà un proxy SOCKS5 normal: 127.0.0.1:8080, nous le transformons maintenant en un proxy commun qui prend en charge HTTP (s) et SOCKS5 et SS. , Mot de passe SS: Pass.
La commande est la suivante:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Supposons qu'il existe déjà un proxy TLS SOCKS5: 127.0.0.1:8080, nous le transformons maintenant en un proxy commun qui prend en charge les HTTP (S) et les socks5 et les ss. : AES-192-CFB, SS Mot de passe: Pass.
La commande est la suivante:
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
effectuer.
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 |
---|---|---|---|
Yes / No | Oui | Oui | From parent-auth |
Yes / No | Non | Oui | From parent-auth |
Yes / No | Oui | Non | Non |
Non | Non | Non | Non |
Oui | Non | Non | 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.
tel que:
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.
Par exemple:
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 be effective.
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!
Conseil:
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:
Conseil:
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 chapta LS, Multiple Upstreams , The Description of the -P
Parameter .
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 activé.
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 Returnet by the Control Interface is Invachid User and IP or Connection. The format is a json object data. There are the three fileds user, IP, and conns. The conns
fonns IELD 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
.
INTRODUIRE:
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:
Example explanation:
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
Command explanation:
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.
avis:
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.