From 91e229616c3b055dd789cd5959d61a4ae84e2819 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Wed, 9 Aug 2017 20:49:44 -0700 Subject: [PATCH 01/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d65eea9..e5da70d 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Udp2raw-tunnel ![image0](images/image0.PNG) -An Encrpyted,Anti-Replay,Multiplexed Udp Tunnel,tunnels udp traffic through raw socket +An Encrpyted,Anti-Replay,Multiplexed Udp Tunnel,tunnels udp traffic through fake-tcp or icmp by using raw socket [简体中文](/doc/README.zh-cn.md) ### Send/Recv Udp Packet as Raw Packet with TCP header,ICMP header From 456da000f40867bb9a54fb5c800d9c069ca88394 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Wed, 9 Aug 2017 23:37:30 -0700 Subject: [PATCH 02/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index d1ef499..35bd040 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -22,15 +22,13 @@ https://github.com/wangyu-/UDPspeeder ### 模拟TCP3次握手 模拟TCP3次握手,模拟seq ack过程。另外还模拟了一些tcp option:MSS,sackOk,TS,TS_ack,wscale,用来使流量看起来更像是由普通的linux tcp协议栈发送的。 -### 连接保持,连接快速恢复,单向链路失效检测 -心跳机制检查连接是否中断,一旦心跳超时。client会立即换raw socket的端口重连,重连成功后会恢复之前中断的连接。虽然raw端的端口变了,但是udp端的所有连接都会继续有效。udp这边感觉不到raw端的重连,只会感觉到短暂断流,这跟普通的短暂丢包是类似的,不会导致上层应用重连。 +### 心跳保活、自动重连,连接快速恢复,单向链路失效检测 +心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决连接断开的问题。 (功能借鉴自kcptun-raw) -Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一端失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。 +Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一个方向失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。 对于有大量client的情况,对于不同client,server发送的心跳是错开时间发送的,不会因为短时间发送大量的心跳而造成拥塞和延迟抖动。 - - ### 其他特性 信道复用,client的udp端支持多个连接。 @@ -42,7 +40,7 @@ NAT 穿透 ,tcp icmp udp模式都支持nat穿透。 支持Openwrt,没有编译依赖,容易编译到任何平台上。release中提供了ar71xx版本的binary -epoll纯异步,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是一点一点进行的,不会因为消耗太多cpu时间造成延迟抖动。 +epoll纯异步,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是柔和进行的,不会因为消耗太多cpu时间造成延迟抖动。 ### 关键词 突破udp qos,突破udp屏蔽,openvpn tcp over tcp problem,openvpn over icmp,udp to icmp tunnel,udp to tcp tunnel,udp via icmp,udp via tcp From a58618c73c903c98b1347a485d8f73e913a3e15e Mon Sep 17 00:00:00 2001 From: wangyu- Date: Wed, 9 Aug 2017 23:39:53 -0700 Subject: [PATCH 03/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index 35bd040..df159c3 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -23,7 +23,7 @@ https://github.com/wangyu-/UDPspeeder 模拟TCP3次握手,模拟seq ack过程。另外还模拟了一些tcp option:MSS,sackOk,TS,TS_ack,wscale,用来使流量看起来更像是由普通的linux tcp协议栈发送的。 ### 心跳保活、自动重连,连接快速恢复,单向链路失效检测 -心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决连接断开的问题。 (功能借鉴自kcptun-raw) +心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决上层连接断开的问题。 (功能借鉴自kcptun-raw) Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一个方向失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。 From 4d319f54ff5d72bddfd6bce980a17f6dac2d62a3 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Wed, 9 Aug 2017 23:44:41 -0700 Subject: [PATCH 04/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index df159c3..6f68d58 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -23,7 +23,7 @@ https://github.com/wangyu-/UDPspeeder 模拟TCP3次握手,模拟seq ack过程。另外还模拟了一些tcp option:MSS,sackOk,TS,TS_ack,wscale,用来使流量看起来更像是由普通的linux tcp协议栈发送的。 ### 心跳保活、自动重连,连接快速恢复,单向链路失效检测 -心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决上层连接断开的问题。 (功能借鉴自kcptun-raw) +心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决上层连接断开的问题。 (功能借鉴自[kcptun-raw](https://github.com/Chion82/kcptun-raw)) Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一个方向失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。 From fec382ebab0e0d07d286f3cba03c2a87bbe57ba3 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Wed, 9 Aug 2017 23:46:03 -0700 Subject: [PATCH 05/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index 6f68d58..bd3e7ad 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -38,7 +38,7 @@ NAT 穿透 ,tcp icmp udp模式都支持nat穿透。 支持Openvz,配合finalspeed使用,可以在openvz上用tcp模式的finalspeed -支持Openwrt,没有编译依赖,容易编译到任何平台上。release中提供了ar71xx版本的binary +支持Openwrt,没有编译依赖,容易编译到任何平台上。release中提供了ar71xx版本的binary epoll纯异步,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是柔和进行的,不会因为消耗太多cpu时间造成延迟抖动。 From eb8567b6933d923ddfd0dba80e2dfc893937b4aa Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 00:05:47 -0700 Subject: [PATCH 06/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index bd3e7ad..a82820e 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -108,7 +108,7 @@ other options: -h,--help print this help message ``` ### iptables 规则 -用raw收发tcp包本质上绕过了linux内核的tcp协议栈。linux碰到raw socket发来的包会不认识,如果一直收到不认识的包,会回复大量RST,造成不稳定或性能问题。所以强烈建议添加iptables规则屏蔽Linux内核的对指定端口的处理。用-a选项,udp2raw会在启动的时候自动帮你加上Iptables规则,退出的时候再自动删掉。如果你不信任-a选项的可靠性,可以用-g选项来生成相应的Ip规则再自己手动添加。 +用raw收发tcp包本质上绕过了linux内核的tcp协议栈。linux碰到raw socket发来的包会不认识,如果一直收到不认识的包,会回复大量RST,造成不稳定或性能问题。所以强烈建议添加iptables规则屏蔽Linux内核的对指定端口的处理。用-a选项,udp2raw会在启动的时候自动帮你加上Iptables规则,退出的时候再自动删掉。如果长期使用,可以用-g选项来生成相应的Iptables规则再自己手动添加,这样规则不会在udp2raw退出时被删掉,可以避免停掉udp2raw后内核向对端回复RST。 用raw收发udp包也类似,只是内核回复的是icmp unreachable。而用raw 收发icmp,内核会自动回复icmp echo。都需要相应的iptables规则。 ### cipher-mode 和 auth-mode From 7c280ab3355371ae9b9fb368cb2951024063d957 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 03:20:35 -0700 Subject: [PATCH 07/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e5da70d..3776ad5 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Openwrt Supported,no dependence package,easy to compile,ar71xx binary included i 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,root access. if you want to use it on window,you can use VMware in bridged mode. +linux host,root access. if you want to use it on window,you can use VMware(both bridged mode and nat mode are supported). ### Installing download binary release from https://github.com/wangyu-/udp2raw-tunnel/releases ### Running From d104074328bca1b91f9fc084c79b915105d207a6 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 03:21:34 -0700 Subject: [PATCH 08/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index a82820e..659aba7 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -48,7 +48,7 @@ epoll纯异步,高并发,除了回收过期连接外,所有操作的时间 # 简明操作说明 ### 环境要求 -Linux主机,有root权限。主机上最好安装了iptables命令(apt/yum很容易安装)。在windows和mac上可以开虚拟机(桥接模式测试可用)。 +Linux主机,有root权限。主机上最好安装了iptables命令(apt/yum很容易安装)。在windows和mac上可以开虚拟机(桥接模式和NAT模式经测试都可用)。 ### 安装 下载编译好的二进制文件,解压到任意目录。 From 2f57fa66706573331d7e3cf26f17a55066756bbe Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 05:39:06 -0700 Subject: [PATCH 09/14] Update openvpn_guide.md --- doc/openvpn_guide.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/openvpn_guide.md b/doc/openvpn_guide.md index cd68c51..23ca627 100644 --- a/doc/openvpn_guide.md +++ b/doc/openvpn_guide.md @@ -18,6 +18,9 @@ assume server ip is 45.66.77.88 #### client side config ``` +client +dev tun100 +proto udp remote 127.0.0.1 3333 resolv-retry infinite From 6f9ab92c1d7f63da9161c4495791345e8c8b6771 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 06:20:51 -0700 Subject: [PATCH 10/14] Create build_guide.zh-cn.md --- doc/build_guide.zh-cn.md | 58 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 doc/build_guide.zh-cn.md diff --git a/doc/build_guide.zh-cn.md b/doc/build_guide.zh-cn.md new file mode 100644 index 0000000..5c677e6 --- /dev/null +++ b/doc/build_guide.zh-cn.md @@ -0,0 +1,58 @@ +# udp2raw编译方法 +本文演示怎么把udp2raw编译到自己所需的平台。 + +### 可以本地编译的linux平台 +比如电脑、树莓派 + +##### 首先安装git +debian/ubuntun执行: +``` +sudo apt-get install git +``` +redhat/centos执行: +``` +sudo yum install git +``` +##### 用git把源码clone至本地 + +在任意目录执行: + +``` +git clone https://github.com/wangyu-/udp2raw-tunnel.git +cd udp2raw-tunnel +``` + +##### 安装g++ make 等工具 +debian/ubuntun执行: +``` +sudo apt-get install build-essential +``` + +redhat/centos执行: +``` +sudo yum groupinstall 'Development Tools' +``` + +然后运行make,编译完成。 生成的udp2raw就是编译好的bianry。 + +### 需要交叉编译的平台 +比如各种openwrt路由器 + +##### 首先安装git +debian/ubuntun执行: +``` +sudo apt-get install git +``` +redhat/centos执行: +``` +sudo yum install git +``` + +##### 下载交叉编译工具包 +去downloads.openwrt.org上找到自己的openwrt版本和cpu型号对应的SDK。通常openwrt版本号不一样也问题不大,最主要是cpu型号。 + +比如我的tplink wdr4310运行的是chaos_calmer 15.05,ar71xx cpu,应该下载这个包: + +http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2 + +解压到本地任意目录,比如:/home/wangyu/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2 From 5c08d65d918ba2c2a1b038245204c0dd3769d033 Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 07:03:38 -0700 Subject: [PATCH 11/14] Update build_guide.zh-cn.md --- doc/build_guide.zh-cn.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/build_guide.zh-cn.md b/doc/build_guide.zh-cn.md index 5c677e6..bf38c4b 100644 --- a/doc/build_guide.zh-cn.md +++ b/doc/build_guide.zh-cn.md @@ -48,11 +48,25 @@ redhat/centos执行: sudo yum install git ``` -##### 下载交叉编译工具包 +##### 下载安装交叉编译工具包 去downloads.openwrt.org上找到自己的openwrt版本和cpu型号对应的SDK。通常openwrt版本号不一样也问题不大,最主要是cpu型号。 比如我的tplink wdr4310运行的是chaos_calmer 15.05,ar71xx cpu,应该下载这个包: +``` http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2 - +``` 解压到本地任意目录,比如:/home/wangyu/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2 + +让后依次进入,staging_dir ,toolchain-xxxxx ,bin 目录,找到后缀是g++的软链,比如我的是mips-openwrt-linux-g++ ,记下这个文件的完整路径: + +``` +/home/wangyu/Desktop/OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-g++ +``` +##### 编译 +把makefile的第一行 cross_cc=后面的内容改成你刚才记下的完整路径: +``` +cc_cross=/home/wangyu/Desktop/OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-g++ +``` + +执行make,目录下生成udp2raw文件。编译完成。 From c3a8305e493c7c561b64d9b02ed957723a55ad8f Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 07:03:57 -0700 Subject: [PATCH 12/14] Update build_guide.zh-cn.md --- doc/build_guide.zh-cn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/build_guide.zh-cn.md b/doc/build_guide.zh-cn.md index bf38c4b..1408fb9 100644 --- a/doc/build_guide.zh-cn.md +++ b/doc/build_guide.zh-cn.md @@ -1,7 +1,7 @@ # udp2raw编译方法 本文演示怎么把udp2raw编译到自己所需的平台。 -### 可以本地编译的linux平台 +## 可以本地编译的linux平台 比如电脑、树莓派 ##### 首先安装git @@ -35,7 +35,7 @@ sudo yum groupinstall 'Development Tools' 然后运行make,编译完成。 生成的udp2raw就是编译好的bianry。 -### 需要交叉编译的平台 +## 需要交叉编译的平台 比如各种openwrt路由器 ##### 首先安装git From 709258b260b4e73ee1d37967f1623f3515ff3dbe Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 07:04:45 -0700 Subject: [PATCH 13/14] Update build_guide.zh-cn.md --- doc/build_guide.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/build_guide.zh-cn.md b/doc/build_guide.zh-cn.md index 1408fb9..699c819 100644 --- a/doc/build_guide.zh-cn.md +++ b/doc/build_guide.zh-cn.md @@ -69,4 +69,4 @@ http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-SDK-15.05 cc_cross=/home/wangyu/Desktop/OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-g++ ``` -执行make,目录下生成udp2raw文件。编译完成。 +执行make cross,目录下生成udp2raw文件。编译完成。 From 06d7638c5ffc1e87c56392554bd9fdc63b36e97e Mon Sep 17 00:00:00 2001 From: wangyu- Date: Thu, 10 Aug 2017 07:08:21 -0700 Subject: [PATCH 14/14] Update README.zh-cn.md --- doc/README.zh-cn.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/README.zh-cn.md b/doc/README.zh-cn.md index 659aba7..310a8f8 100644 --- a/doc/README.zh-cn.md +++ b/doc/README.zh-cn.md @@ -152,6 +152,8 @@ raw_mode: faketcp cipher_mode: aes128cbc  auth_mode: md5 [udp2raw+kcptun step_by_step教程](kcptun_step_by_step.md) ### 中转 finalspeed [udp2raw+finalspeed step_by_step教程](finalspeed_step_by_step.md) +# 如何自己编译 +[编译教程](build_guide.zh-cn.md) # 相关repo ### kcptun-raw this project was inspired by kcptun-raw,which modified kcptun to support tcp mode.