Der GoProxy ist ein leistungsstarker HTTP-Proxy, https-Proxy, Socks5-Proxy, SS-Proxy, WebSocket-Proxy, TCP-Proxy, UDP-Proxy, Game Shield, Game-Proxy, Support-Forward-Proxy, Reverse-Proxy, transparenter Proxy, Internet-NAT-Proxy, https-Proxy Lastausgleich, HTTP-Proxy-Lastausgleich, Socks5-Proxy-Lastausgleich, Socket-Proxy-Lastausgleich, SS-Proxy-Lastausgleich, TCP/UDP-Portzuordnung, SSH Transit, TLS-verschlüsselte Übertragung, Protokollkonvertierung, Anti-Pollution-DNS-Proxy, API-Authentifizierung, Geschwindigkeitsbegrenzung, Limit-Verbindung, um Ihnen zu helfen, einen lokalen Server hinter einem NAT oder einer Firewall dem Internet zugänglich zu machen, damit Sie oder Ihre Besucher darauf zugreifen können direkt und einfach.
Und ProxyAdmin ist eine leistungsstarke Webkonsole von snail007/goproxy.
Das Handbuch auf dieser Seite gilt für die neueste Version von goproxy. Andere Versionen sind möglicherweise nicht anwendbar. Bitte verwenden Sie den Befehl gemäß Ihren eigenen Anweisungen.
Klicken Sie hier, um dem Telegram beizutreten
Tipp: Für alle Vorgänge sind Root-Rechte erforderlich.
Die kostenlose Version führt Folgendes aus:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
Die kommerzielle Version führt Folgendes aus:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
Die Installation ist abgeschlossen, das Konfigurationsverzeichnis ist /etc/proxy. Weitere Informationen zu den Funktionen, die Sie verwenden möchten, finden Sie im obigen Handbuchverzeichnis. Wenn die Installation fehlschlägt oder Ihr VPS kein Linux 64-Bit ist Führen Sie zur Installation des Systems die folgenden halbautomatischen Schritte aus:
Download-Adresse: https://github.com/snail007/goproxy/releases/latest
Nehmen wir als Beispiel Version 7.9. Bitte verwenden Sie die neueste Version des Links. Beachten Sie, dass die Versionsnummer im Download-Link unten die neueste Versionsnummer ist.
Die kostenlose Version führt Folgendes aus:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
Die kommerzielle Version führt Folgendes aus:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
Die kostenlose Version führt Folgendes aus:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
Die kommerzielle Version führt Folgendes aus:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
Proxy-Updates verwenden Mirror zum Herunterladen. Wenn Ihr Update einen Fehler mit Mirror aufweist, können Sie eine Umgebungsvariable UPDATE_MIRROR=false
festlegen
Windows: set UPDATE_MIRROR=false
, dann proxy update
Linux: export UPDATE_MIRROR=false
, dann proxy update
proxy update
Aktualisierung erzwingen.
proxy update -f
Beispielsweise wird proxy
in c:gpproxy
platziert.
c:
cd gp
proxy update
Aktualisierung erzwingen.
c:
cd gp
proxy update -f
Proxy ist unter der GPLv3-Lizenz lizenziert.
Offizielle Telegram-Gruppe: goproxy
Der Autor dieses Projekts stellte fest, dass eine große Anzahl von Entwicklern das Projekt für die Sekundärentwicklung verwendete oder eine große Anzahl von Kerncodes des Projekts verwendete, ohne die GPLv3-Vereinbarung einzuhalten, was ernsthaft gegen die ursprüngliche Absicht der Verwendung der GPLv3-Open-Source-Vereinbarung verstieß In diesem Projekt übernimmt das Projekt die Veröffentlichungsstrategie bis zu einem gewissen Grad, um diese Verhaltensweisen einzudämmen, die die Arbeitsergebnisse anderer nicht respektieren wird die Iterationen weiterhin aktualisieren und veröffentlichen Sie weiterhin das vollständige Plattform-Binärprogramm, das Ihnen leistungsstarke und praktische Proxy-Tools bietet. Wenn Sie individuelle Geschäftsanforderungen haben, senden Sie bitte eine E-Mail an [email protected]
Klicken Sie auf mich, um die Linux-Installation zu erhalten
Klicken Sie auf mich, um die MacOS-Installation zu erhalten
Klicken Sie auf mich, um die Windows-Installation zu erhalten
Klicken Sie auf mich, um die Windows-Installation zu erhalten
Dieses Handbuch beschreibt die Funktionen, die alle in der kommerziellen Version enthalten sind. Erweiterte Funktionsparameter wie die Authentifizierung sind nicht enthalten.
Wenn Sie beim Ausführen einiger Befehle mit der kostenlosen Version auf einige Befehle stoßen, ist eine Eingabeaufforderung ähnlich dem folgenden xxx-Parameter nicht vorhanden, was darauf hinweist, dass dieser Parameter eine Funktion der kommerziellen Version ist.
err: unknown long flag '-a'
Vergleich der Funktionen der kostenlosen Version und der kommerziellen Version. Detaillierte Informationen zum Kauf und zur Verwendung der kommerziellen Version finden Sie hier. Klicken Sie hier, um sie anzuzeigen
Das manuelle Tutorial, das Standardsystem ist Linux, das Programm ist Proxy; alle Vorgänge erfordern Root-Rechte;
Wenn Sie Windows verwenden, verwenden Sie bitte die Windows-Version von Proxy.exe.
Im nächsten Tutorial wird die Verwendungsmethode über die Befehlszeilenparameter vorgestellt. Sie können die Parameter auch durch Lesen der Konfigurationsdatei abrufen.
Das spezifische Format besteht darin, die Konfigurationsdatei durch das @-Symbol anzugeben, zum Beispiel: Proxy @configfile.txt
Das Format in configfile.txt sieht so aus, dass die erste Zeile den Namen des Unterbefehls enthält und die zweite Zeile mit einem Parameter pro Zeile beginnt.
Format: parameter Parameter value
, direkter Schreibparameter ohne Parameterwert, zum Beispiel: --nolog
Der Inhalt von configfile.txt lautet beispielsweise wie folgt:
Http
-t tcp
-p :33080
--forever
Standardmäßig enthalten die vom Protokoll ausgegebenen Informationen nicht die Anzahl der Dateizeilen. In einigen Fällen kann das Problem schnell lokalisiert werden, um das Problem zu beheben.
Mit dem Parameter --debug können Sie die Anzahl der Codezeilen und Millisekunden ausgeben.
Standardmäßig wird das Protokoll direkt in der Konsole angezeigt. Wenn Sie es in einer Datei speichern möchten, können Sie den Parameter --log verwenden.
Beispiel: --log Proxy.log, das Protokoll wird in Proxy.log ausgegeben, um die Fehlerbehebung zu erleichtern.
Standardmäßig werden INFO und WARN protokolliert. Sie können --warn
so einstellen, dass nur die Warnprotokollierung ausgegeben wird.
Der HTTP-, TCP- und UDP-Proxy-Prozess kommuniziert mit dem Upstream. Natürlich können wir die gesamte Kommunikation und die Upstream-Kommunikation sowie die Zertifikatsdatei nicht verschlüsseln ist erforderlich.
Generieren Sie mit dem folgenden Befehl ein selbstsigniertes Zertifikat und eine Schlüsseldatei.
proxy keygen -C proxy
Die Zertifikatsdatei „proxy.crt“ und die Schlüsseldatei „proxy.key“ werden im aktuellen Programmverzeichnis generiert.
Verwenden Sie den folgenden Befehl, um ein neues Zertifikat mit dem selbstsignierten Zertifikat Proxy.crt und der Schlüsseldatei Proxy.key zu generieren: goproxy.crt und goproxy.key.
proxy keygen -s -C proxy -c goproxy
Die Zertifikatsdatei goproxy.crt und die Schlüsseldatei goproxy.key werden im aktuellen Programmverzeichnis generiert.
Standardmäßig ist der Domänenname im Zertifikat zufällig und kann mit dem Parameter -n test.com
angegeben werden.
Weitere Verwendung: proxy keygen --help
.
Nachdem der Proxy standardmäßig ausgeführt wurde, können Sie die Befehlszeile nicht schließen, wenn Sie den Proxy weiterhin ausführen möchten.
Wenn Sie den Proxy im Hintergrund ausführen möchten, kann die Befehlszeile geschlossen werden. Fügen Sie einfach den Parameter --daemon am Ende des Befehls hinzu.
Zum Beispiel:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
Der Daemon führt den Parameter --forever aus, zum Beispiel: proxy http --forever
,
Der Proxy forkt den untergeordneten Prozess und überwacht dann den untergeordneten Prozess. Wenn der untergeordnete Prozess abnormal beendet wird, starten Sie den untergeordneten Prozess nach 5 Sekunden neu.
Dieser Parameter stimmt mit dem Hintergrundlaufparameter --daemon und dem Protokollparameter --log überein, wodurch sichergestellt werden kann, dass der Proxy immer im Hintergrund ausgeführt wird, ohne dass er versehentlich beendet wird.
Und Sie können den Ausgabeprotokollinhalt des Proxys über die Protokolldatei sehen.
Beispiel: proxy http -p ":9090" --forever --log proxy.log --daemon
Wenn sich der VPS hinter dem NAT-Gerät befindet, ist die IP der VPS-Netzwerkschnittstelle die Intranet-IP. Zu diesem Zeitpunkt können Sie den Parameter -g verwenden, um die IP des externen VPS-Netzwerks hinzuzufügen, um die Endlosschleife zu verhindern.
Angenommen, die IP Ihres externen VPS-Netzwerks lautet 23.23.23.23. Der folgende Befehl legt 23.23.23.23 mit dem Parameter -g fest.
proxy http -g "23.23.23.23"
Der HTTP(S)SOCKS5SPS-Proxy unterstützt Lastausgleich auf oberer Ebene und hohe Verfügbarkeit, und es können mehrere Upstream-Repeat-P-Parameter verwendet werden.
Die Lastausgleichsrichtlinie unterstützt fünf Typen, die mit dem Parameter --lb-method
angegeben werden können:
Roundrobin wiederum verwendet
Leastconn verwendet die minimale Anzahl an Verbindungen
„Least Time“ verbraucht die geringste Verbindungszeit
Hash verwendet einen festen Upstream basierend auf der Client-Adresse
Gewicht Wählen Sie einen Upstream entsprechend der Gewichtung und der Anzahl der Verbindungen jedes Upstreams aus
prompt:
Das Prüfintervall für den Lastausgleich kann mit --lb-retrytime
in Millisekunden festgelegt werden.
Das Zeitlimit für die Lastausgleichsverbindung kann mit --lb-timeout
in Millisekunden festgelegt werden.
Wenn die Lastausgleichsrichtlinie Gewichtung ist, lautet das -P-Format: 2.2.2.2: 3880?w=1, wobei 1 die Gewichtung und eine ganze Zahl größer als 0 ist.
Wenn die Lastausgleichsrichtlinie Hash ist, wird der Upstream standardmäßig basierend auf der Clientadresse ausgewählt. Sie können den Upstream auswählen, indem Sie die Zieladresse des Zugriffs --lb-hashtarget
verwenden.
Die TCP-Proxys haben keinen Parameter --lb-hashtarget
.
Der Standardwert ist Lastausgleich + Hochverfügbarkeitsmodus. Wenn der Parameter --lb-onlyha
verwendet wird, wird nur der Hochverfügbarkeitsmodus verwendet. Anschließend wird ein Knoten gemäß der Lastausgleichsstrategie ausgewählt und dieser Knoten wird verwendet, bis er nicht mehr verwendet wird lebendig, dann wird ein anderer Knoten zur Verwendung ausgewählt und somit zyklisch.
Wenn nicht alle Knoten aktiv sind, wird ein zufälliger Knoten zur Verwendung ausgewählt.
HTTP(s)-Agent, SPS-Agent, Intranet-Penetration, TCP-Agent unterstützen die Verbindung von Upstreams über zwischengeschaltete Drittanbieter-Agenten,
Die Parameter sind: --jumper, alle Formate sind wie folgt:
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 stellt den normalen http- und sock5-Proxy dar.
Https,socks5s stellt die durch tls geschützten http- und sock5-Agenten dar.
Das ist HTTP-Proxy über TLS, Socken über TLS.
Der Socks/http(s)/sps-Proxy unterstützt schwarze und weiße Listen für Domänennamen.
Verwenden Sie den Parameter --stop, um eine Domänennamen-Blacklist-Datei anzugeben. Die Verbindung wird dann getrennt, wenn der Benutzer diese Domänen in der Datei verbindet.
Geben Sie eine Domänennamen-Whitelist-Datei mit dem Parameter --only an. Die Verbindung wird dann getrennt, wenn der Benutzer eine Verbindung zu einer anderen Domäne als den in der Datei aufgeführten Domänen herstellt.
Wenn sowohl --stop als auch --only festgelegt sind, funktioniert nur --only.
Das Format der Schwarz-Weiß-Domänennamenlistendatei ist wie folgt:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
Beschreibung:
*
und ?
, *
steht für eine beliebige Anzahl von Zeichen, ?
steht für ein beliebiges Zeichen. 2. **.baidu.com
Übereinstimmt, egal wie viele Ebenen alle Suffixe ..baidu.com` haben.
3. *.taobao.com
Das passende Suffix ist der Domainname der dritten Ebene von .taobao.com
.
5. #
am Anfang des Kommentars.
Söckchen/http(s)/sps-Proxy unterstützen alle Port-Blacklist.
Verwenden Sie den Parameter --stop-port
, um eine Port-Blacklist-Datei anzugeben. Wenn der Benutzer dann eine Verbindung zu den Ports in der Datei herstellt, kann die Verbindung hergestellt werden.
Das Inhaltsformat der Port-Blacklist-Datei lautet wie folgt:
3306
22
Notiz:
#
beginnen, sind Kommentare.Söckchen/http(s)/sps/tcp/udp/dns/ Intranet Penetration Bridge/Intranet Penetration Tbridge, unterstützt Client-IP-Schwarz- und Whitelist.
Verwenden Sie den Parameter --ip-deny, um eine Client-IP-Blacklist-Listendatei anzugeben. Die Verbindung wird dann getrennt, wenn sich die IP des Benutzers in dieser Datei befindet.
Verwenden Sie den Parameter --ip-allow, um eine Client-IP-Whitelist-Datei anzugeben. Die Verbindung wird dann getrennt, wenn die IP des Benutzers nicht in der Datei enthalten ist.
Wenn sowohl --ip-deny als auch --ip-allow gesetzt sind, funktioniert nur --ip-allow.
Das Format der Client-IP-Blacklist- und Whitelist-Datei ist wie folgt:
192.168.1.1
192.168.*.*
192.168.1?.*
Beschreibung:
*
und ?
, *
steht für eine beliebige Anzahl von Zeichen, ?
steht für ein beliebiges Zeichen. 2. #
am Anfang des Kommentars.
Es gibt viele Stellen in den verschiedenen Proxy-Funktionen, an denen eine Datei festgelegt werden kann: --blocked Gibt eine Domänennamenlistendatei an, die direkt zur oberen Ebene führt.
Wenn der Parameter die Protokollladedatei unterstützt, kann der Dateipfad nicht nur der Dateipfad sein, sondern auch:
a. Die Base64-Kodierung am Anfang von „base64://“ gibt den Inhalt der obigen Datei an, zum Beispiel: base64://ajfpoajsdfa=
b. „str://“ am Anfang des durch Kommas getrennten englischen Vielfachen, wie zum Beispiel: str://xxx, yyy
Die blockierten, direkten, Stop-, Only-, Hosts-, Resolve.rules-, Rewriter.rules-, ip.allow- und ip.deny-Dateien des Proxys unterstützen das Laden von Protokollen.
Söckchen5spshttp Proxys, der Parameter, der die Anzahl gleichzeitiger Clientverbindungen steuert, ist: --max-conns-rate
, der die maximale Anzahl von Clientverbindungen pro Sekunde steuert, Standard: 20, 0 ist unbegrenzt
„tcp/http/socks/sps“ unterstützt das Abhören mehrerer Ports und Bereichsports. Unter normalen Umständen reicht es aus, einen Port abzuhören. Wenn Sie jedoch mehrere Ports abhören müssen, wird das Format unterstützt ist: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, mehr Die Bindungen können durch Kommas getrennt werden.
proxy http -t tcp -p "0.0.0.0:38080"
Das Listen-Port-Argument -p
kann sein:
-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
Verwenden Sie den lokalen Port 8090, vorausgesetzt, der Upstream-HTTP-Proxy ist 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Wir können auch die Schwarz- und Weißlistendatei des Website-Domänennamens angeben, einen Domänennamen pro Zeile, die Übereinstimmungsregel ist die Übereinstimmung ganz rechts, zum Beispiel: baidu.com, die Übereinstimmung ist .baidu.com , der Domänenname der schwarzen Liste geht direkt an den Upstream-Agenten, Whitelist. Der Domänenname geht nicht an den Upstream-Agenten.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Hinweis: Die vom sekundären Proxy verwendeten
proxy.crt
undproxy.key
sollten mit denen des primären Proxys übereinstimmen.
HTTP-Proxy der Stufe 1 (VPS, IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Sekundärer HTTP-Proxy (lokales Linux)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Dann greifen Sie auf den lokalen Port 8080 zu, um auf den Proxy-Port 38080 auf dem VPS zuzugreifen.
Sekundärer HTTP-Proxy (lokales Windows)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Stellen Sie dann Ihr Windows-System ein. Der Proxy, der das Proxy-Internetprogramm durchlaufen muss, ist der HTTP-Modus. Die Adresse lautet: 127.0.0.1 und der Port lautet: 8080. Das Programm kann über VPS über den verschlüsselten Kanal auf das Internet zugreifen.
HTTP-Proxy der Ebene 1 VPS_01, IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Sekundärer HTTP-Proxy VPS_02, IP: 33.33.33.33
proxy http -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
HTTP-Proxy der Stufe 3 (lokal)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Der Zugriff auf den lokalen Port 8080 bedeutet dann, auf den Proxy-Port 38080 auf dem primären HTTP-Proxy zuzugreifen.
Für das Proxy-HTTP-Protokoll können wir eine Standardauthentifizierung durchführen. Der authentifizierte Benutzername und das Passwort können in der Befehlszeile angegeben werden.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Wiederholen Sie bei mehreren Benutzern den Parameter -a.
Es kann auch in einer Datei im Format „Benutzername:Passwort“ abgelegt und dann mit -F angegeben werden.
proxy http -t tcp -p ":33080" -F auth-file.txt
Darüber hinaus integriert der http(s)-Proxy auch die externe HTTP-API-Authentifizierung. Mit dem Parameter --auth-url können wir eine http-URL-Schnittstellenadresse angeben.
Wenn dann eine Benutzerverbindung besteht, fordert der Proxy die URL im GET-Modus an und bringt die folgenden vier Parameter mit. Wenn der HTTP-Statuscode 204 zurückgegeben wird, ist die Authentifizierung erfolgreich.
In anderen Fällen schlug die Authentifizierung fehl.
Zum Beispiel:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Wenn der Benutzer eine Verbindung herstellt, fordert der Proxy die URL („http://test.com/auth.php“) im GET-Modus an.
Nehmen Sie fünf Parameter: Benutzer, Pass, IP, lokale_IP, Ziel:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
Benutzer: Benutzername
Pass: Passwort
IP: IP des Benutzers, zum Beispiel: 192.168.1.200
Local_ip: IP des Servers, auf den der Benutzer zugreift, zum Beispiel: 3.3.3.3
Ziel: URL, auf die der Benutzer zugreift, zum Beispiel: http://demo.com:80/1.html oder https://www.baidu.com:80
Wenn kein Parameter -a, -F oder --auth-url vorhanden ist, ist die Standardauthentifizierung deaktiviert.
Standardmäßig ermittelt der Proxy auf intelligente Weise, ob auf den Domänennamen einer Website nicht zugegriffen werden kann. Mit „--always“ kann der gesamte HTTP-Proxy-Verkehr an den HTTP-Proxy der oberen Ebene weitergeleitet werden Proxy.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Beschreibung: Das Prinzip der SSH-Übertragung besteht darin, die Weiterleitungsfunktion von SSH zu verwenden. Das heißt, nachdem Sie eine Verbindung zu SSH hergestellt haben, können Sie über den SSH-Proxy auf die Zieladresse zugreifen.
Angenommen, es gibt: vps
Lokaler HTTP(S)-Proxy-Port 28080, der Folgendes ausführt:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Lokaler HTTP(S)-Proxy-Port 28080, der Folgendes ausführt:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Das KCP-Protokoll erfordert den Parameter --kcp-key, um ein Passwort zum Verschlüsseln und Entschlüsseln von Daten festzulegen.
HTTP-Proxy der Stufe 1 (VPS, IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
Sekundärer HTTP-Proxy (lokales Linux)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Dann greifen Sie auf den lokalen Port 8080 zu, um auf den Proxy-Port 38080 auf dem VPS zuzugreifen. Die Daten werden über das KCP-Protokoll übertragen. Beachten Sie, dass KCP das UDP-Protokoll ist, sodass die Firewall das 380p-UDP-Protokoll freigeben muss.
Der Proxy unterstützt nicht nur die Proxy-Einstellung in anderer Software, sondern stellt auch Proxy-Dienste für andere Software bereit. Er unterstützt auch das direkte Parsen des angeforderten Website-Domänennamens auf die Proxy-Listen-IP, und dann überwacht der Proxy die Ports 80 und 443 Der Proxy stellt Ihnen automatisch den Zugriff auf die HTTP(S)-Website zur Verfügung, auf die Sie zugreifen müssen.
Anwendung:
Da der Proxy auf der Maschine „Proxy der letzten Ebene“ als alle Websites getarnt werden soll, ist der Standard-HTTP-Port der Website 80, HTTPS ist 443 und der Proxy kann die Ports 80 und 443 abhören. Parameter -p mehrere Adressen mit Komma-Segmentierung.
proxy http -t tcp -p :80,:443
Dieser Befehl startet einen Proxy-Agenten auf dem Computer und überwacht gleichzeitig die Ports 80 und 443. Er kann als normaler Proxy verwendet werden oder den Domänennamen, der per Proxy weitergeleitet werden muss, direkt auf die IP dieses Computers auflösen.
Wenn ein Upstream-Agent vorhanden ist, lesen Sie das obige Tutorial, um den Upstream festzulegen. Die Verwendung ist genau die gleiche.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
Notiz:
Das DNS-Auflösungsergebnis des Servers, auf dem sich der Proxy befindet, kann durch die benutzerdefinierte Auflösung nicht beeinflusst werden, da es sonst zu einer Endlosschleife kommt. Der Proxy-Proxy sollte den Parameter --dns-address 8.8.8.8
angeben.
Dieser Modus muss über eine bestimmte Netzwerkgrundlage verfügen. Wenn Sie die zugehörigen Konzepte nicht verstehen, suchen Sie bitte selbst danach.
Vorausgesetzt, der Proxy läuft jetzt auf dem Router, lautet der Startbefehl wie folgt:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
Fügen Sie dann die iptables-Regel hinzu. Hier sind die Referenzregeln:
# 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
Die Parameter --dns-address und --dns-ttl dienen zur Angabe des DNS (--dns-address), den der Proxy für den Zugriff auf den Domänennamen verwendet.
Und die Analyseergebnis-Cache-Zeit (--dns-ttl) Sekunden, um System-DNS-Interferenzen mit dem Proxy zu vermeiden, kann zusätzlich zur Cache-Funktion auch die DNS-Auflösungszeit reduzieren, um die Zugriffsgeschwindigkeit zu verbessern.
Zum Beispiel:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
unterstützt mehrere DNS-Adressen, Lastausgleich, durch Komma getrennt. Zum Beispiel: --dns-address "1.1.1.1:53,8.8.8.8:53"
Sie können auch den Parameter --dns-interface
verwenden, um die für die DNS-Auflösung verwendete Bandbreite anzugeben, zum Beispiel: --dns-interface eth0
, die DNS-Auflösung verwendet die eth0-Bandbreite, dieser Parameter muss auf --dns-address
gesetzt werden wirksam sein.
Der http(s)-Proxy des Proxys kann TCP-Daten zusätzlich zu TCP über die TLS-Standardverschlüsselung und das KCP-Protokoll verschlüsseln und unterstützt außerdem die Anpassung nach TLS und KCP.
Verschlüsselung, das heißt, benutzerdefinierte Verschlüsselung und tls|kcp können in Kombination verwendet werden. Bei der internen Verwendung der AES256-Verschlüsselung müssen Sie nur ein Passwort definieren, wenn Sie sie verwenden.
Die Verschlüsselung ist in zwei Teile unterteilt: Der eine besteht darin, ob die lokale (-z) Verschlüsselung und Entschlüsselung erfolgt, und der andere darin, ob die Übertragung mit dem Upstream (-Z) verschlüsselt oder entschlüsselt wird.
Für die benutzerdefinierte Verschlüsselung müssen beide Enden Proxy sein. Als Beispiele werden die folgenden zwei Ebenen und drei Ebenen verwendet:
Sekundärinstanz
Auf Level 1 VPS ausführen (IP: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Lokale sekundäre Ausführung:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Wenn auf diese Weise über den lokalen Agenten 8080 auf die Website zugegriffen wird, erfolgt der Zugriff auf die Zielwebsite über eine verschlüsselte Übertragung mit dem Upstream.
Dreistufige Instanzen
Auf Level 1 VPS ausführen (IP: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Auf dem sekundären VPS ausführen (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
Lokale dreistufige Ausführung:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Wenn auf diese Weise über den lokalen Agenten 8080 auf die Website zugegriffen wird, erfolgt der Zugriff auf die Zielwebsite über eine verschlüsselte Übertragung mit dem Upstream.
Der Proxy-http(s)-Proxy kann TCP-Daten über TLS-Standardverschlüsselung und das KCP-Protokoll zusätzlich zu TCP verschlüsseln und Daten vor der benutzerdefinierten Verschlüsselung auch komprimieren.
Das heißt, Komprimierung und benutzerdefinierte Verschlüsselung sowie tls | kcp können in Kombination verwendet werden. Die Komprimierung ist in zwei Teile unterteilt, ein Teil ist die lokale (-m) Komprimierungsübertragung.
Ein Teil davon wird mit der Upstream-Übertragung (-M) komprimiert.
Die Komprimierung erfordert, dass beide Seiten Proxy sind. Die Komprimierung schützt auch (verschlüsselte) Daten. Im Folgenden werden Level 2 und Level 3 verwendet:
Sekundärinstanz
Auf Level 1 VPS ausführen (IP: 2.2.2.2):
proxy http -t tcp -m -p :7777
Lokale sekundäre Ausführung:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Wenn auf diese Weise über den lokalen Agenten 8080 auf die Website zugegriffen wird, erfolgt der Zugriff auf die Zielwebsite durch Komprimierung mit dem Upstream.
Dreistufige Instanzen
Auf Level 1 VPS ausführen (IP: 2.2.2.2):
proxy http -t tcp -m -p :7777
Auf dem sekundären VPS ausführen (IP: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Lokale dreistufige Ausführung:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Wenn auf diese Weise über den lokalen Agenten 8080 auf die Website zugegriffen wird, erfolgt der Zugriff auf die Zielwebsite durch Komprimierung mit dem Upstream.
Der HTTP(S)-Proxy unterstützt den Lastausgleich auf höherer Ebene und es können mehrere Upstream-Repeat-P-Parameter verwendet werden.
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
Die Geschwindigkeitsbegrenzung beträgt 100 K und kann mit dem Parameter -l
angegeben werden. Beispiel: 100 K 2000 K 1 M. 0 bedeutet keine Begrenzung.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
Der Parameter --bind-listen
kann verwendet werden, um die Client-Verbindung mit der Portal-IP herzustellen und die Portal-IP als ausgehende IP für den Zugriff auf die Zielwebsite zu verwenden. Wenn die falsche IP gebunden ist, funktioniert der Proxy nicht An diesem Punkt versucht der Proxy, das Ziel zu binden, ohne die IP zu binden, und das Protokoll wird dazu aufgefordert.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
Obwohl der obige Parameter --bind-listen
die ausgehende IP angeben kann, können die entry IP
und die outgoing IP
nicht künstlich referenziert werden. Wenn Sie möchten, dass die Eingangs-IP und die Ausgangs-IP unterschiedlich sind, können Sie --bind-ip
verwenden Parameter, Format: IP:port
, zum Beispiel: 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
. Für mehrere Bindungsanforderungen Der Parameter --bind-ip
kann wiederholt werden.
Diese Maschine hat beispielsweise die IP-Adressen 5.5.5.5
und 6.6.6.6
und überwacht die beiden Ports 8888
und 7777
Der Befehl lautet wie folgt:
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
Dann ist der Client-Zugriffsport 7777
, die ausgehende IP ist 5.5.5.5
, der Zugriffsport 8888
, die ausgehende IP ist 6.6.6.6
, wenn sowohl --bind-ip
als auch --bind- are set at the same time listen
, --bind-ip
hat eine höhere Priorität. Darüber hinaus unterstützt der IP
Teil des Parameters --bind-ip
die Angabe des network interface name
und von wildcards
Die detaillierte Beschreibung lautet wie folgt:
--bind-ip eth0:7777
. Anschließend greift der Client auf den Port 7777
zu. Die Ausgangs-IP ist die IP der Netzwerkschnittstelle eth0.--bind-ip eth0.*:7777
, dann greift der Client auf den Port 7777
zu und die Ausgangs-IP wird zufällig aus der IP der Netzwerkschnittstelle ausgewählt, beginnend mit eth0.
.--bind-ip 192.168.?.*:777
, dann greift der Client auf den 7777
Port zu, die ausgehende IP besteht aus allen IPs der Maschine und stimmt mit der IP von 192.168.?.*
überein zufällig ausgewählt.-bind-ip pppoe??,192.168.?.*:7777
, und dann greift der Client auf den 7777
-Port zu. Die ausgehende IP ist der Netzwerkschnittstellenname der Maschine, der mit pppoe??
übereinstimmt. Sie wird zufällig aus der IP ausgewählt, die mit 192.168.?.*
in der Maschinen-IP übereinstimmt.*
steht für 0 bis zu einem beliebigen Zeichen, ?
steht für 1 Zeichen.--bind-refresh
verwenden, um das Intervall zum Aktualisieren der lokalen Netzwerkschnittstelleninformationen anzugeben. Der Standardwert ist 5
, die Einheit ist Sekunde.Standardmäßig ist der Parameter -C, -K der Pfad zum CRT-Zertifikat und der Schlüsseldatei.
Wenn es sich um den Anfang von base64:// handelt, gelten die letztgenannten Daten als base64-codiert und werden nach der Decodierung verwendet.
Die Einstellung für den intelligenten Modus kann intelligent|direkt|übergeordnet sein.
Der Standardwert ist: übergeordnetes Element.
Die Bedeutung jedes Werts ist wie folgt:
--intelligent=direct
, die Ziele im Block sind nicht direkt verbunden.
--intelligent=parent
, das Ziel, das nicht direkt ist, wird auf die höhere Ebene verschoben.
--intelligent=intelligent
, blockiert und direkt haben keine Ziele, bestimmen intelligent, ob das Upstream-Zugriffsziel verwendet werden soll.
proxy help http
Lokale Ausführung:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
Dann greifen Sie auf den lokalen Port 33080 zu, um auf Port 22 von 192.168.22.33 zuzugreifen.
Der Parameter -p
unterstützt:
-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
Wenn die Anzahl der lokalen Überwachungsports größer als 1 ist, wird der entsprechende obere Port, der dem lokalen Port entspricht, verbunden und der Port in -P
wird ignoriert.
Wenn Sie eine Verbindung von allen Ports benötigen, stellen Sie eine Verbindung zum oberen angegebenen Port her. Sie können den Parameter --lock-port
hinzufügen.
wie zum Beispiel:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
Anschließend -P
die Verbindung des 33080
-Ports mit dem 33080
-Port von 192.168.22.33 verbunden, 0
die anderen Ports sind ähnlich.
Wenn Sie die Ports von 33080
, 33081
usw. an den 22
Port von 192.168.22.33 anschließen möchten, können Sie den Parameter --lock-port
hinzufügen.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) wird ausgeführt:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
Lokale Ausführung:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
Wenn Sie dann auf den lokalen Port 23080 zugreifen, greifen Sie auf den Port 8020 von 22.22.22.33 zu.
Primärer TCP -Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
Sekundäres TCP -Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Stufe 3 TCP -Proxy (lokal)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
Anschließend auf den lokalen Port 8080 zuzugreifen, wird über den verschlüsselten TCP -Tunnel auf den Port 8080 von 66.66.66.66 zugreifen.
VPS (IP: 22.22.2.33) wird ausgeführt:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
Lokale Ausführung:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Wenn Sie dann auf den lokalen Port 23080 zugreifen, greifen Sie über den verschlüsselten TCP -Tunnel auf den Port 8080 von 22.22.22.33 zu.
Primärer TCP -Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T tcp -P "66.66.66.66:8080" -C proxy.crt -K proxy.key
Sekundäres TCP -Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Stufe 3 TCP -Proxy (lokal)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Anschließend auf den lokalen Port 8080 zuzugreifen, wird über den verschlüsselten TCP -Tunnel auf den Port 8080 von 66.66.66.66 zugreifen.
Manchmal kann das Netzwerk, in dem sich der Proxy befindet, nicht direkt auf das externe Netzwerk zugreifen
Der Parameter -J kann Ihnen helfen, den Proxy über den HTTPS- oder SOCKS5 -Proxy mit dem Peer -P zu verbinden, wenn Sie den Proxy -TCP -Port zuordnen und den externen Port an den lokalen Zuordnen zuordnen.
Das Parameterformat -j lautet wie folgt:
HTTPS -Proxy -Schreiben:
Der Proxy benötigt Authentifizierung, Benutzername: Benutzername Passwort: Passwort
Https: // username: password@host: port
Agent erfordert keine Authentifizierung
Https: // host: port
SOCKS5 -Proxy -Schreiben:
Der Proxy benötigt Authentifizierung, Benutzername: Benutzername Passwort: Passwort
SOCKS5: // Benutzername: Passwort@Host: Port
Agent erfordert keine Authentifizierung
SOCKS5: // Host: Port
Host: Der IP- oder Domain -Name des Proxy
Port: Der Port des Proxy
Wenn der TCP -Proxy ein überlegener Typ (Parameter: -t) ist, unterstützt er die --bind-listen
ausgehende IP. Als ausgehender IP zum Zugriff auf die Zielwebsite.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
Obwohl der oben genannte Parameter --bind-listen
die ausgehende IP angeben kann, kann die entry IP
und die outgoing IP
--bind-ip
künstlich verwiesen werden. Parameter, Format: IP:port
, zum Beispiel: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. kann die Identifizierung --bind-ip
-Parameter wiederholen.
Beispielsweise hat dieser Computer IP 5.5.5.5
, 6.6.6.6
, und überwacht zwei Ports 8888
und 7777
, der Befehl lautet wie folgt:
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
Dann ist der Client Access Port 7777
, die ausgehende IP 5.5.5.5
, Zugriffsport 8888
, die ausgehende IP 6.6.6.6
, wenn beide --bind-ip
und --bind- are set at the same time listen
--bind-ip
hat eine höhere Priorität.
Darüber hinaus unterstützt der IP
Teil des Parameters --bind-ip
den network interface name
, wildcards
und mehr als eins, die detaillierte Beschreibung lautet wie folgt:
--bind-ip eth0:7777
Namen der 7777
an, wie z.7777
--bind-ip eth0.*:7777
eth0.
--bind-ip 192.168.?.*:7777
, dann greift der Client auf den 7777
-Port zu, und die ausgehende IP ist alle IPs der Maschine, was dem IP von 192.168.?.*
entspricht. zufällig ausgewählt.7777
von Netzwerkschnittstellen sein, --bind-ip pppoe??,192.168.?.*:7777
durch halbbreitliche Kommas getrennt sind, wie z. IP ist der Netzwerk -Schnittstellenname des Maschinens 192.168.?.*
pppoe??
*
repräsentiert 0 zu einer beliebigen Anzahl von Zeichen, und ?
--bind-refresh
verwenden, um das Intervall anzugeben, um die lokalen Netzwerkschnittstelleninformationen zu aktualisieren. Die Standardeinstellung ist 5
, das Gerät ist zweiter.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
Parameter --max-conns
kann die maximale Anzahl von Verbindungen pro Port begrenzen. 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
TCP -Verbindungsrate Der Parameter --rate-limit
kann die Geschwindigkeit jeder TCP -Verbindung begrenzen. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--ip-rate
die proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
-Gesamtrate des Clients . proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--port-rate
-Begrenzung Die Gesamtquote jedes Service -Ports. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
und ( --ip-rate
oder --port-rate
) können zusammen verwendet werden. --c
steuert --C
ob die Übertragung zwischen lokalem und Client komprimiert werden soll.
Beispiele:
VPS (IP: 22.22.22.33) Implementierung: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
Lokale Ausführung: proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
Lokale Ausführung:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
Dann greifen Sie auf den örtlichen UDP: 5353 Port auf 8.8.8.8.8 UDP: 53 -Port zuzugreifen.
Der -p
-Parameter unterstützt:
-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
Wenn die Anzahl der lokalen Höranschlüsse größer als 1 ist, wird der entsprechende obere Port, der dem lokalen Port entspricht, angeschlossen und der Port in -P
ignoriert.
Wenn Sie eine Verbindung von allen Ports benötigen, stellen Sie eine Verbindung zum oberen angegebenen Port her, und können Sie den Parameter --lock-port
hinzufügen.
wie zum Beispiel:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
Anschließend -P
die Verbindung des 33080
-Ports mit dem 33080
-Port von 192.168.22.33 verbunden, 0
die anderen Ports sind ähnlich.
Wenn Sie die Anschlüsse von 33080
, 33081
usw. an den 2222
Port von 192.168.22.33 anschließen möchten, können Sie den Parameter --lock-port
hinzufügen.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) wird ausgeführt:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
Lokale Ausführung:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
Greifen Sie dann auf den lokalen UDP: 5353 -Port über den TCP -Tunnel über den VPS Access 8.8.8.8 UDP: 53 -Port zuzugreifen.
Primärer TCP -Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
Sekundäres TCP -Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Stufe 3 TCP -Proxy (lokal)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
Der Zugriff auf den lokalen 5353 -Port erfolgt dann über den TCP -Tunnel über den VPS, um auf Port 8.8.8.8 zuzugreifen.
VPS (IP: 22.22.2.33) wird ausgeführt:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Lokale Ausführung:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Greifen Sie dann auf den lokalen UDP: 5353 -Port über den verschlüsselten TCP -Tunnel über den VPS Access 8.8.8.8 UDP: 53 -Port zuzugreifen.
Primärer TCP -Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Sekundäres TCP -Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Stufe 3 TCP -Proxy (lokal)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Anschließend auf den lokalen 5353 -Port zugreifen, wird über den verschlüsselten TCP -Tunnel über den verschlüsselten TCP -Tunnel auf den 8.8.8.8 -Port 53 zugreifen.
Wenn die uDP -Upstream -Proxies (Parameter: -t) UDP ist, unterstützt es die --bind-listen
ausgehende IP. IP, um auf das Ziel zuzugreifen.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
Intranet-Penetration, unterteilt in zwei Versionen, "Multi-Link-Version" und "Multiplexed-Version", im Allgemeinen wie ein Webdienst, ist dieser Dienst keine langfristige Verbindung. Es wird empfohlen, "Multi-Link-Version" zu verwenden, falls es sich ist, die Zeitverbindung zu halten, die vorschlägt, eine "Multiplexed -Version" zu verwenden.
Das folgende Tutorial verwendet die "Multiplexed -Version" als Beispiel, um zu veranschaulichen, wie sie verwendet werden.
Die Intranet -Penetration besteht aus drei Teilen: Client, Server und Brücke;
Hintergrund:
Nachfrage:
Zu Hause können Sie auf den Port 80 von Company Machine A zugreifen, indem Sie auf Port 28080 des VPS zugreifen.
Schritte:
Auf VPS ausführen
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
Vollständig
Hintergrund:
Nachfrage:
Geben Sie die Adresse in der Konfiguration der Webseiten -Callback -Schnittstelle des WeChat -Entwicklungskontos ein: http://22.22.22.22/calback.php
Anschließend können Sie unter dem 80 -Anschluss des Notizbuchs auf das Calback.php zugreifen.
Zum Beispiel: wx-dev.xxx.com beschlacht auf 22.22.22.22 und dann in Ihrem eigenen Notebook Nginx
Konfigurieren Sie den Domänennamen wx-dev.xxx.com im spezifischen Verzeichnis.
Schritte:
Führen Sie auf VPS aus, um sicherzustellen, dass Port 80 von VPS nicht von anderen Programmen besetzt ist.
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
Führen Sie auf Ihrem Laptop aus
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Vollständig
Hintergrund:
Nachfrage:
Zu Hause können Sie den Firmenmaschinen A zur Durchführung von Domain -Namensauflösungsdiensten verwenden, indem Sie den lokalen DNS auf 22.22.22.22 festlegen.
Schritte:
Auf VPS ausführen
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
Vollständig
Hintergrund:
Nachfrage:
Um in Sicherheit zu gehen, möchte ich keinen Zugriff auf die Firmenmaschine A auf dem VPS haben, und ich kann zu Hause auf den Port 28080 der Maschine zugreifen.
Zugang zu Port 80 von Company Machine A über einen verschlüsselten Tunnel.
Schritte:
Auf VPS ausführen
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
Auf der Firmenmaschine ausführen a
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Führen Sie auf Ihrem Heimcomputer aus
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Vollständig
Tipp:
Wenn mehrere Clients gleichzeitig mit derselben Brücke verbunden sind, müssen Sie einen anderen Schlüssel angeben, der durch den Parameter -K festgelegt werden kann, und -K kann jede eindeutige Zeichenfolge sein.
Sei einfach der einzige auf derselben Brücke.
Wenn der Server mit der Brücke verbunden ist und gleichzeitig mehrere Clients mit derselben Brücke verbinden, müssen Sie den Parameter -K verwenden, um den Client auszuwählen.
Entdecken Sie mehrere Ports, indem Sie den Parameter -r wiederholen.
Hintergrund:
Nachfrage:
Zu Hause können Sie auf den Port 80 von Company Machine A zugreifen, indem Sie auf Port 28080 des VPS zugreifen.
Zu Hause kann ich auf den 21. Port of Company Machine A zugreifen, indem ich auf Port 29090 des VPS zugreift.
Schritte:
Auf VPS ausführen
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
Vollständig
Das vollständige Format von -r lautet: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1.
Zum Beispiel: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
Wenn der Parameter --udp angegeben ist, ist Protokoll standardmäßig UDP, dann: -r ":8080@:80"
Standardeinstellungen zu UDP;
Wenn der Parameter -OUD nicht angegeben ist, ist Protokoll standardmäßig TCP, dann: -r ":8080@:80"
Standardeinstellungen zu TCP;
4.7.2.
Zum Beispiel: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
Wenn der Parameter -K angegeben ist, wie -r ":8080@:80"
.
Wenn der Parameter -K nicht angegeben ist, dann: -r ":8080@:80"
client_key standardnault zu Standard;
0.0.0.0
127.0.0.1
Manchmal kann der Server oder der Client nicht direkt auf das externe Netzwerk zugreifen
Der Parameter -J kann Ihnen helfen, den Server oder den Client über https oder socs5 an die Brücke zu verbinden.
Das Parameterformat -j lautet wie folgt:
HTTPS -Proxy -Schreiben:
Der Proxy benötigt Authentifizierung, Benutzername: Benutzername Passwort: Passwort
Https: // username: password@host: port
Agent erfordert keine Authentifizierung
Https: // host: port
SOCKS5 -Proxy -Schreiben:
Der Proxy benötigt Authentifizierung, Benutzername: Benutzername Passwort: Passwort
SOCKS5: // Benutzername: Passwort@Host: Port
Agent erfordert keine Authentifizierung
SOCKS5: // Host: Port
Host: Der IP- oder Domain -Name des Proxy
Port: Der Port des Proxy
Normalerweise verwendet der HTTP -Anforderungs -Client den IP und den Port des Servers, um das Host -Feld festzulegen. Es ist jedoch nicht mit dem erwarteten Backend -Host, der dazu führt Virtueller Host und es wird --http-host
--http-host
. --http-host
Parameter, Zwei Header werden in den X-Forwarded-For
jeder HTTP X-Real-IP
Anforderung hinzugefügt.
Das Format des Parameters server
-HTTP -Host lautet wie folgt:
--http-host www.test.com:80@2200
, wenn der Server auf mehrere Ports hört, wiederholen Sie einfach den Parameter --http-host
um den Host für jeden Port festzulegen.
Beispiel:
Zum Beispiel bietet der Client Local Nginx, 127.0.0.1:80 einen Webdienst, der an einen Domain -Namen local.com
gebunden ist.
Dann können die Server -Startparameter wie folgt sein:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
Erläuterung:
-r :[email protected]:80
und --http-host local.com:80@2500
Der 2500-Port ist der Port, den der Server lokal hört.
Wenn das HTTP -Protokoll verwendet wird, um den IP: 2500 -Port des Servers anzufordern, wird das Header -Host -Feld von HTTP auf local.com
festgelegt.
Wenn Sie einen Server-Docking-Peer separat starten, ist es das Proxy-Admin-Bedienfeld.
Starten Sie dann den Server und fügen Sie den Parameter-server-id = die ID der Zuordnungsregel hinzu, um den Datenverkehr zu zählen.
Intranet -Penetrationsunterstützung Wenn der Server- und Client -Netzwerkbedingungen erfüllt ist, sind Server und Client direkt über P2P verbunden.
Wenn Sie die Brücke, Server, Client starten, können Sie den Parameter --p2p
hinzufügen.
Wenn das P2P -Loch zwischen dem Server und dem Client fehlschlägt, werden die Brückenübertragungsdaten automatisch umgeschaltet.
Die Intranet Penre Bridge kann die Client-Schlüsselweiche festlegen.
a.
b.
c.
Die Standardeinstellung ist leer und erlaubt allen Schlüssel.
SENAT TYP -Urteilsvermögen, leicht zu überprüfen proxy tools -a nattype
ob das Netzwerk P2P unterstützt.
proxy help bridge
proxy help server
proxy help client
prompt:
SOCKS5 -Proxy, unterstützt Connect, UDP -Protokoll, unterstützt BIND nicht, unterstützt Benutzername und Kennwortauthentifizierung.
*** Die UDP --udp-port 0
Funktion von SOCKS5 wird standardmäßig ausgeschaltet und kann durch --udp
eingeschaltet werden. --udp-port 0
, 0
repräsentiert ein kostenloser Port, oder Sie können einen bestimmten Port manuell angeben.
proxy socks -t tcp -p "0.0.0.0:38080"
Hören Sie Port -Argument -p
kann sein:
-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
Verwenden Sie den lokalen Port 8090 unter der Annahme, dass der vorgelagerte Socks5 -Proxy 22.22.22.22:8080
beträgt
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Wir können auch die Schwarzweißlistendatei des Website -Domänennamens, eines Domain -Namens und eines Domain -Namens angeben. Die Übereinstimmung ist das rechtliche Übereinstimmung, zum Beispiel: Baidu.com, die Übereinstimmung Der Domainnamen -Domain -Name geht direkt an den vorgelagerten Agenten. Der Domain -Name der Liste geht nicht zum vorgelagerten Agenten.
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Stufe 1 Sockenproxy (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Secondary Socken Proxy (lokale Linux)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Wenn Sie dann auf den lokalen Port 8080 zugreifen, greifen Sie auf den Proxy -Port 38080 auf dem VPS zu.
Secondary Socken -Proxy (lokale Fenster)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Setzen Sie dann Ihr WindOS -System, der Proxy, der das Proxy -Internetprogramm durchlaufen muss, der Sockens5 -Modus.
Stufe 1 Socken Proxy VPS_01, IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Secondary Socken 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
Stufe 3 Socken Proxy (lokal)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Der Zugriff auf den lokalen Port 8080 besteht darin, auf den Socken-Proxy der ersten Stöcke auf den Proxy-Port 38080 zuzugreifen.
Standardmäßig bestimmt der Proxy intelligent, ob ein Website -Domain -Name nicht zugänglich ist. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Beschreibung: Das Prinzip der SSH -Übertragung besteht darin, die Weiterleitungsfunktion von SSH zu verwenden, dh nach einer Verbindung zu SSH können Sie über SSH -Proxy auf die Zieladresse zugreifen.
Angenommen, es gibt: VPS
Lokale SOCKS5 -Proxy -Port 28080, Ausführen:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Lokale SOCKS5 -Proxy -Port 28080, Ausführen:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Wenn Sie dann auf den lokalen Port 28080 zugreifen können, können Sie über die VPS auf die Zieladresse zugreifen.
Für das Socken -Proxy -Protokoll können wir Benutzername und Kennwortauthentifizierung durchführen.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Wiederholen Sie für mehrere Benutzer den Parameter -a.
Es kann auch in einer Datei im Format eines "Benutzernamens: Passwort" platziert und dann mit -F angegeben.
proxy socks -t tcp -p ":33080" -F auth-file.txt
Darüber hinaus integriert der SoChs5-Agent die externe HTTP-API-Authentifizierung.
Wenn es eine Benutzerverbindung gibt, fordert der Proxy die URL in GET -Modus mit den folgenden drei Parametern an.
In anderen Fällen ist die Authentifizierung fehlgeschlagen.
Zum Beispiel:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Wenn der Benutzer eine Verbindung herstellt, fordert der Proxy die URL ("http://test.com/auth.php") im GET -Modus an.
Bringen Sie vier Parameter mit: Benutzer, Pass, IP, local_ip:
Http://test.com/auth.php?user= <uuser}&pass= itip= <ip}&local_ip=iCocal_IP}}
Benutzer: Benutzername
Pass: Passwort
IP: IP des Benutzers, zum Beispiel: 192.168.1.200
Local_ip: IP des vom Benutzer zugegriffenen Servers, zum Beispiel: 3.3.3.3
Wenn es keinen Parameter -A- oder -F- oder -Auth -url gibt, wird die Authentifizierung ausgeschaltet.
Das KCP-Protokoll benötigt den Parameter-KCP-Key, um ein Kennwort zum Verschlingen und Entschlüsseln von Daten festzulegen.
Stufe 1 HTTP -Proxy (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
Sekundärer HTTP -Proxy (lokale Linux)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Wenn Sie dann auf den lokalen Port 8080 zugreifen, greifen Sie auf den Proxy -Port 38080 auf dem VPS zu. Die Daten werden über das KCP -Protokoll übertragen.
-DNS-Address- und--DNS-TTL-Parameter, verwendet, um die vom Proxy verwendeten DNS (--DNS-Address) anzugeben, um auf den Domänennamen zuzugreifen.
Die Analyseergebnis-Cache-Zeit (--DNS-TTL) Sekunden, um System-DNS-Interferenzen in den Proxy zu vermeiden, kann zusätzlich zur Cache-Funktion auch die DNS-Auflösungzeit verkürzen, um die Zugriffsgeschwindigkeit zu verbessern.
Zum Beispiel:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
Sie können auch die Parameter --dns-interface
verwenden --dns-address
um die --dns-interface eth0
die DNS-Auflösung verwendete Bandbreite anzugeben. wirksam sein.
Der Proxy des Proxy kann TCP -Daten durch TLS -Standardverschlüsselung und KCP -Protokoll über TCP verschlüsseln. AES256 -Verschlüsselung, Sie müssen nur ein Passwort definieren, wenn Sie es verwenden.
Die Verschlüsselung ist in zwei Teile unterteilt, eine ist, ob die lokale (-Z) Verschlüsselung und Entschlüsselung und die andere, ob die Übertragung mit dem Upstream (-Z) verschlüsselt oder entschlüsselt ist.
Für die benutzerdefinierte Verschlüsselung müssen beide Seiten Proxy sein.
Die folgenden zwei Ebenen, drei Ebenen zum Beispiel:
Sekundärinstanz
Führen Sie auf Stufe 1 VPS (IP: 2.2.2.2) aus:
proxy socks -t tcp -z demo_password -p :7777
Lokale sekundäre Ausführung:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Wenn auf die Website über den lokalen Agenten 8080 zugegriffen wird, wird auf die Zielwebsite durch verschlüsselte Übertragung mit dem Upstream zugegriffen.
Drei-Level-Instanzen
Führen Sie auf Stufe 1 VPS (IP: 2.2.2.2) aus:
proxy socks -t tcp -z demo_password -p :7777
Ausführen auf den sekundären VPS (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Lokale Ausführung von drei Ebenen:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Wenn auf die Website über den lokalen Agenten 8080 zugegriffen wird, wird auf die Zielwebsite durch verschlüsselte Übertragung mit dem Upstream zugegriffen.
Der Proxy des Proxy kann TCP -Daten durch benutzerdefinierte Verschlüsselung und TLS -Standardverschlüsselung und KCP -Protokoll auf TCP verschlüsseln.
Komprimieren Sie die Daten, dh die Komprimierungsfunktion und die benutzerdefinierte Verschlüsselung und TLS | KCP können in Kombination verwendet werden, und die Komprimierung wird in zwei Teile unterteilt.
Ein Teil davon ist eine lokale Kompressionsübertragung (-M), und ein Teil ist, ob das Getriebe mit dem Upstream (-M) komprimiert ist.
Die Komprimierung erfordert, dass beide Seiten Proxy sein, und die Komprimierung schützt auch in gewissem Maße Daten.
Die folgenden zwei Ebenen, drei Ebenen zum Beispiel:
Sekundärinstanz
Führen Sie auf Stufe 1 VPS (IP: 2.2.2.2) aus:
proxy socks -t tcp -m -p :7777
Lokale sekundäre Ausführung:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Auf diese Weise wird auf die Website auf die Website über die Komprimierung mit dem Upstream zugegriffen, wenn die Website über den lokalen Agenten 8080 zugegriffen wird.
Drei-Level-Instanzen
Führen Sie auf Stufe 1 VPS (IP: 2.2.2.2) aus:
proxy socks -t tcp -m -p :7777
Ausführen auf den sekundären VPS (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Lokale Ausführung von drei Ebenen:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Auf diese Weise wird auf die Website auf die Website über die Komprimierung mit dem Upstream zugegriffen, wenn die Website über den lokalen Agenten 8080 zugegriffen wird.
Der Socks-Proxy unterstützt den Lastausgleich auf oberer Ebene, und es können mehrere Upstream-Wiederholungsparameter verwendet werden.
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
Die Geschwindigkeitsbegrenzung beträgt 100K, was durch den -l
-Parameter angegeben werden kann: 100K 2000K 1m.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
Der Parameter --bind-listen
kann die Clientverbindung mit der Portal-IP öffnen und die Portal-IP als ausgehende IP zum Zugriff auf die Zielwebsite verwenden. Das Eindringen von IP.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
Obwohl der oben genannte Parameter --bind-listen
die ausgehende IP angeben kann, kann der entry IP
und outgoing IP
--bind-ip
Menschen nicht beeinträchtigt werden. Parameter, Format: IP:port
, zum Beispiel: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Wiederholen Sie den Parameter --bind-ip
.
Beispielsweise hat der Computer IP 5.5.5.5
, 6.6.6.6
und überwacht zwei Ports 8888
und 7777
, der Befehl lautet wie folgt:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Dann ist der Client Access Port 7777
, die ausgehende IP 5.5.5.5
, Zugriffsport 8888
, die ausgehende IP 6.6.6.6
, wenn beide --bind-ip
und --bind- are set at the same time listen
--bind-ip
hat eine höhere Priorität.
Darüber hinaus unterstützt der IP
Teil des Parameters --bind-ip
den network interface name
, wildcards
und mehr als eins.
--bind-ip eth0:7777
Namen der 7777
an, wie z.7777
--bind-ip eth0.*:7777
eth0.
--bind-ip 192.168.?.*:7777
, dann greift der Client auf den 7777
-Port zu, und die ausgehende IP ist alle IPs der Maschine, was dem IP von 192.168.?.*
entspricht. zufällig ausgewählt.7777
von Netzwerkschnittstellen sein, --bind-ip pppoe??,192.168.?.*:7777
durch halbbreitliche Kommas getrennt sind, wie z. IP ist der Netzwerk -Schnittstellenname des Maschinens pppoe??
192.168.?.*
*
repräsentiert 0 zu einer beliebigen Anzahl von Zeichen, und ?
--bind-refresh
verwenden, um das Intervall anzugeben, um die lokalen Netzwerkschnittstelleninformationen zu aktualisieren. Die Standardeinstellung ist 5
, das Gerät ist zweiter.SOCKS5 unterstützt die Cascading -Authentifizierung und -a kann expreamische Authentifizierungsinformationen einrichten.
stromaufwärts:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
Lokal:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
Standardmäßig ist der Parameter -c, -K der Pfad zum CRT -Zertifikat und der Schlüsseldatei.
Wenn es sich um den Beginn von Base64: // handelt, werden die letzteren Daten als Base64 codiert angesehen und werden nach dem Dekodieren verwendet.
Intelligente Moduseinstellung kann eine der intelligenten | direkten Eltern sein.
Der Standard ist: Elternteil.
Die Bedeutung jedes Werts lautet wie folgt:
--intelligent=direct
, die Ziele im Blocked sind nicht direkt verbunden.
--intelligent=parent
, das Ziel, das nicht in der direkten Ebene ist, wird auf das höhere Niveau.
--intelligent=intelligent
, blockiert und direkt haben keine Ziele und bestimmen intelligent, ob das vorgelagerte Zugriffsziel verwendet werden soll.
Standardmäßig ist die Portnummer der UDP -Funktion von Socks5, der Proxy, in der rfc1982 draft
installiert, die während des Protokollhandshake -Prozesses zufällig angegeben ist und nicht im Voraus angegeben werden muss.
In einigen Fällen müssen Sie jedoch den UDP --udp-port port number
Funktionsport reparieren.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
Standardmäßig arbeitet die UDP -Funktionalität des Sockens5 -Proxy im Proxy gemäß den SOCKS5 RFC -Spezifikationen --udp-compat
-Parameter kann hinzugefügt werden, um den Kompatibilitätsmodus für Socken -UDP -Funktionen zu aktivieren.
Zusätzlich kann der Parameter -udp-gc
verwendet werden, um die maximale Leerlaufzeit für UDP einzustellen.
proxy help socks
Die Proxy -Protokollumwandlung verwendet den SPS -Unterbefehl Setzen Sie den vorhandenen HTTP (S) -Proxy- oder Socken -Proxy- oder SS -Proxy in einen Port um, der sowohl HTTP (S) als auch Socken- und SS -Proxies unterstützt, und der HTTP (S) Proxy unterstützt Forward Proxy und Reverse -Proxy (SNI), konvertierte SOCKS5 -Proxy, UDP -Funktion wird weiterhin unterstützt, wenn die obere Ebene für die vorhandenen HTTP -Proxy- oder Socken -Proxy -Proxy, drei Modi von TLS, TCP und KCP unterstützt werden und unterstützt werden und unterstützt werden. Die Kettenverbindung wird unterstützt, dh mehrere SPS -Knotenpegel können unterstützt werden.
Die von der ss
Funktion unterstützten Verschlüsselungsmethoden sind: 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-ITF, Chacha20-ITF-Poly1305, DES-CFB, RC4-MD5, RC4-MD5-6, Salsa20, Xchacha20
Hören Sie Port -Argument -p
kann sein:
-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
Die UDP -Funktion von SS wird standardmäßig ausgeschaltet --udp
kann durch --ssudp
eingeschaltet werden. Die Leistung kann verbessert 0
, indem ein --udp-port 0
durch Parameter festgelegt wird.
Angenommen, es gibt bereits einen normalen HTTP-Proxy: 127.0.0.1:8080. 192-CFB, SS-Passwort: Pass.
Der Befehl lautet wie folgt:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Angenommen, es gibt bereits einen TLS -HTTP (S) Proxy: 127.0.0.1:8080. Datei., SS-Verschlüsselung: AES-192-CFB, SS-Passwort: Pass.
Der Befehl lautet wie folgt:
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
Angenommen, es gibt bereits einen KCP -HTTP -Proxy (Passwort ist: Demo123): 127.0.0.1:8080, jetzt verwandeln wir ihn in einen normalen Proxy, der sowohl HTTP (S) als auch Socken und SS unterstützt. , SS-Verschlüsselung: AES-192-CFB, SS-Passwort: Pass.
Der Befehl lautet wie folgt:
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
Angenommen, es gibt bereits einen normalen Socks5 -Proxy: 127.0.0.1:8080, jetzt verwandeln wir ihn in einen gemeinsamen Proxy, der sowohl HTTP (S) als auch Socken und SS unterstützt. , SS Passwort: Pass passieren.
Der Befehl lautet wie folgt:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Angenommen, es gibt bereits einen TLS -Socks5 -Proxy: 127.0.0.1:8080, jetzt verwandeln wir ihn in einen gemeinsamen Proxy, der sowohl HTTP (S) als auch Socken und SS -Verschlüsselung unterstützt. : AES-192-CFB, SS-Passwort: Pass.
Der Befehl lautet wie folgt:
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
durchführen.
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 |
---|---|---|---|
Ja/Nein | Ja | Ja | From parent-auth |
Ja/Nein | NEIN | Ja | From parent-auth |
Ja/Nein | Ja | NEIN | NEIN |
NEIN | NEIN | NEIN | NEIN |
Ja | NEIN | NEIN | 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.
wie zum Beispiel:
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.
Zum Beispiel:
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 wirksam sein.
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!
Tipp:
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:
Tipp:
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
Oder
proxy dns --default direct -p :5353
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S http -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S socks -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S http -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S socks -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t kcp -p :33080
Local execution:
proxy dns -S http -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080
Local execution:
proxy dns -S socks -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tcp -p :33080 -z password
Local execution:
proxy dns -S http -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080 -z password
Local execution:
proxy dns -S socks -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
The proxy's http(s)/socks5/sps proxy function supports user-to-agent access via the API.
user
or client ip
or server port
. The proxy's http(s)/socks5/sps proxy API function is controlled by three parameters: --auth-url
and --auth-nouser
and --auth-cache
.
The parameter --auth-url
is the HTTP API interface address. When the client connects, the proxy will request the url in GET mode, with the following parameters. If the HTTP status code 204 is returned, the authentication is successful. In other cases, the authentication fails.
An example of a complete request API:
http://test.com/auth.php?user=a&pass=b&client_addr=127.0.0.1:49892&local_addr=127.0.0.1:8100&target=http%3A%2F%2Fwww.baidu.com&service=http&sps=0
user and pass
When the proxy turns on authentication, here is the username and password provided by the client.
client_addr
The address used by the client to access the proxy, format IP: port.
local_addr
The proxy address accessed by the client, format IP: port.
service
Proxy type, divided into: http, socks.
Whether the sps
proxy is provided by sps, 1: yes, 0: no.
target
The target to be accessed by the client. If it is an http(s) proxy, the target is the specific url accessed; if it is a socks5 proxy, the target is empty.
Suppose --auth-url http://127.0.0.1:333/auth.php points to a php interface address.
The contents of auth.php are as follows:
<?php
#all users and password
$ alluser =[
" user1 " => " pass1 " ,
" user2 " => " pass2 " ,
" user3 " => " pass3 " ,
" user4 " => " pass4 " ,
];
$ proxy_ip = $ _GET [ ' local_addr ' ];
$ user_ip = $ _GET [ ' client_addr ' ];
$ service = $ _GET [ ' service ' ];
$ is_sps = $ _GET [ ' sps ' ]== ' 1 ' ;
$ user = $ _GET [ ' user ' ];
$ pass = $ _GET [ ' pass ' ];
$ target = $ _GET [ ' target ' ];
//business checking
//....
$ ok = false ;
foreach ( $ alluser as $ dbuser => $ dbpass ) {
if ( $ user == $ dbuser && $ pass == $ dbpass ){
$ ok = true ;
break ;
}
}
//set the authentication result
if ( $ ok ){
header ( " userconns:1000 " );
header ( " ipconns:2000 " );
header ( " userrate:3000 " );
header ( " iprate:8000 " );
header ( " userqps:5 " );
header ( " ipqps:2 " );
header ( " upstream:http://127.0.0.1:3500?parent-type=tcp " );
header ( " outgoing:1.1.1.1 " );
header ( " userTotalRate:1024000 " );
//header("ipTotalRate:10240");
//header("portTotalRate:10240");
//header("RotationTime:60");
header ( " HTTP/1.1 204 No Content " );
}
userconns
: The maximum number of connections for the user, not limited to 0 or not set this header.
ipconns
: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate
: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate
: The single TCP connection rate limit of the client IP, in bytes/second, not limited to 0 or not set this header.
userqps
: The maximum number of connections per second (QPS) for the user, not limited to 0 or not set this header.
ipqps
: The maximum number of connections per second (QPS) for the client IP, not limited to 0 or not set this header.
upstream
: The upstream used, not empty, or not set this header.
outgoing
: The outgoing IP used. This setting is only effective when the upstream is empty. The IP set here must be owned by the machine where the proxy is located, otherwise, the proxy will not function properly. Starting from version v13.2
, outgoing
supports multiple subnet formats separated by commas. The proxy will randomly select an IP from the subnet as the outgoing IP. This randomness will also be keep when authentication cache is enabled. The following formats are supported for subnets:
192.168.1.1
, Description: Single IP, IPv43001:cb2::
, Description: Single IP, IPv6192.168.1.1/24
, Description: CIDR format subnet, IPv43001:cb2::/126
, Description: CIDR format subnet, IPv6192.168.1.1-192.168.1.200
, Description: IP range, IPv42311:ca2::-2311:ca2::10
, Description: IP range, IPv6 Example: 192.16.1.1,192.161.1.2,192.168.1.2-192.168.1.255
userTotalRate
: Limit the user
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
ipTotalRate
:Limit the client ip
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
portTotalRate
:Limit the server port
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
RotationTime
: (requires version >= v13.2)
Controls the time interval, in seconds, for randomly selecting the outgoing IP. Leave it blank or unset this header if not needed.When the outgoing returned by the API is a subnet, and if you don't want the proxy to randomly select a new IP for each client connection, you can use this parameter to control the time interval for random IP selection. If within the interval period, the previously selected IP will be used. If the API does not return the RotationTime
header or if RotationTime
is set to 0, the proxy will randomly select an IP from the outgoing subnet as the outgoing IP for each client connection.
userrate
、 iprate
and userTotalRate
、 ipTotalRate
、 portTotalRate
can be set at same time, for example: set userrate
with 1024000 to limit the user's total bandwidth speed to 1M/s of user's all tcp connections. And set userrate
with 102400 to limit the user one tcp connection speed to 100K/s.userTotalRate
、 ipTotalRate
、 portTotalRate
set at same time, the valid order is : userTotalRate
-> ipTotalRate
-> portTotalRate
userTotalRate
、 portTotalRate
set at same time, and set --auth-nouser
,all clients that not send username will be as an "empty username" user,they are using a same limiter. --auth-url
is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add --auth-nouser
. The visit will still access the authentication address --auth-url
for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.--auth-cache
authentication cache, cache the authentication result for a certain period of time, improve performance, reduce the pressure on the authentication interface, --auth-cache unit seconds, default 0, set 0 to close the cache.--auth-cache
only caches the results of successful authentication and does not cache the results of failed authentication. If you need to cache the failed authentication results for a certain period of time, It can be set through the parameter -auth-fail-cache
to improve performance and reduce the pressure on the authentication interface. The unit of --auth-fail-cache is seconds. The default is 0. Setting 0 turns off the cache. sps
is 0.http://127.0.0.1:3100?argk=argv
socks5://127.0.0.1:3100?argk=argv
Explanation: http://
, socks5://
is fixed, 127.0.0.1:3100
is the address of the upstream
When sps
is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: protocol://a:[email protected]:33080?argk=argv
, please refer to SPS chapter for details, multiple upstreams , the description of the -P
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 ermöglicht.
Examples of multiple upstreams:
http://127.0.0.1:3100?argk=argv;http://127.0.0.2:3100?argk=argv
http://127.0.0.1:3100?argk=argv&weight=10;http://127.0.0.2:3100?argk=argv&weight=20
Weight selection logic:
When a weight is set for an upstream, it divides the total weight among the upstreams based on their order. For example, if there are two upstreams with weights 10 and 20 respectively, the total weight is 30. The first upstream's weight range is 1-10, and the second upstream's weight range is 11-30. This logic extends to more upstreams. Each time, a random number within the total weight range is chosen, and the corresponding upstream is selected based on this number's range.
The proxy's http (s) / socks5 / sps / tcp / udp proxy function supports traffic reporting. You can set an http interface address through the parameter --traffic-url
. The proxy will report the traffic used for this connection to this address.Specifically, the proxy sends an HTTP to GET request to the HTTP URL address set by --traffic-url
. There are two reporting modes, which can be specified by the --traffic-mode
parameter. It can be reported in the normal mode or in the fast mode.
Report in normal
normal mode
When the connection is released, the proxy will report the traffic used for this connection to this --traffic-url
address.
Report in fast
mode
For each connection that has been established, the proxy will timely
report the traffic generated by this connection to this --traffic-url
address.
Timing
defaults to 5 seconds, and you can modify Timing
to the appropriate number of seconds via the parameter --traffic-interval
.
Report in fast
global mode
By default, if the API can't handle high concurrency report access, you can use the fast global mode, Use the parameter --fast-global
to open, this parameter is only valid when --traffic-mode=fast
. In fast global mode, for a --traffic-url
, no matter how many concurrent connections there are, only have one reporter, and the reporting interval is 5 seconds. In this mode, the reporting request method is POST
, Content-Type
is application/json
, the post body data is JSON Array
, example: [{},{}]
, the keys of object in the array are same with the following Reqeust parameter description
.
The traffic reporting function combined with the above API authentication function can control the user's traffic usage in real time. The traffic is reported to the interface. The interface writes the traffic data to the database, and then the authentication API queries the database to determine the traffic usage and determine whether the user can be successfully authenticated.
The following is a complete URL request example:
http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a
Request parameter description:
id
: service id flag.
server_addr
: proxies's address requested by the client, format: IP: port.
client_addr
: client address, format: IP: port.
target_addr
: target address, format: "IP: port", when tcp / udp proxy, this is empty.
username
: proxy authentication user name, this is empty when tcp / udp proxy.
bytes
: the number of traffic bytes used by the user.
out_local_addr
: outgoing tcp connection's local address,format: IP: port.
out_remote_addr
: outgoing tcp connection's remote address,format: IP: port.
upstream
: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
The --traffic-url
URL must response the HTTP status code 204
. Only when the traffic is reported will the report be considered successful, and if it response other status codes, it will be considered that the reported traffic failed, and the log will be output.
The proxy's http (s) / socks5 / sps proxy function supports a control interface, which can be specified by the parameter --control-url http interface address, Then the proxy will interval send all the usernames or client IPs currently connected to the proxy to this URL. Specifically, the proxy sends an HTTP to POST request to the HTTP URL address set by --control-url.
interval
defaults to 30 seconds, this value can be modified via the --control-sleep parameter.
When the user expires, or the user's traffic has been used up, the authentication API can only control the user cannot create a new connection, but the connection with the proxy has been established and the connection cannot be immediately disconnected. Then this problem can be solved through the control interface. The control interface will return the content through the control interface in the slowest interval
time, and the end is invalid when the user establishes the connection.
An HTTP POST request will be sent to the control. The interface form
has three fields: interface, ip, conns, and the conns
field requires a user whose proxy version is greater than proxy 12.2
.
user
The username currently connected to the agent, multiple separated by commas, for example: user1, user2
ip
The client IP is connected to the proxy, and multiple clients using English are split addresses, for example: 1.1.1.1, 2.2.2.2
conns
The tcp connection information currently connecting to the proxy port to transmit data. The conns value is a json string, the format is a sequence of connections, the element is an object, the object contains the details of the connection, conns format: [{"id":"ab7bf1f10501d6f7","client":"127.0.0.1:62112","server":"127.0.0.1:9092","user":""}]
Object field description: id: connection id, client: client's unique IP address and port, server: client's IP and no port access, user's connection authentication (null if any)
The data returned by the control interface is invalid user and IP or connection. The format is a json object data. There are three fields user, ip, and conns. The conns
field requires the proxy version greater than or equal to 12.2
. Format: {"user":"a,b","ip":"",conns:["ab7bf1f10501d6f7","cb7bf1f10501d6f7"]}
user
: The username currently connected to the proxy, multiple separated by commas, not left blank, for example: user1, user2
ip
: The ip address of the client currently connected to the proxy, multiple separated by commas, not left blank, for example: 1.1.1.1, 2.2.2.2
conns
: is an array, the element is a connection id, this id is the id field of the connection object in conns in the above Request Description
.
Einführen:
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
Befehlserklärung:
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.
beachten:
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.