GoProxy adalah proksi http berkinerja tinggi, proksi https, proksi kaus kaki5, proksi ss, proksi websocket, proksi tcp, proksi udp, perisai permainan, proksi permainan. Mendukung proksi maju, proksi terbalik, proksi transparan, proksi nat internet, proksi https penyeimbangan beban, penyeimbangan beban proxy http, penyeimbangan beban proxy kaus kaki5, penyeimbangan beban proxy soket, penyeimbangan beban proxy ss, pemetaan port TCP / UDP, SSH transit, transmisi terenkripsi TLS, konversi protokol, proksi DNS anti-polusi, otentikasi API, batas kecepatan, batas koneksi untuk membantu Anda mengekspos server lokal di belakang NAT atau firewall ke internet sehingga Anda atau pengunjung Anda dapat mengaksesnya. secara langsung dan mudah.
Dan ProxyAdmin adalah konsol web yang kuat dari siput007/goproxy.
Panduan di halaman ini berlaku untuk goproxy versi terbaru. Versi lain mungkin tidak berlaku.
Klik untuk bergabung dengan Telegram
Tip: Semua operasi memerlukan hak akses root.
Versi gratisnya melakukan ini:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
Versi komersial melakukan ini:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
Instalasi selesai, direktori konfigurasinya adalah /etc/proxy. Untuk penggunaan lebih detail, silakan merujuk ke direktori manual di atas untuk mempelajari lebih lanjut fitur-fitur yang ingin Anda gunakan. Jika instalasi gagal atau vps Anda bukan linux64-bit sistem, ikuti langkah semi-otomatis di bawah ini untuk menginstal:
Alamat unduhan: https://github.com/snail007/goproxy/releases/latest
Mari kita ambil v7.9 sebagai contoh. Jika Anda memiliki versi terbaru, silakan gunakan tautan versi terbaru. Perhatikan bahwa nomor versi pada tautan unduhan di bawah adalah nomor versi terbaru.
Versi gratisnya melakukan ini:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
Versi komersial melakukan ini:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
Versi gratisnya melakukan ini:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
Versi komersial melakukan ini:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
pembaruan proxy menggunakan mirror untuk mengunduh, jika pembaruan Anda mengalami kesalahan dengan mirror, Anda dapat mengatur variabel lingkungan UPDATE_MIRROR=false
Windows: set UPDATE_MIRROR=false
lalu proxy update
Linux: export UPDATE_MIRROR=false
lalu proxy update
proxy update
Paksa pembaruan.
proxy update -f
Misalnya proxy
ditempatkan di c:gpproxy
.
c:
cd gp
proxy update
Paksa pembaruan.
c:
cd gp
proxy update -f
Proksi dilisensikan di bawah lisensi GPLv3.
Grup Telegram Resmi: goproxy
Penulis proyek ini menemukan bahwa sejumlah besar pengembang berdasarkan proyek untuk pengembangan sekunder atau menggunakan sejumlah besar kode inti proyek tanpa mematuhi perjanjian GPLv3, yang secara serius melanggar niat awal menggunakan perjanjian sumber terbuka GPLv3 dalam proyek ini. Mengingat situasi ini, proyek mengadopsi kode sumber menunda strategi rilis, sampai batas tertentu, untuk mengekang perilaku yang tidak menghormati sumber terbuka dan tidak menghormati hasil kerja proyek lain akan terus memperbarui iterasi dan terus merilis program biner platform lengkap, memberi Anda alat proxy yang kuat dan nyaman. Jika Anda memiliki kebutuhan bisnis yang disesuaikan, silakan kirim email ke [email protected]
klik saya mendapatkan instalasi Linux
klik saya mendapatkan instalasi MacOS
klik saya mendapatkan instalasi Windows
klik saya mendapatkan instalasi Windows
Panduan ini menjelaskan fungsi-fungsinya, yang semuanya disertakan dalam versi komersial; versi gratis dari parameter fungsional lanjutan seperti otentikasi tidak disertakan;
Jika Anda menemukan beberapa perintah saat menggunakan versi gratis untuk menjalankan beberapa perintah, prompt yang mirip dengan parameter xxx berikut tidak ada, yang menunjukkan bahwa parameter ini adalah fungsi dari versi komersial.
err: unknown long flag '-a'
Perbandingan antara fitur versi gratis dan versi komersial, pengoperasian terperinci tentang cara membeli dan menggunakan versi komersial, silakan klik di sini untuk melihatnya
Tutorial manual, sistem defaultnya adalah linux, programnya adalah proxy, semua operasi memerlukan hak akses root;
Jika Anda windows, silakan gunakan proxy.exe versi windows.
Tutorial selanjutnya akan memperkenalkan metode penggunaan melalui parameter baris perintah, atau Anda bisa mendapatkan parameter dengan membaca file konfigurasi.
Format spesifiknya adalah menentukan file konfigurasi dengan simbol @, misalnya: proxy @configfile.txt
Format dalam configfile.txt adalah baris pertama adalah nama subperintah, dan baris kedua dimulai dengan satu parameter per baris.
Format: parameter Parameter value
, langsung tulis parameter tanpa nilai parameter, contoh: --nolog
Misalnya isi configfile.txt adalah sebagai berikut:
Http
-t tcp
-p :33080
--forever
Secara default, informasi yang dihasilkan oleh log tidak menyertakan jumlah baris file. Dalam beberapa kasus, untuk memecahkan masalah program, masalahnya dapat ditemukan dengan cepat.
Anda dapat menggunakan parameter --debug untuk menampilkan jumlah baris kode dan milidetik.
Secara default, log ditampilkan langsung di konsol. Jika Anda ingin menyimpan ke file, Anda dapat menggunakan parameter --log.
Misalnya: --log proxy.log, log akan dikeluarkan ke proxy.log untuk memfasilitasi pemecahan masalah.
Mencatat INFO dan PERINGATAN secara default, Anda dapat mengatur --warn
menjadi keluaran peringatan logging saja.
Proses proxy http, tcp, udp berkomunikasi dengan upstream. Untuk keamanan, kami menggunakan komunikasi terenkripsi, tentu saja, kami dapat memilih untuk tidak mengenkripsi komunikasi. Semua komunikasi dan komunikasi upstream dalam tutorial ini dienkripsi, dan file sertifikat diperlukan.
Hasilkan sertifikat dan file kunci yang ditandatangani sendiri dengan perintah berikut.
proxy keygen -C proxy
File sertifikat proxy.crt dan file kunci proxy.key akan dibuat di bawah direktori program saat ini.
Gunakan perintah berikut untuk membuat sertifikat baru menggunakan sertifikat yang ditandatangani sendiri proxy.crt dan file kunci proxy.key: goproxy.crt dan goproxy.key.
proxy keygen -s -C proxy -c goproxy
File sertifikat goproxy.crt dan file kunci goproxy.key akan dibuat di bawah direktori program saat ini.
Secara default, nama domain di dalam sertifikat bersifat acak dan dapat ditentukan menggunakan parameter -n test.com
.
Lebih banyak penggunaan: proxy keygen --help
.
Setelah proksi dijalankan secara default, Anda tidak dapat menutup baris perintah jika Anda ingin proksi tetap berjalan.
Jika ingin menjalankan proxy di background, baris perintah bisa ditutup, cukup tambahkan parameter --daemon di akhir perintah.
Misalnya:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
Daemon menjalankan parameter --forever, misalnya: proxy http --forever
,
Proksi akan melakukan fork pada proses anak, dan kemudian memantau proses anak tersebut. Jika proses anak keluar secara tidak normal, mulai ulang proses anak setelah 5 detik.
Parameter ini disesuaikan dengan parameter berjalan di latar belakang --daemon dan parameter log --log, yang dapat menjamin bahwa proxy akan selalu dijalankan di latar belakang tanpa keluar secara tidak sengaja.
Dan Anda dapat melihat konten log keluaran dari proxy melalui file log.
Misalnya: proxy http -p ":9090" --forever --log proxy.log --daemon
Ketika VPS berada di belakang perangkat nat, IP antarmuka jaringan vps adalah IP intranet. Saat ini, Anda dapat menggunakan parameter -g untuk menambahkan ip jaringan eksternal vps untuk mencegah loop tak terbatas.
Misalkan ip jaringan eksternal vps Anda adalah 23.23.23.23. Perintah berikut menetapkan 23.23.23.23 dengan parameter -g.
proxy http -g "23.23.23.23"
Proksi HTTP(S)SOCKS5SPS mendukung penyeimbangan beban tingkat atas dan ketersediaan tinggi, dan beberapa parameter pengulangan P hulu dapat digunakan.
Kebijakan penyeimbangan beban mendukung lima jenis, yang dapat ditentukan dengan parameter --lb-method
:
Roundrobin digunakan secara bergantian
Leastconn menggunakan jumlah koneksi minimum
Waktu paling sedikit menggunakan waktu koneksi paling sedikit
Hash menggunakan upstream tetap berdasarkan alamat klien
Bobot Pilih upstream sesuai dengan bobot dan jumlah koneksi masing-masing upstream
mengingatkan:
Interval pemeriksaan penyeimbangan beban dapat diatur dengan --lb-retrytime
dalam milidetik.
Batas waktu koneksi penyeimbangan beban dapat diatur dengan --lb-timeout
dalam milidetik.
Jika kebijakan penyeimbangan beban adalah bobot, format -P adalah: 2.2.2.2: 3880?w=1, dengan 1 adalah bobot dan bilangan bulat lebih besar dari 0.
Jika kebijakan penyeimbangan beban adalah hash, defaultnya adalah memilih upstream berdasarkan alamat klien. Anda dapat memilih upstream dengan menggunakan alamat tujuan akses --lb-hashtarget
.
Proksi TCP tidak memiliki parameter --lb-hashtarget
.
Defaultnya adalah mode penyeimbangan beban + ketersediaan tinggi. Jika parameter --lb-onlyha
yang digunakan, hanya mode ketersediaan tinggi yang digunakan, maka node dipilih sesuai dengan strategi penyeimbangan beban, dan node ini akan digunakan hingga tidak ada lagi. hidup, maka node lain akan dipilih untuk digunakan, sehingga bersepeda.
Jika semua node tidak hidup, node acak akan dipilih untuk digunakan.
Agen Http (s), agen SPS, penetrasi intranet, agen tcp mendukung koneksi upstream melalui agen pihak ketiga perantara,
Parameternya adalah: --jumper, semua formatnya adalah sebagai berikut:
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 mewakili proxy http dan socks5 normal.
Https,socks5s mewakili agen http dan socks5 yang dilindungi oleh tls.
Itu adalah proxy http melalui TLS, kaus kaki melalui TLS.
Proksi kaus kaki/http(s)/sps mendukung daftar hitam putih nama domain.
Gunakan parameter --stop untuk menentukan file daftar hitam nama domain, maka koneksi akan terputus ketika pengguna menghubungkan domain tersebut dalam file.
Tentukan file whitelist nama domain dengan parameter --only, maka koneksi akan terputus ketika pengguna terhubung ke domain selain domain yang ada di file tersebut.
Jika --stop dan --only disetel, maka hanya --only yang akan berfungsi.
Format file daftar nama domain hitam putih adalah sebagai berikut:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
Keterangan:
*
dan ?
*
mewakili sejumlah karakter, ?
2. **.baidu.com
Cocok tidak peduli berapa level semua sufiksnya ..baidu.com`.
3. *.taobao.com
Akhiran yang cocok adalah nama domain tingkat ketiga dari .taobao.com
.
5. #
di awal komentar.
kaus kaki/http(s)/sps proxy semua mendukung daftar hitam port.
Gunakan parameter --stop-port
untuk menentukan file daftar hitam port, kemudian ketika pengguna menghubungkan ke port dalam file tersebut, koneksi dapat dibuat.
Format isi file daftar hitam port adalah sebagai berikut:
3306
22
Catatan:
#
adalah komentar.kaus kaki/http(s)/sps/tcp/udp/dns/ jembatan penetrasi intranet/tbridge penetrasi intranet, mendukung daftar hitam putih IP klien.
Gunakan parameter --ip-deny untuk menentukan file daftar hitam IP klien, maka koneksi akan terputus ketika IP pengguna ada di file ini.
Gunakan parameter --ip-allow untuk menentukan file daftar putih IP klien, kemudian koneksi akan terputus ketika IP pengguna tidak ada dalam file.
Jika --ip-deny dan --ip-allow disetel, maka hanya --ip-allow yang akan berfungsi.
Format file daftar hitam dan daftar putih IP klien adalah sebagai berikut:
192.168.1.1
192.168.*.*
192.168.1?.*
Keterangan:
*
dan ?
, *
mewakili sejumlah karakter, ?
mewakili karakter arbitrer. 2. #
di awal komentar.
Ada banyak tempat di berbagai fungsi proxy untuk mengatur file. Misalnya: --blocked Menentukan file daftar nama domain yang langsung menuju ke tingkat atas. Nilai parameter adalah jalur file.
Jika parameter mendukung protokol pemuatan file, jalur file tidak hanya berupa jalur file, tetapi juga:
a. Pengkodean base64 di awal "base64://" menunjukkan isi file di atas, misalnya: base64://ajfpoajsdfa=
b. "str://" di awal kelipatan bahasa Inggris yang dipisahkan koma, seperti: str://xxx, yyy
File proxy yang diblokir, langsung, berhenti, hanya, host, resolve.rules, rewriter.rules, ip.allow, ip.deny mendukung pemuatan protokol.
proksi kaus kaki5spshttp, parameter yang mengontrol jumlah koneksi klien secara bersamaan adalah: --max-conns-rate
, yang mengontrol jumlah maksimum koneksi klien per detik, default: 20, 0 tidak terbatas
"tcp / http / kaus kaki / sps" mendukung mendengarkan pada beberapa port dan port jangkauan. Dalam keadaan normal, cukup untuk mendengarkan pada satu port, tetapi jika Anda perlu mendengarkan pada beberapa port, parameter -p didukung adalah: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, lebih banyak lagi Bindingnya bisa dipisahkan dengan koma.
proxy http -t tcp -p "0.0.0.0:38080"
Dengarkan argumen port -p
dapat berupa:
-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
Gunakan port lokal 8090, dengan asumsi proksi HTTP upstream adalah 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Kita juga bisa menentukan file daftar hitam putih nama domain website, satu nama domain per baris, aturan pencocokannya adalah yang paling kanan, contoh: baidu.com, yang cocok adalah .baidu.com , nama domain daftar hitam langsung ke agen upstream, daftar putih Nama domain tidak masuk ke agen upstream.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Catatan:
proxy.crt
danproxy.key
yang digunakan oleh proksi sekunder harus konsisten dengan proksi utama.
Proksi HTTP tingkat 1 (VPS, IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proksi HTTP sekunder (Linux lokal)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Kemudian akses port lokal 8080 adalah dengan mengakses port proxy 38080 di VPS.
Proksi HTTP sekunder (jendela lokal)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Kemudian atur sistem windows Anda, proxy yang perlu melalui program Internet proxy adalah mode http, alamatnya: 127.0.0.1, portnya: 8080, program dapat mengakses Internet melalui vps melalui saluran terenkripsi.
Proksi HTTP tingkat 1 VPS_01, IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
Proksi HTTP sekunder 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
Proksi HTTP level 3 (lokal)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Kemudian mengakses port lokal 8080 adalah dengan mengakses port proxy 38080 pada proxy HTTP primer.
Untuk protokol HTTP proxy, kita dapat melakukan otentikasi dasar. Nama pengguna dan kata sandi yang diautentikasi dapat ditentukan pada baris perintah.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Untuk banyak pengguna, ulangi parameter -a.
Itu juga dapat ditempatkan dalam file dalam format "nama pengguna: kata sandi" dan kemudian ditentukan dengan -F.
proxy http -t tcp -p ":33080" -F auth-file.txt
Selain itu, proksi http(s) juga mengintegrasikan otentikasi API HTTP eksternal. Kita dapat menentukan alamat antarmuka url http dengan parameter --auth-url.
Kemudian ketika ada koneksi pengguna, proxy akan meminta url dalam mode GET, dan membawa empat parameter berikut. Jika kode status HTTP 204 dikembalikan, otentikasi berhasil.
Dalam kasus lain, otentikasi gagal.
Misalnya:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Saat pengguna terhubung, proxy akan meminta url ("http://test.com/auth.php") dalam mode GET.
Ambil lima parameter: pengguna, pass, ip, local_ip, target:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
Pengguna: nama pengguna
Lulus: kata sandi
IP: IP Pengguna, misalnya: 192.168.1.200
Local_ip : IP server yang diakses oleh pengguna, contoh: 3.3.3.3
Target: URL yang diakses oleh pengguna, misalnya: http://demo.com:80/1.html atau https://www.baidu.com:80
Jika tidak ada parameter -a atau -F atau --auth-url, otentikasi Dasar dimatikan.
Secara default, proxy akan dengan cerdas menentukan apakah nama domain situs web tidak dapat diakses. Jika tidak dapat diakses, maka akan menuju ke proxy HTTP tingkat atas. Dengan --always, semua lalu lintas proxy HTTP dapat dipaksa untuk menuju ke HTTP atas proksi.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Deskripsi: Prinsip transfer ssh adalah menggunakan fungsi penerusan ssh, yaitu setelah Anda terhubung ke ssh, Anda dapat mengakses alamat target melalui proxy ssh.
Misalkan ada: vps
Port proksi HTTP(S) lokal 28080, mengeksekusi:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Port proksi HTTP(S) lokal 28080, mengeksekusi:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Protokol KCP memerlukan parameter --kcp-key untuk mengatur kata sandi untuk mengenkripsi dan mendekripsi data.
Proksi HTTP tingkat 1 (VPS, IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
Proksi HTTP sekunder (Linux lokal)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Kemudian akses port lokal 8080 adalah mengakses port proxy 38080 di VPS, data dikirimkan melalui protokol kcp, perlu diketahui bahwa kcp adalah protokol udp, sehingga firewall perlu melepaskan protokol udp 380p.
Proksi tidak hanya mendukung pengaturan proksi di perangkat lunak lain, tetapi juga menyediakan layanan proksi untuk perangkat lunak lain. Ini juga mendukung penguraian langsung nama domain situs web yang diminta ke ip mendengarkan proksi, dan kemudian proksi mendengarkan port 80 dan 443, kemudian proxy akan secara otomatis Anda mem-proxy akses ke situs web HTTP(S) yang perlu Anda akses.
Cara menggunakan:
Pada mesin "proksi tingkat terakhir", karena proksi harus disamarkan sebagai semua situs web, port HTTP default situs web adalah 80, HTTPS adalah 443, dan proksi dapat mendengarkan port 80 dan 443. Parameter -p kelipatan alamat dengan segmentasi koma.
proxy http -t tcp -p :80,:443
Perintah ini memulai agen proksi pada mesin, dan mendengarkan port 80 dan 443 secara bersamaan. Perintah ini dapat digunakan sebagai proksi normal, atau secara langsung menyelesaikan nama domain yang perlu diproksi ke IP mesin ini.
Jika ada upstream agent maka simak tutorial diatas untuk setting upstreamnya, kegunaannya sama persis.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
Catatan:
Hasil resolusi DNS dari server tempat proxy berada tidak dapat dipengaruhi oleh resolusi khusus, jika tidak maka akan menjadi loop tak terbatas. Proksi proxy harus menentukan parameter --dns-address 8.8.8.8
.
Mode ini perlu memiliki landasan jaringan tertentu. Jika konsep terkait belum dipahami, silakan cari sendiri.
Dengan asumsi proxy sekarang berjalan di router, perintah startupnya adalah sebagai berikut:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
Kemudian tambahkan aturan iptables, berikut aturan referensinya:
# 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
Parameter --dns-address dan --dns-ttl, digunakan untuk menentukan dns (--dns-address) yang digunakan oleh proxy untuk mengakses nama domain.
Dan hasil analisa waktu cache (--dns-ttl) detik, untuk menghindari gangguan dns sistem pada proxy, selain itu fungsi cache juga dapat mengurangi waktu resolusi dns untuk meningkatkan kecepatan akses.
Misalnya:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
--dns-address "1.1.1.1:53,8.8.8.8:53"
beberapa alamat dns, penyeimbangan beban, dipisahkan dengan koma.
Anda juga dapat menggunakan parameter --dns-interface
untuk menentukan bandwidth yang digunakan untuk resolusi dns, misalnya: --dns-interface eth0
, resolusi dns akan menggunakan bandwidth eth0, parameter ini harus disetel ke --dns-address
untuk menjadi efektif.
Proksi http(s) proxy dapat mengenkripsi data tcp melalui enkripsi standar tls dan protokol kcp di atas tcp, selain mendukung penyesuaian setelah tls dan kcp.
Enkripsi, artinya enkripsi khusus dan tls|kcp dapat digunakan dalam kombinasi. Penggunaan internal enkripsi AES256, Anda hanya perlu menentukan kata sandi saat menggunakannya.
Enkripsi dibagi menjadi dua bagian, satu adalah apakah enkripsi dan dekripsi lokal (-z), dan yang lainnya adalah apakah transmisi dengan upstream (-Z) dienkripsi atau didekripsi.
Enkripsi khusus mengharuskan kedua ujungnya menjadi proxy. Dua level dan tiga level berikut digunakan sebagai contoh:
Contoh sekunder
Jalankan pada vps level 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Eksekusi sekunder lokal:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui transmisi terenkripsi dengan upstream.
Contoh tiga tingkat
Jalankan pada vps level 1 (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
Jalankan pada vps sekunder (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
Eksekusi tiga tingkat lokal:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui transmisi terenkripsi dengan upstream.
Proksi http(s) dapat mengenkripsi data tcp melalui enkripsi standar tls dan protokol kcp di atas tcp, dan juga dapat mengompresi data sebelum enkripsi khusus.
Artinya, kompresi dan enkripsi khusus dan tls|kcp dapat digunakan dalam kombinasi. Kompresi dibagi menjadi dua bagian, satu bagian adalah transmisi kompresi lokal (-m).
Sebagian dikompresi dengan transmisi upstream (-M).
Kompresi mengharuskan kedua belah pihak menjadi proxy. Kompresi juga melindungi data (terenkripsi) sampai batas tertentu. Berikut ini penggunaan Level 2 dan Level 3 sebagai contoh:
Contoh sekunder
Jalankan pada vps level 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Eksekusi sekunder lokal:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Dengan cara ini, ketika website diakses melalui agen lokal 8080, website target diakses melalui kompresi dengan upstream.
Contoh tiga tingkat
Jalankan pada vps level 1 (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
Jalankan pada vps sekunder (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Eksekusi tiga tingkat lokal:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Dengan cara ini, ketika website diakses melalui agen lokal 8080, website target diakses melalui kompresi dengan upstream.
Proksi HTTP(S) mendukung penyeimbangan beban tingkat atas, dan beberapa parameter pengulangan P hulu dapat digunakan.
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
Batas kecepatannya adalah 100K, yang dapat ditentukan dengan parameter -l
, misalnya: 100K 2000K 1M 0 berarti tidak ada batasan.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
Parameter --bind-listen
dapat digunakan untuk membuka koneksi klien dengan IP portal, dan menggunakan IP portal sebagai IP keluar untuk mengakses situs web target. Jika IP yang salah terikat, proxy tidak akan berfungsi Intinya, proxy akan mencoba mengikat target tanpa mengikat IP, dan log akan meminta.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
Meskipun parameter --bind-listen
di atas dapat menentukan IP keluar, entry IP
dan outgoing IP
tidak dapat direferensikan secara artifisial. Jika Anda ingin IP masuk dan IP keluar berbeda, Anda dapat menggunakan --bind-ip
parameter, format: IP:port
, misalnya: 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
Parameter --bind-ip
dapat diulang.
Misalnya mesin ini memiliki IP 5.5.5.5
, 6.6.6.6
, dan memonitor dua port 8888
dan 7777
, perintahnya adalah sebagai berikut:
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
Kemudian port akses klien 7777
, IP keluar adalah 5.5.5.5
, port akses 8888
, IP keluar adalah 6.6.6.6
, jika --bind-ip
dan --bind- are set at the same time listen
, --bind-ip
memiliki prioritas lebih tinggi. Selain itu, bagian IP
dari parameter --bind-ip
mendukung penentuan network interface name
, wildcards
, dan lebih dari satu. ditentukan. Penjelasan rincinya adalah sebagai berikut:
--bind-ip eth0:7777
, lalu klien mengakses port 7777
, dan IP jalan keluar adalah IP antarmuka jaringan eth0.--bind-ip eth0.*:7777
, lalu klien mengakses port 7777
, dan IP jalan keluar dipilih secara acak dari IP antarmuka jaringan yang dimulai dengan eth0.
--bind-ip 192.168.?.*:777
, lalu klien mengakses port 7777
, IP keluar adalah semua IP mesin, dan cocok dengan IP 192.168.?.*
A yang dipilih secara acak.-bind-ip pppoe??,192.168.?.*:7777
, dan kemudian klien mengakses port 7777
, IP keluar adalah nama antarmuka jaringan mesin yang cocok dengan pppoe??
Ini dipilih secara acak dari IP yang cocok dengan 192.168.?.*
di IP mesin.*
mewakili 0 untuk karakter apa pun, ?
Mewakili 1 karakter.--bind-refresh
untuk menentukan interval untuk menyegarkan informasi antarmuka jaringan lokal, defaultnya adalah 5
, satuannya adalah detik.Secara default, parameter -C, -K adalah jalur ke sertifikat crt dan file kunci.
Jika ini adalah awal dari base64://, maka data terakhir dianggap dikodekan base64 dan akan digunakan setelah decoding.
Pengaturan mode cerdas, dapat menjadi salah satu dari cerdas|langsung|orang tua.
Standarnya adalah: orang tua.
Arti dari masing-masing nilai adalah sebagai berikut:
--intelligent=direct
, target yang diblokir tidak terhubung langsung.
--intelligent=parent
, target yang tidak langsung menuju ke level yang lebih tinggi.
--intelligent=intelligent
, diblokir dan langsung tidak memiliki target, dengan cerdas menentukan apakah akan menggunakan target akses upstream.
proxy help http
Eksekusi lokal:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
Kemudian akses port lokal 33080 adalah dengan mengakses port 22 192.168.22.33.
Parameter -p
mendukung:
-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
Jika jumlah port pendengaran lokal lebih besar dari 1, port atas yang sesuai dengan port lokal akan dihubungkan, dan port di -P
akan diabaikan.
Jika Anda memerlukan koneksi dari semua port, sambungkan ke port yang ditentukan atas, Anda dapat menambahkan parameter --lock-port
.
seperti:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
Kemudian koneksi port 33080
-P
terhubung ke port 33080
192.168.22.33, dan port lainnya 0
.
Jika Anda ingin menghubungkan port 33080
, 33081
, dll. Ke 22
port 192.168.22.33, Anda dapat menambahkan parameter --lock-port
.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) dieksekusi:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
Eksekusi lokal:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
Kemudian akses port lokal 23080 adalah untuk mengakses port 8020 dari 22.22.22.33.
Proxy TCP primer VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
Proxy TCP Sekunder VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Level 3 TCP Proxy (Lokal)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
Kemudian akses port lokal 8080 adalah untuk mengakses port 8080 dari 66.66.66.66 melalui terowongan TCP terenkripsi.
VPS (IP: 22.22.2.33) dieksekusi:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
Eksekusi lokal:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Kemudian akses port lokal 23080 adalah untuk mengakses port 8080 dari 22.22.22.33 melalui terowongan TCP terenkripsi.
Proxy TCP primer VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T tcp -P "66.66.66.66:8080" -C proxy.crt -K proxy.key
Proxy TCP Sekunder 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
Level 3 TCP Proxy (Lokal)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Kemudian akses port lokal 8080 adalah untuk mengakses port 8080 dari 66.66.66.66 melalui terowongan TCP terenkripsi.
Terkadang jaringan tempat proxy tidak dapat secara langsung mengakses jaringan eksternal
Parameter -j dapat membantu Anda untuk menghubungkan proxy ke peer -p melalui proxy https atau socks5 saat memetakan port TCP proxy, memetakan port eksternal ke lokal.
Format parameter -j adalah sebagai berikut:
Menulis proxy https:
Proxy membutuhkan otentikasi, nama pengguna: nama pengguna kata sandi: kata sandi
Https: // nama pengguna: kata sandi@host: port
Agen tidak memerlukan otentikasi
Https: // host: port
Socks5 Proxy Writing:
Proxy membutuhkan otentikasi, nama pengguna: nama pengguna kata sandi: kata sandi
Socks5: // Nama pengguna: kata sandi@host: port
Agen tidak memerlukan otentikasi
Socks5: // Host: Port
Host: IP atau nama domain proxy
Port: port proxy
Ketika proxy TCP adalah tipe superior (parameter: -t) adalah TCP, ia mendukung IP keluar --bind-listen
ditentukan. Sebagai IP yang keluar untuk mengakses situs web target.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
Meskipun parameter --bind-listen
ada di atas dapat menentukan --bind-ip
yang keluar, entry IP
dan outgoing IP
tidak dapat dirujuk secara artifisial. Parameter, Format: IP:port
, misalnya: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. dapat mengulangi identifikasi parameter --bind-ip
.
Misalnya, mesin ini memiliki IP 5.5.5.5
, 6.6.6.6
, dan memantau dua port 8888
dan 7777
, perintah tersebut adalah sebagai berikut:
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
Kemudian port akses klien 7777
, IP keluar adalah 5.5.5.5
, port akses 8888
, IP yang keluar adalah 6.6.6.6
, jika keduanya --bind-ip
dan --bind- are set at the same time listen
, --bind-ip
memiliki prioritas yang lebih tinggi.
Selain itu, bagian IP
dari pendukung parameter --bind-ip
yang menentukan network interface name
, wildcards
, dan lebih dari satu dapat ditentukan.
--bind-ip eth0:7777
, maka klien mengakses port 7777
, dan IP egress adalah IP dari antarmuka jaringan ETH0.--bind-ip eth0.*:7777
, maka klien mengakses port 7777
, dan IP egress adalah salah satu antarmuka jaringan yang dipilih secara acak IP yang dimulai dengan eth0.
--bind-ip 192.168.?.*:7777
, kemudian klien mengakses port 7777
, dan IP yang keluar adalah semua IP mesin, mencocokkan IP 192.168.?.*
a yang dipilih secara acak.--bind-ip pppoe??,192.168.?.*:7777
, maka klien mengakses port 7777
, keluar IP adalah nama antarmuka jaringan mesin 192.168.?.*
pppoe??
*
mewakili 0 untuk sejumlah karakter, ?
mewakili 1 karakter.--bind-refresh
untuk menentukan interval untuk menyegarkan informasi antarmuka jaringan lokal, standarnya adalah 5
, unit ini kedua.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
dapat membatasi jumlah maksimum koneksi per port. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
Koneksi Parameter --rate-limit
dapat membatasi laju setiap koneksi TCP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
Klien Total Parameter --ip-rate
Batasi Tingkat Total IP Klien. 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
Total Parameter --port-rate
Batas Tingkat Total Setiap Port Layanan. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
dan ( --ip-rate
atau --port-rate
) dapat digunakan bersama-sama. --c
Mengontrol --C
akan mengompres transmisi antara lokal dan klien, default false;
Contoh:
VPS (IP: 22.22.22.33) Implementasi: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
Eksekusi lokal:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
Kemudian akses port UDP: 5353 lokal adalah untuk mengakses 8.8.8.8 UDP: 53 Port.
Parameter -p
mendukung:
-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
Jika jumlah port mendengarkan lokal lebih besar dari 1, port atas yang sesuai yang sesuai dengan port lokal akan terhubung, dan port di -P
akan diabaikan.
Jika Anda memerlukan koneksi dari semua port, sambungkan ke port yang ditentukan atas, Anda dapat menambahkan parameter --lock-port
.
seperti:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
Kemudian koneksi port 33080
-P
terhubung ke port 33080
192.168.22.33, dan port lainnya 0
.
Jika Anda ingin menghubungkan port 33080
, 33081
, dll. Ke port 2222
192.168.22.33, Anda dapat menambahkan parameter- --lock-port
.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) dieksekusi:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
Eksekusi lokal:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
Kemudian akses port UDP: 5353 lokal adalah melalui terowongan TCP, melalui VPS Access 8.8.8.8 UDP: 53 Port.
Proxy TCP primer VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
Proxy TCP Sekunder VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
Level 3 TCP Proxy (Lokal)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
Kemudian akses ke port 5353 lokal adalah melalui terowongan TCP, melalui VPS untuk mengakses port 8.8.8.8.
VPS (IP: 22.22.2.33) dieksekusi:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Eksekusi lokal:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
Kemudian akses port UDP: 5353 lokal adalah melalui terowongan TCP terenkripsi, melalui Access VPS 8.8.8.8 UDP: 53 Port.
Proxy TCP primer VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
Proxy TCP Sekunder 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
Level 3 TCP Proxy (Lokal)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Kemudian akses port 5353 lokal adalah untuk mengakses 8.8.8.8 port 53 melalui VPS_01 melalui terowongan TCP terenkripsi.
Ketika proxy hulu UDP (parameter: -t) adalah UDP, ini mendukung IP keluar --bind-listen
ditentukan. IP untuk mengakses target.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
Penetrasi intranet, dibagi menjadi dua versi, "versi multi-link" dan "versi multiplexed", umumnya seperti layanan web, layanan ini bukan koneksi jangka panjang, disarankan untuk menggunakan "versi multi-link", jika itu adalah untuk menjaga lama koneksi waktu menyarankan menggunakan "versi multiplexed."
Tutorial berikut menggunakan "versi multipleks" sebagai contoh untuk menggambarkan cara menggunakannya.
Penetrasi intranet terdiri dari tiga bagian: klien, server, dan jembatan;
Latar belakang:
Tuntutan:
Di rumah, Anda dapat mengakses port 80 dari mesin perusahaan dengan mengakses port 28080 dari VPS.
Tangga:
Jalankan pada VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Menyelesaikan
Latar belakang:
Tuntutan:
Isi alamat di konfigurasi antarmuka panggilan balik halaman web dari akun pengembangan WeChat: http://22.22.22.22/calback.php
Maka Anda dapat mengakses calback.php di bawah port 80 notebook.
Misalnya: wx-dev.xxx.com diselesaikan menjadi 22.22.22.22, dan kemudian di buku catatan Anda sendiri Nginx
Konfigurasikan nama domain wx-dev.xxx.com ke direktori tertentu.
Tangga:
Jalankan pada VPS untuk memastikan bahwa port 80 dari VPS tidak ditempati oleh program lain.
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
Jalankan di laptop Anda
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Menyelesaikan
Latar belakang:
Tuntutan:
Di rumah, Anda dapat menggunakan mesin perusahaan untuk melakukan layanan resolusi nama domain dengan menetapkan DNS lokal ke 22.22.22.22.
Tangga:
Jalankan pada VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server --udp -r ":53@:53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Menyelesaikan
Latar belakang:
Tuntutan:
Agar aman, saya tidak ingin memiliki akses ke mesin perusahaan A di VPS, dan saya dapat mengakses port 28080 mesin di rumah.
Akses ke Port 80 dari Mesin Perusahaan A melalui terowongan terenkripsi.
Tangga:
Jalankan pada VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
Mengeksekusi pada mesin perusahaan a
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Jalankan di komputer rumah Anda
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Menyelesaikan
Tip:
Jika beberapa klien terhubung ke jembatan yang sama secara bersamaan, Anda perlu menentukan kunci yang berbeda, yang dapat diatur oleh parameter --k, dan --k dapat berupa string unik.
Jadilah satu -satunya di jembatan yang sama.
Ketika server terhubung ke jembatan, jika ada beberapa klien yang menghubungkan ke jembatan yang sama secara bersamaan, Anda perlu menggunakan parameter --k untuk memilih klien.
Mengekspos beberapa port dengan mengulangi parameter -r.
Latar belakang:
Tuntutan:
Di rumah, Anda dapat mengakses port 80 dari mesin perusahaan dengan mengakses port 28080 dari VPS.
Di rumah, saya dapat mengakses 21 port mesin perusahaan dengan mengakses port 29090 dari VPS.
Tangga:
Jalankan pada VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -r ":29090@:21" --k test -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client --k test -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
Menyelesaikan
Format lengkap -r adalah: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1. Protokol Protokol: TCP atau UDP.
Misalnya: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
Jika parameter --udp ditentukan, protokol default ke UDP, maka: -r ":8080@:80"
default ke UDP;
Jika parameter --udp tidak ditentukan, protokol default ke TCP, maka: -r ":8080@:80"
default ke TCP;
4.7.2.
Sebagai contoh: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
Jika parameter --k ditentukan, seperti -test, maka: -r ":8080@:80"
client_key default untuk diuji;
Jika parameter --K tidak ditentukan, maka: -r ":8080@:80"
client_key default ke default;
0.0.0.0
127.0.0.1
Terkadang jaringan tempat server atau klien tidak dapat secara langsung mengakses jaringan eksternal
Parameter -j dapat membantu Anda menghubungkan server atau klien ke jembatan melalui HTTPS atau SOCKS5.
Format parameter -j adalah sebagai berikut:
Menulis proxy https:
Proxy membutuhkan otentikasi, nama pengguna: nama pengguna kata sandi: kata sandi
Https: // nama pengguna: kata sandi@host: port
Agen tidak memerlukan otentikasi
Https: // host: port
Socks5 Proxy Writing:
Proxy membutuhkan otentikasi, nama pengguna: nama pengguna kata sandi: kata sandi
Socks5: // Nama pengguna: kata sandi@host: port
Agen tidak memerlukan otentikasi
Socks5: // Host: Port
Host: IP atau nama domain proxy
Port: port proxy
Biasanya klien permintaan HTTP akan menggunakan IP dan port server untuk mengatur bidang host, tetapi tidak sama dengan host aktual backend yang diharapkan, yang menyebabkan TCP dilewati. Namun, backend bergantung pada bidang host untuk menemukan pada Host virtual --http-host
tidak --http-host
berhasil. parameter --http-host
, Dua header akan X-Forwarded-For
ke header dari setiap permintaan X-Real-IP
.
Format parameter server
-http -host adalah sebagai berikut:
--http-host www.test.com:80@2200
, jika server mendengarkan beberapa port, cukup ulangi parameter --http-host
untuk mengatur host untuk setiap port.
Contoh:
Misalnya, klien lokal Nginx, 127.0.0.1:80 menyediakan layanan web, yang terikat pada nama domain local.com
.
Maka parameter startup server bisa sebagai berikut:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
Penjelasan:
-r :[email protected]:80
dan --http-host local.com:80@2500
Port 2500 adalah port yang didengarkan server secara lokal.
Ketika protokol HTTP digunakan untuk meminta port IP: 2500 dari server, bidang host header HTTP akan diatur ke local.com
.
Jika Anda memulai server docking peer secara terpisah, itu adalah panel kontrol proxy-admin.
Kemudian mulailah server dan tambahkan parameter --sver-id = ID aturan pemetaan untuk menghitung lalu lintas.
Dukungan Penetrasi Intranet Saat kondisi server dan jaringan klien dipenuhi, server dan klien terhubung langsung melalui P2P.
Saat memulai jembatan, server, klien, tambahkan parameter --p2p
.
Jika lubang P2P gagal antara server dan klien, data transfer jembatan secara otomatis diaktifkan.
Jembatan penetrasi intranet dapat mengatur daftar putih kunci klien.
A.
b.
c.
Standarnya kosong, memungkinkan semua kunci.
Penilaian Jenis Senat, mudah untuk memeriksa apakah jaringan mendukung P2P, Anda dapat mengeksekusi: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
mengingatkan:
Socks5 Proxy, mendukung Connect, UDP Protocol, tidak mendukung ikatan, mendukung nama pengguna dan kata sandi.
*** Fungsi UDP dari Socks5 dimatikan secara default, --udp-port 0
dapat dihidupkan oleh --udp
. --udp-port 0
, 0
mewakili port gratis dipilih secara acak, atau Anda dapat menentukan port tertentu secara manual.
proxy socks -t tcp -p "0.0.0.0:38080"
Dengarkan Argumen Port -p
bisa:
-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
Gunakan port lokal 8090, dengan asumsi proxy Socks5 hulu adalah 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
Kami juga dapat menentukan file daftar hitam dan putih dari nama domain situs web, satu nama domain dan satu nama domain, aturan pencocokan adalah yang paling cocok, misalnya: baidu.com, kecocokannya Nama domain Nama domain langsung ke agen hulu, putih nama domain daftar tidak masuk ke agen hulu;
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
Level 1 Socks Proxy (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
Secondary Socks Proxy (Lokal Linux)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Kemudian akses port lokal 8080 adalah untuk mengakses port proxy 38080 pada VPS.
Proxy Socks Secondary (Windows Lokal)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Kemudian atur sistem WindOS Anda, proxy yang perlu melalui program internet proxy adalah mode Socks5, alamatnya adalah: 127.0.0.1, port adalah: 8080, program dapat mengakses internet melalui VPS melalui saluran terenkripsi.
Level 1 Socks Proxy VPS_01, IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
SCHOKS SECORDARY 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
Level 3 Socks Proxy (Lokal)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
Kemudian mengakses port 8080 lokal adalah untuk mengakses proxy port 38080 pada proxy SOCKS tingkat pertama.
Secara default, proxy akan secara cerdas menentukan apakah nama domain situs web tidak dapat diakses. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
Deskripsi: Prinsip transfer SSH adalah menggunakan fungsi penerusan SSH, yaitu, setelah Anda terhubung ke SSH, Anda dapat mengakses alamat target melalui proxy SSH.
Misalkan ada: VPS
Port proxy Socks5 lokal 28080, eksekusi:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
Port proxy Socks5 lokal 28080, eksekusi:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
Kemudian akses port lokal 28080 adalah untuk mengakses alamat target melalui VPS.
Untuk protokol proxy Socks5, kami dapat melakukan nama pengguna dan kata sandi.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
Untuk banyak pengguna, ulangi parameter -a.
Ini juga dapat ditempatkan dalam file dalam format "Nama Pengguna: Kata Sandi" dan kemudian ditentukan dengan -f.
proxy socks -t tcp -p ":33080" -F auth-file.txt
Selain itu, agen Socks5 juga mengintegrasikan otentikasi API HTTP eksternal.
Kemudian ketika ada koneksi pengguna, proxy akan meminta URL dalam mode GET, dengan tiga parameter berikut.
Dalam kasus lain, otentikasi gagal.
Misalnya:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
Ketika pengguna terhubung, proxy akan meminta URL ("http://test.com/auth.php") dalam mode GET.
Bawalah empat parameter: pengguna, pass, ip, local_ip:
Http://test.com/Auth.php?user= YoB.User}&pass={pass}&ip={ip}&local_ip={local_ip}
Pengguna: Nama pengguna
Lulus: Kata sandi
IP: IP pengguna, misalnya: 192.168.1.200
Local_ip: IP server yang diakses oleh pengguna, misalnya: 3.3.3.3
Jika tidak ada parameter -a atau -f atau --auth -url, otentikasi dimatikan.
Protokol KCP memerlukan parameter --KP-key untuk mengatur kata sandi untuk enkripsi dan mendekripsi data.
Proxy HTTP Level 1 (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
Proxy HTTP Sekunder (Linux Lokal)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
Kemudian akses port lokal 8080 adalah untuk mengakses port proxy 38080 pada VPS, data ditransmisikan melalui protokol KCP.
--DNS-ADDRESS dan --DNS-TTL Parameter, digunakan untuk menentukan DNS (--DNS-ADDRESS) yang digunakan oleh proxy untuk mengakses nama domain.
Dan detik waktu cache hasil analisis (--DNS-TTL), untuk menghindari gangguan sistem DNS ke proxy, selain fungsi cache juga dapat mengurangi waktu resolusi DNS untuk meningkatkan kecepatan akses.
Misalnya:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
Anda juga dapat menggunakan parameter --dns-interface
untuk menentukan bandwidth yang digunakan untuk resolusi DNS, misalnya: --dns-interface eth0
, resolusi DNS akan menggunakan bandwidth eth0, parameter ini harus diatur ke --dns-address
untuk menjadi efektif.
Proxy Socks Proxy dapat mengenkripsi data TCP melalui enkripsi standar TLS dan protokol KCP di atas TCP. Enkripsi AES256, Anda hanya perlu mendefinisikan kata sandi saat Anda menggunakannya.
Enkripsi dibagi menjadi dua bagian, satu adalah apakah enkripsi dan dekripsi lokal (-z), dan yang lainnya adalah apakah transmisi dengan hulu (-z) dienkripsi atau didekripsi.
Enkripsi khusus mengharuskan kedua belah pihak menjadi proxy.
Dua level berikut, tiga level misalnya:
Contoh sekunder
Jalankan pada level 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Eksekusi sekunder lokal:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui transmisi terenkripsi dengan hulu.
Instance tiga tingkat
Jalankan pada level 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
Jalankan pada VPS sekunder (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
Eksekusi tiga tingkat lokal:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui transmisi terenkripsi dengan hulu.
Proxy Socks Proxy dapat mengenkripsi data TCP melalui enkripsi khusus dan enkripsi standar TLS dan protokol KCP di atas TCP.
Kompres data, yaitu fungsi kompresi dan enkripsi khusus dan TLS | KCP dapat digunakan dalam kombinasi, dan kompresi dibagi menjadi dua bagian.
Sebagian darinya adalah transmisi kompresi lokal (-m), dan sebagian adalah apakah transmisi dengan hulu (-m) dikompresi.
Kompresi mengharuskan kedua belah pihak menjadi proxy, dan kompresi juga melindungi (enkripsi) data sampai batas tertentu.
Dua level berikut, tiga level misalnya:
Contoh sekunder
Jalankan pada level 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Eksekusi sekunder lokal:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui kompresi dengan hulu.
Instance tiga tingkat
Jalankan pada level 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
Jalankan pada VPS sekunder (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Eksekusi tiga tingkat lokal:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
Dengan cara ini, ketika situs web diakses melalui agen lokal 8080, situs web target diakses melalui kompresi dengan hulu.
Proxy Socks mendukung penyeimbangan beban tingkat atas, dan beberapa parameter pengulangan-P hulu dapat digunakan.
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
Batas kecepatan adalah 100k, yang dapat ditentukan oleh parameter -l
, misalnya: 100k 2000k 1m.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
Parameter --bind-listen
dapat digunakan untuk membuka koneksi klien dengan IP portal, dan menggunakan IP portal sebagai IP keluar untuk mengakses situs web target. ip ingress.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
Meskipun parameter --bind-listen
di atas dapat menentukan --bind-ip
yang keluar, entry IP
dan outgoing IP
tidak dapat diganggu oleh manusia. Parameter, Format: IP:port
, misalnya: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. Ulangi parameter- --bind-ip
.
Misalnya, mesin memiliki IP 5.5.5.5
, 6.6.6.6
, dan memantau dua port 8888
dan 7777
, perintahnya adalah sebagai berikut:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Kemudian port akses klien 7777
, IP keluar adalah 5.5.5.5
, port akses 8888
, IP yang keluar adalah 6.6.6.6
, jika keduanya --bind-ip
dan --bind- are set at the same time listen
, --bind-ip
memiliki prioritas yang lebih tinggi.
Selain itu, bagian IP
dari parameter --bind-ip
mendukung yang menentukan network interface name
, wildcards
, dan lebih dari satu.
--bind-ip eth0:7777
, maka klien mengakses port 7777
, dan IP egress adalah IP dari antarmuka jaringan ETH0.--bind-ip eth0.*:7777
, maka klien mengakses port 7777
, dan IP egress adalah salah satu antarmuka jaringan yang dipilih secara acak IP yang dimulai dengan eth0.
--bind-ip 192.168.?.*:7777
, kemudian klien mengakses port 7777
, dan IP yang keluar adalah semua IP mesin, mencocokkan IP 192.168.?.*
a yang dipilih secara acak.--bind-ip pppoe??,192.168.?.*:7777
, maka klien mengakses port 7777
, keluar IP adalah nama antarmuka jaringan mesin 192.168.?.*
pppoe??
*
mewakili 0 untuk sejumlah karakter, ?
mewakili 1 karakter.--bind-refresh
untuk menentukan interval untuk menyegarkan informasi antarmuka jaringan lokal, standarnya adalah 5
, unit ini kedua.Socks5 mendukung otentikasi cascading, dan -a dapat mengatur informasi otentikasi hulu.
Hulu:
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
Secara default, parameter -c, -k adalah jalur ke sertifikat CRT dan file kunci.
Jika ini adalah awal dari base64: //, maka data yang terakhir dianggap sebagai base64 yang dikodekan dan akan digunakan setelah decoding.
Pengaturan Mode Cerdas, bisa menjadi salah satu dari Intelligent | Direct | Parent.
Standarnya adalah: induk.
Arti dari setiap nilai adalah sebagai berikut:
--intelligent=direct
, target dalam yang diblokir tidak terhubung langsung.
--intelligent=parent
, target yang tidak ada di level langsung ke tingkat yang lebih tinggi.
--intelligent=intelligent
, diblokir dan langsung tidak memiliki target, secara cerdas menentukan apakah akan menggunakan target akses hulu.
Secara default, nomor port fungsi UDP Socks5, proxy dipasang dalam permintaan rfc1982 draft
, yang secara acak ditentukan selama proses jabat tangan protokol dan tidak perlu ditentukan sebelumnya.
Namun, dalam beberapa kasus, Anda perlu memperbaiki --udp-port port number
fungsi UDP.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
Secara default, fungsionalitas UDP dari proxy Socks5 dalam proxy --udp-compat
sesuai dengan spesifikasi Socks5 RFC 1928. --udp-compat
Parameter dapat ditambahkan untuk mengaktifkan mode kompatibilitas untuk fungsionalitas UDP Socks5.
Selain itu, parameter -udp-gc
dapat digunakan untuk mengatur waktu idle maksimum untuk UDP. Ketika ambang waktu ini terlampaui, koneksi UDP akan dilepaskan.
proxy help socks
Konversi Proxy Protocol menggunakan Sub -perintah SPS Masukkan proxy http (s) yang ada atau proxy socks5 atau proxy ss dikonversi ke port yang mendukung proxy http (s) dan socks5 dan ss, dan proxy http (s) mendukung proxy maju dan proxy balik terbalik, http (SNI), proxy Socks5 yang dikonversi, fungsi UDP masih didukung ketika level atas Socks5 atau SS; Koneksi rantai didukung, yaitu, beberapa level simpul SPS dapat didukung.
Metode enkripsi yang didukung oleh fungsi ss
adalah: 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-etf, chacha20-etf-poly1305, des-cfb, rc4-md5, rc4-md5-6, salsa20, xchacha20
Dengarkan Argumen Port -p
bisa:
-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
Fungsi UDP SS dimatikan secara default dan dapat dihidupkan --udp
--ssudp
. 0
dapat ditingkatkan dengan memperbaiki --udp-port 0
.
Misalkan sudah ada proxy HTTP (S) yang normal: 127.0.0.1:8080. 192-cfb, kata sandi SS: Pass.
Perintahnya adalah sebagai berikut:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Misalkan sudah ada proxy TLS HTTP: 127.0.0.1:8080. Sekarang kita mengubahnya menjadi proxy normal yang mendukung HTTP (S) dan Socks5 dan SS. File., Enkripsi SS: AES-192-CFB, Kata Sandi SS: Pass.
Perintahnya adalah sebagai berikut:
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
Misalkan sudah ada proxy KCP HTTP (kata sandi adalah: Demo123): 127.0.0.1:8080, sekarang kita mengubahnya menjadi proxy normal yang mendukung HTTP (S) dan Socks5 dan SS. , Enkripsi SS: AES-192-CFB, Kata Sandi SS: Pass.
Perintahnya adalah sebagai berikut:
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
Misalkan sudah ada proxy Socks5 normal: 127.0.0.1:8080, sekarang kita mengubahnya menjadi proxy umum yang mendukung HTTP (S) dan Socks5 dan SS. , kata sandi SS: lulus.
Perintahnya adalah sebagai berikut:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
Misalkan sudah ada proxy Socks5 TLS: 127.0.0.1:8080, sekarang kita mengubahnya menjadi proxy umum yang mendukung HTTP (S) dan Socks5 dan SS. : AES-192-CFB, Kata Sandi SS: Pass.
Perintahnya adalah sebagai berikut:
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
melaksanakan.
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 |
---|---|---|---|
Ya / Tidak | Ya | Ya | From parent-auth |
Ya / Tidak | TIDAK | Ya | From parent-auth |
Ya / Tidak | Ya | TIDAK | TIDAK |
TIDAK | TIDAK | TIDAK | TIDAK |
Ya | TIDAK | TIDAK | 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.
seperti:
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.
Misalnya:
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 menjadi efektif.
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!
Tip:
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:
Tip:
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
Atau
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 diaktifkan.
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
.
Memperkenalkan:
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
Penjelasan perintah:
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.
melihat:
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.