From dc6c328d579b3fc23a6c1cb976c05cc5fd23e69c Mon Sep 17 00:00:00 2001 From: wangyu- Date: Sat, 5 Aug 2017 07:06:39 -0700 Subject: [PATCH] Update README.md --- README.md | 142 ++++++++++++++++++++++++++++++++++++++++++---- images/image1.PNG | Bin 0 -> 22105 bytes images/image2.PNG | Bin 0 -> 23013 bytes images/image4.PNG | Bin 0 -> 3350 bytes images/image5.PNG | Bin 0 -> 3181 bytes makefile | 6 +- 6 files changed, 134 insertions(+), 14 deletions(-) create mode 100644 images/image1.PNG create mode 100644 images/image2.PNG create mode 100644 images/image4.PNG create mode 100644 images/image5.PNG diff --git a/README.md b/README.md index 7b94b5b..10153d9 100755 --- a/README.md +++ b/README.md @@ -1,26 +1,146 @@ # Udp2raw-tunnel -An Encrpyted,Anti-Replay,Multiplexed Udp Tunnel,tunnels udp traffic through raw socket,send/recv udp packet as raw packet with fake tcp/icmp header. Which can help you bypass udp blocking or udp qos. It also supports sending raw packet as udp packet,in this way you can just may use of the encrpyting and anti-replay feature. +![image2](images/image2.PNG) -Nat supported in 3 the 3 modes. +An Encrpyted,Anti-Replay,Multiplexed Udp Tunnel,tunnels udp traffic through raw socket +### Send/Recv Udp Packet as Raw Packet with TCP header,ICMP header +Which can help you bypass udp blocking or udp QOS or just poorly supported udp NAT behavior by some ISP. Raw packet with UDP header is also supported,in this way you can just make use of the encrpyting and anti-replay feature. +### Encrpytion and Anti-Replay +encrypt your traffic with aes128cbc,protects data integrity by md5 or crc32,protect replay attack with an anti-replay window smiliar to ipsec/openvpn. +### Simulated TCP Handshake +simulated 3-way handshake,simluated seq ack_seq. Simluated tcp options:MSS,sackOk,TS,TS_ack,wscale. Provides real-time delivery ,no tcp over tcp problem when using openvpn. +### Connnection Recover +After connection timeouts,the client will re-connect.if re-connection is successful,the previous connection will be recovered,and all old udp conversations will stay vaild. +### Other Features +Multiplexing ,one client supports multi udp connections,all of those traffic will share one raw connection -In tcp mode simulated 3-way hand-shake,simluated seq ack_seq are implemented. those tcp options are implemented:MSS,sackOk,TS,TS_ack,wscale +Multiple Client Support,one server supports multiple client. +NAT Supported,all 3 modes work in NAT environment -## Getting Started +OpenVZ Supported,tested on bandwagonhost +Openwrt Supported,no dependence package,easy to compile,ar71xx binary included in release. +### Key Words +bypass udp qos,bypass udp blocking,openvpn tcp over tcp problem,openvpn over icmp,udp to icmp tunnel,udp to tcp tunnel,udp via icmp,udp via tcp +# Getting Started ### Prerequisites -linux host with root access - +linux host,root access. if you want to use it on window,you can use VMware in bridged mode. ### Installing download binary release from https://github.com/wangyu-/udp2raw-tunnel/releases - ### Running +assume your udp is blocked or being QOS-ed or just poorly supported.assume your server ip is 44.55.66.77, you have a service listening on udp port 7777. ``` -client: -./udp2raw_amd64 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -a +run at client side: +./udp2raw_amd64 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -a -k "passwd" --raw-mode faketcp -server(assume ip is 44.55.66.77): -./udp2raw -s -l44.55.66.77:4096 -r 127.0.0.1:7777 -a +run at server side: +./udp2raw_amd64 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -a -k "passwd" --raw-mode faketcp ``` +Now,your client and server established a tunnel thorough tcp port 4096. Connecting to udp port 3333 at client side is equivalent with connecting to port 7777 at server side. No udp traffic will be exposed to outside. +# Advanced Topic +### Usage +``` +udp2raw-tunnel +version: Aug 5 2017 21:03:54 +repository: https://github.com/wangyu-/udp2raw-tunnel + +usage: + run as client : ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port [options] + run as server : ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port [options] + +common options,these options must be same on both side: + --raw-mode avaliable values:faketcp(default),udp,icmp + -k,--key password to gen symetric key,default:"secret key" + --auth-mode avaliable values:aes128cbc(default),xor,none + --cipher-mode avaliable values:md5(default),crc32,simple,none + -a,--auto-rule auto add (and delete) iptables rule + -g,--gen-rule generate iptables rule then exit + --disable-anti-replay disable anti-replay,not suggested +client options: + --source-ip force source-ip for raw socket + --source-port force source-port for raw socket,tcp/udp only + this option disables port changing while re-connecting +other options: + --log-level 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 buf size for socket,>=10 and <=10240,unit:kbyte,default:1024 + --seqmode seq increase mode for faketcp: + 0:dont increase + 1:increase every packet + 2:increase randomly, about every 3 packets (default) + -h,--help print this help message +``` +### iptables rule +this programs sends packet via raw socket.In faketcp mode,Linux Kernel TCP packet processing has to be blocked by a iptables rule on both side,otherwise Kernel will automatically send RST for unrecongized TCP packet and you will sustain from stability/peformance problem.You can use -a option to let the program automatically add/del iptables rules on start/exit.You can also use the -g option to generate iptables rule and add it manually. +### cipher-mode and auth-mode +Its suggested to use aes128cbc + md5 to obtain maxmized security.If you want to run the program on a router,you can try xor+simple,it can fool Packet Inspection by firewalls most time, but it cant protect you from serious attackers. Mode none is only for debug,its not suggest to set cipher-mode or auth-mode to none. +### seq-mode +the faketcp mode doest not behave 100% like a real tcp connection.ISP may be able to distinguish the simulated tcp traffic from real tcp traffic(though its costly). seq-mode can help you changed the seq increase behavior a bit. If you experienced problems,try to change the value. +# Peformance Test +#### test method: +iperf3 tcp via openvpn + udp2raw +(iperf3 udp mode is not used bc of bug mentioned in this issue: https://github.com/esnet/iperf/issues/296 ,instead,we turn iperf3 's tcp traffic into udp by using openvpn,to test udp2raw 's peformance ) +#### iperf3 command: +``` +iperf3 -c 10.222.2.1 -P40 +iperf3 -c 10.222.2.1 -P40 -R +``` +#### client host +vultr $2.5/monthly plan(single core 2.4ghz cpu,512m ram), +#### server host +bandwagonhost $3.99/annually(single core 2.0ghz cpu,128m ram) +### Test1 +cipher_mode: xor  auth_mode: simple + +![image4](images/image4.PNG) + +(reverse speed is simliar and not uploaded) + +### Test2 +cipher_mode: aes128cbc  auth_mode: md5 + +![image5](images/image5.PNG) + +(reverse speed is simliar and not uploaded) + +# Application +### tunneling openvpn +1. bypass tcp ovr tcp problem when udp is not avaliable. +(tcp over tcp problem http://sites.inka.de/bigred/devel/tcp-tcp.html) +2. openopvn via icmp + +//todo +### tunneling kcptun +make kcptun support tcp mode. +(kcptun, https://github.com/xtaci/kcptun) + +//todo +### tunneling finalspeed +finalspeed 's tcp mode doesnt work on openvz VPS.you can use finalspeed 's udp mode,and tunnel udp through tcp with this tunnel. + +//todo + + +# Related work +### kcptun-raw +this project was inspired by kcptun-raw,which modified kcptun to support tcp mode. + +https://github.com/Chion82/kcptun-raw +### kcpraw +another project of kcptun with tcp mode + +https://github.com/ccsexyz/kcpraw +### relayRawSocket +a simple udp to raw tunnel without simluated 3-way handshake ,wrote in python + +https://github.com/linhua55/some_kcptun_tools/tree/master/relayRawSocket +### icmptunnel +Transparently tunnel your IP traffic through ICMP echo and reply packets. + +https://github.com/DhavalKapil/icmptunnel diff --git a/images/image1.PNG b/images/image1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1bbcfbf7fc4c44c9f230234bde5b91989c50f961 GIT binary patch literal 22105 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 literal 0 HcmV?d00001 diff --git a/images/image2.PNG b/images/image2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a28ab25899fbe853770406757d26b59b9aad84be GIT binary patch literal 23013 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