Terowongan yang mengubah Lalu Lintas UDP menjadi Lalu Lintas FakeTCP/UDP/ICMP Terenkripsi dengan menggunakan Raw Socket, membantu Anda Melewati FireWalls UDP (atau Lingkungan UDP yang Tidak Stabil).
Ketika digunakan sendiri, terowongan udp2raw hanya menyalurkan lalu lintas UDP. Namun demikian, jika Anda menggunakan udp2raw + VPN berbasis UDP apa pun secara bersamaan, Anda dapat melakukan terowongan lalu lintas apa pun (termasuk TCP/UDP/ICMP), saat ini OpenVPN/L2TP/ShadowVPN dan tinyfecVPN dipastikan didukung.
atau
wiki udp2raw
简体中文
Host Linux (termasuk Linux desktop, ponsel/tablet Android, router OpenWRT, atau Raspberry PI) dengan akun root atau kemampuan cap_net_raw.
Untuk pengguna Windows dan MacOS, gunakan udp2raw di repo ini.
Header ICMP/FakeTCP membantu Anda melewati pemblokiran UDP, QOS UDP, atau perilaku NAT UDP yang tidak tepat pada beberapa ISP. Dalam mode header ICMP, udp2raw bekerja seperti terowongan ICMP.
Header UDP juga didukung. Dalam mode header UDP, ini berperilaku seperti terowongan UDP normal, dan Anda dapat menggunakan fitur lainnya (seperti enkripsi, anti-pemutaran ulang, atau stabilisasi koneksi).
Dalam mode header FakeTCP, udp2raw mensimulasikan jabat tangan 3 arah saat membuat koneksi, mensimulasikan seq dan ack_seq saat mentransfer data. Ini juga mensimulasikan beberapa opsi TCP seperti: MSS
, sackOk
, TS
, TS_ack
, wscale
. Firewall akan menganggap FakeTCP sebagai koneksi TCP, namun pada dasarnya adalah UDP: ia mendukung pengiriman real-time/out-of-order (seperti halnya UDP normal), tidak ada kontrol kemacetan atau transmisi ulang. Jadi tidak akan ada masalah TCP over TCP saat menggunakan OpenVPN.
Catatan tentang enkripsi
Kegagalan koneksi terdeteksi oleh detak jantung. Jika waktu habis, klien akan secara otomatis mengubah nomor port dan menyambung kembali. Jika koneksi ulang berhasil, koneksi sebelumnya akan dipulihkan, dan semua percakapan UDP yang ada akan tetap berlaku.
Misalnya, jika Anda menggunakan udp2raw + OpenVPN, OpenVPN tidak akan kehilangan koneksi setelah tersambung kembali, meskipun kabel jaringan dicolokkan kembali atau titik akses WiFi diubah .
Multiplexing Satu klien dapat menangani beberapa koneksi UDP, yang semuanya berbagi koneksi mentah yang sama.
Banyak Klien Satu server dapat memiliki banyak klien.
Dukungan NAT Semua dari 3 mode berfungsi di lingkungan NAT.
Dukungan OpenVZ Diuji pada VPS BandwagonHost.
Mudah untuk Membangun Tidak ada ketergantungan. Untuk mengkompilasi silang udp2raw, yang perlu Anda lakukan hanyalah mengunduh rantai alat, memodifikasi makefile agar mengarah ke rantai alat, menjalankan make cross
lalu semuanya selesai. (Catatan: Biner yang telah dikompilasi sebelumnya untuk Desktop, RaspberryPi,Android, beberapa Router Openwrt sudah disertakan dalam Rilis)
Bypass UDP QoS
Bypass UDP Blocking
Bypass OpenVPN TCP over TCP problem
OpenVPN over ICMP
UDP to ICMP tunnel
UDP to TCP tunnel
UDP over ICMP
UDP over TCP
Unduh rilis biner dari https://github.com/wangyu-/udp2raw-tunnel/releases
Asumsikan UDP Anda diblokir atau di-QOS atau tidak didukung dengan baik. Asumsikan ip server Anda adalah 44.55.66.77, Anda memiliki layanan yang mendengarkan pada port udp 7777.
# Run at server side:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -k " passwd " --raw-mode faketcp -a
# Run at client side
./udp2raw_amd64 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -k " passwd " --raw-mode faketcp -a
(Perintah di atas harus dijalankan sebagai root. Untuk keamanan yang lebih baik, dengan beberapa langkah tambahan, Anda dapat menjalankan udp2raw sebagai non-root. Periksa tautan ini untuk info lebih lanjut)
Sekarang, terowongan mentah terenkripsi telah dibuat antara klien dan server melalui port TCP 4096. Menghubungkan ke port UDP 3333 di sisi klien sama dengan menghubungkan ke port 7777 di sisi server. Tidak ada lalu lintas UDP yang akan diekspos.
Untuk berjalan di Android, periksa Android_Guide
-a
opsi secara otomatis menambahkan aturan iptables (atau beberapa aturan iptables) untuk Anda, udp2raw mengandalkan aturan iptables ini untuk bekerja secara stabil. Sadarilah Anda jangan lupa -a
(ini adalah kesalahan umum). Jika Anda tidak ingin udp2raw menambahkan aturan iptables secara otomatis, Anda dapat menambahkannya secara manual (lihat opsi -g
) dan hilangkan -a
.
udp2raw-tunnel
git version:6e1df4b39f build date:Oct 24 2017 09:21:15
repository: https://github.com/wangyu-/udp2raw-tunnel
usage:
run as client : ./this_program -c -l local_listen_ip:local_port -r server_address:server_port [options]
run as server : ./this_program -s -l server_listen_ip:server_port -r remote_address:remote_port [options]
common options,these options must be same on both side:
--raw-mode <string> avaliable values:faketcp(default),udp,icmp
-k,--key <string> password to gen symetric key,default:"secret key"
--cipher-mode <string> avaliable values:aes128cbc(default),xor,none
--auth-mode <string> avaliable values:hmac_sha1,md5(default),crc32,simple,none
-a,--auto-rule auto add (and delete) iptables rule
-g,--gen-rule generate iptables rule then exit,so that you can copy and
add it manually.overrides -a
--disable-anti-replay disable anti-replay,not suggested
client options:
--source-ip <ip> force source-ip for raw socket
--source-port <port> force source-port for raw socket,tcp/udp only
this option disables port changing while re-connecting
other options:
--conf-file <string> read options from a configuration file instead of command line.
check example.conf in repo for format
--fifo <string> use a fifo(named pipe) for sending commands to the running program,
check readme.md in repository for supported commands.
--log-level <number> 0:never 1:fatal 2:error 3:warn
4:info (default) 5:debug 6:trace
--log-position enable file name,function name,line number in log
--disable-color disable log color
--disable-bpf disable the kernel space filter,most time its not necessary
unless you suspect there is a bug
--sock-buf <number> buf size for socket,>=10 and <=10240,unit:kbyte,default:1024
--force-sock-buf bypass system limitation while setting sock-buf
--seq-mode <number> seq increase mode for faketcp:
0:static header,do not increase seq and ack_seq
1:increase seq for every packet,simply ack last seq
2:increase seq randomly, about every 3 packets,simply ack last seq
3:simulate an almost real seq/ack procedure(default)
4:similiar to 3,but do not consider TCP Option Window_Scale,
maybe useful when firewall doesnt support TCP Option
--lower-level <string> send packets at OSI level 2, format:'if_name#dest_mac_adress'
ie:'eth0#00:23:45:67:89:b9'.or try '--lower-level auto' to obtain
the parameter automatically,specify it manually if 'auto' failed
--gen-add generate iptables rule and add it permanently,then exit.overrides -g
--keep-rule monitor iptables and auto re-add if necessary.implys -a
--clear clear any iptables rules added by this program.overrides everything
-h,--help print this help message
-a
dan -g
Program ini mengirimkan paket melalui soket mentah. Dalam mode FakeTCP, pemrosesan paket TCP kernel Linux harus diblokir oleh aturan iptables di kedua sisi, jika tidak, kernel akan secara otomatis mengirim RST untuk paket TCP yang tidak dikenali dan Anda akan mengalami masalah stabilitas/kinerja. Anda dapat menggunakan opsi -a
untuk membiarkan program secara otomatis menambah/menghapus aturan iptables saat mulai/keluar. Anda juga dapat menggunakan opsi -g
untuk membuat aturan iptables dan menambahkannya secara manual.
--cipher-mode
dan --auth-mode
Disarankan untuk menggunakan aes128cbc
+ hmac_sha1
untuk mendapatkan keamanan maksimal. Jika Anda ingin menjalankan program di router, Anda dapat mencoba xor
+ simple
, yang paling sering dapat mengelabui pemeriksaan paket oleh firewall, namun tidak dapat melindungi Anda dari serangan serius. Mode none hanya untuk tujuan debugging. Tidak disarankan untuk menyetel mode sandi atau mode autentikasi ke tidak ada.
--seq-mode
Mode FakeTCP tidak berperilaku 100% seperti koneksi tcp sebenarnya. ISP mungkin dapat membedakan lalu lintas tcp yang disimulasikan dari lalu lintas TCP yang sebenarnya (walaupun biayanya mahal). seq-mode dapat membantu Anda sedikit mengubah perilaku peningkatan seq. Jika Anda mengalami masalah koneksi, coba ubah nilainya.
--lower-level
--lower-level
memungkinkan Anda mengirim paket pada OSI level 2 (level tautan), sehingga Anda dapat melewati aturan iptables lokal apa pun. Jika Anda memiliki aturan iptables rumit yang bertentangan dengan udp2raw dan Anda tidak dapat (atau terlalu malas untuk) mengedit aturan iptables, --lower-level
bisa sangat berguna. Coba --lower-level auto
untuk mendeteksi parameter secara otomatis, Anda dapat menentukannya secara manual jika auto
gagal.
Format manual if_name#dest_mac_adress
, yaitu: eth0#00:23:45:67:89:b9
.
--keep-rule
Pantau iptables dan tambahkan kembali aturan iptables secara otomatis (untuk memblokir pemrosesan kernel tcp) jika perlu. Sangat berguna ketika aturan iptables dapat dihapus oleh program lain (misalnya, jika Anda menggunakan openwrt, setiap kali Anda mengubah dan melakukan pengaturan, aturan iptables dapat dibersihkan dan dibangun kembali).
--conf-file
Anda juga dapat memuat opsi dari file konfigurasi untuk menjaga rahasia dari perintah ps
.
Misalnya, tulis ulang opsi untuk contoh server
di atas (di bagian Memulai) ke dalam file konfigurasi:
server.conf
-s
# You can add comments like this
# Comments MUST occupy an entire line
# Or they will not work as expected
# Listen address
-l 0.0.0.0:4096
# Remote address
-r 127.0.0.1:7777
-a
-k passwd
--raw-mode faketcp
Perhatikan parameter -k
: Dalam mode baris perintah, tanda kutip di sekitar kata sandi akan dihapus oleh shell. Dalam file konfigurasi kami tidak menghapus tanda kutip.
Kemudian mulai server dengan
./udp2raw_amd64 --conf-file server.conf
--fifo
Gunakan fifo (pipa bernama) untuk mengirimkan perintah ke program yang sedang berjalan. Misalnya --fifo fifo.file
.
Di sisi klien, Anda dapat menggunakan echo reconnect >fifo.file
untuk memaksa klien menyambung kembali. Saat ini belum ada perintah yang diterapkan untuk server.
iperf3 TCP melalui OpenVPN + udp2raw (mode UDP iperf3 tidak digunakan karena bug yang disebutkan dalam masalah ini: esnet/iperf#296 . Sebagai gantinya, kami mengemas lalu lintas TCP ke dalam UDP oleh OpenVPN untuk menguji kinerja. Baca Aplikasi untuk detailnya.
iperf3 -c 10.222.2.1 -P40
iperf3 -c 10.222.2.1 -P40 -R
raw_mode: faketcp cipher_mode: xor auth_mode: sederhana
(kecepatan mundur serupa dan tidak diunggah)
raw_mode: faketcp cipher_mode: aes128cbc auth_mode: md5
(kecepatan mundur serupa dan tidak diunggah)
Periksa wiki untuk info lebih lanjut:
https://github.com/wangyu-/udp2raw-tunnel/wiki