The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .gitattributes
├── ISSUE_TEMPLATE.md
├── LICENSE.md
├── README.md
├── doc
    ├── README.zh-cn.md
    ├── android_guide.md
    ├── build_guide.md
    ├── build_guide.zh-cn.md
    ├── finalspeed_step_by_step.md
    ├── finalspeed_step_by_step
    │   ├── 11
    │   ├── Capture.PNG
    │   ├── Capture0.PNG
    │   ├── Capture2.PNG
    │   ├── Capture3.PNG
    │   ├── Capture4.PNG
    │   ├── Capture5.PNG
    │   ├── Capture6.PNG
    │   └── Capture7.PNG
    ├── kcptun_step_by_step.md
    ├── kcptun_step_by_step
    │   ├── Capture.PNG
    │   ├── Capture0.PNG
    │   ├── Capture00.PNG
    │   ├── Capture2.PNG
    │   ├── Capture3.PNG
    │   ├── Capture6.PNG
    │   ├── Capture7.PNG
    │   └── Capture8.PNG
    └── openvpn_guide.md
└── images
    ├── android.png
    ├── image0.PNG
    ├── image1.PNG
    ├── image2.PNG
    ├── image4.PNG
    ├── image5.PNG
    ├── lower_level.PNG
    ├── multiplatform
        ├── init
        ├── mp1.PNG
        ├── mp2.PNG
        ├── mp3.PNG
        ├── mp4.5.PNG
        ├── mp4.PNG
        ├── mp5.PNG
        ├── mp6.PNG
        └── mp7.PNG
    ├── openvpn.PNG
    ├── output_client.PNG
    ├── output_server.PNG
    ├── route.PNG
    ├── speed_test.PNG
    ├── speedtest
        ├── 111
        ├── Capture.PNG
        └── Capture2.PNG
    ├── udp2rawopenvpn.PNG
    └── wiki
        ├── 111
        ├── mac_nat_vb1.PNG
        ├── mac_nat_vb2.PNG
        ├── mac_nat_vb3.PNG
        ├── mac_nat_vb4.PNG
        ├── windows_nat.PNG
        ├── windows_nat_vb1.PNG
        ├── windows_nat_vb2.PNG
        ├── windows_nat_vm1.PNG
        └── windows_nat_vm2.PNG


/.gitattributes:
--------------------------------------------------------------------------------
1 | libev/* linguist-vendored
2 | 


--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | English Only.
2 | 


--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
 1 | MIT License
 2 | 
 3 | Copyright (c) 2017 Yu Wang (wangyucn at gmail.com)
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
 1 | # udp2raw-multiplatform
 2 | 
 3 | ![image0](images/image0.PNG)
 4 | 
 5 | multi-platform(cross-platform) version of [udp2raw](https://github.com/wangyu-/udp2raw-tunnel), which supports Windows/Mac/BSD natively.
 6 | 
 7 | udp2raw的跨平台版,协议兼容[linux版的udpraw](https://github.com/wangyu-/udp2raw-tunnel),可以直接运行在Windows、Mac、BSD上。
 8 | 
 9 | Check [Wiki](https://github.com/wangyu-/udp2raw-multiplatform/wiki) for details.
10 | 
11 | 更多信息,见 [Wiki](https://github.com/wangyu-/udp2raw-multiplatform/wiki)。
12 | 
13 | 
14 | ### Note
15 | 
16 | Since 2021, the codes in this repo have been merge back to [udp2raw repo](https://github.com/wangyu-/udp2raw-tunnel). Now this repo is only for binaries releasing, issue disscussion and holding related wiki articles, for Windows/Mac/BSD.
17 | 
18 | 从2021开始,这个repo的代码已经合并到[udp2raw repo](https://github.com/wangyu-/udp2raw-tunnel)。 本repo仅用来发布Windows/Mac/BSD的binary release,讨论相关issue,和存放wiki文档。
19 | 


--------------------------------------------------------------------------------
/doc/README.zh-cn.md:
--------------------------------------------------------------------------------
  1 | # Udp2raw-tunnel 
  2 | ![image2](/images/image0.PNG)
  3 | udp2raw tunnel,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS,或在UDP不稳定的环境下提升稳定性。可以有效防止在使用kcptun或者finalspeed的情况下udp端口被运营商限速。
  4 | 
  5 | 支持心跳保活、自动重连,重连后会恢复上次连接,在底层掉线的情况下可以保持上层不掉线。同时有加密、防重放攻击、信道复用的功能。
  6 | 
  7 | [English](/README.md)
  8 | 
  9 | [udp2raw+kcptun step_by_step教程](kcptun_step_by_step.md)
 10 | 
 11 | [udp2raw+finalspeed step_by_step教程](finalspeed_step_by_step.md)
 12 | 
 13 | [udp2raw wiki](https://github.com/wangyu-/udp2raw-tunnel/wiki)
 14 | 
 15 | **提示:**
 16 | 
 17 | udp2raw不是加速器,只是一个帮助你绕过UDP限制的工具。如果你需要UDP加速器,请看UDPspeeder。
 18 | 
 19 | UDPspeeder的repo:
 20 | 
 21 | https://github.com/wangyu-/UDPspeeder
 22 | # 支持的平台
 23 | Linux主机,有root权限。可以是PC、android手机/平板、openwrt路由器、树莓派。主机上最好安装了iptables命令(apt/yum很容易安装)。
 24 | 
 25 | Release中提供了`amd64`、`x86`、`arm`、`mips_be`、`mips_le`的预编译binary.
 26 | 
 27 | ##### 对于windows和mac用户:
 28 | 
 29 | 可以把udp2raw运行在虚拟机上(网络必须是桥接模式)。
 30 | 
 31 | 另外可以参考:
 32 | 
 33 | https://github.com/wangyu-/udp2raw-tunnel/wiki/在windows-mac上运行udp2raw客户端,带图形界面
 34 | 
 35 | ##### 对于ios和游戏主机用户:
 36 | 
 37 | 可以把udp2raw运行在局域网的其他机器/虚拟机上。最好的办法是买个能刷OpenWrt/LEDE/梅林的路由器,把udp2raw运行在路由器上。
 38 | 
 39 | # 功能特性
 40 | ### 把udp流量伪装成tcp /icmp
 41 | 用raw socket给udp包加上tcp/icmp包头,可以突破udp流量限制或Udp QOS。或者在udp nat有问题的环境下,提升稳定性。  另外也支持用raw 发udp包,这样流量不会被伪装,只会被加密。
 42 | 
 43 | ### 模拟TCP3次握手
 44 | 模拟TCP3次握手,模拟seq ack过程。另外还模拟了一些tcp option:MSS,sackOk,TS,TS_ack,wscale,用来使流量看起来更像是由普通的linux tcp协议栈发送的。
 45 | 
 46 | ### 心跳保活、自动重连,连接快速恢复,单向链路失效检测
 47 | 心跳保活、自动重连,udp2raw重连可以恢复上次的连接,重连后上层连接继续有效,底层掉线上层不掉线。有效解决上层连接断开的问题。 (功能借鉴自[kcptun-raw](https://github.com/Chion82/kcptun-raw))(**就算你拔掉网线重插,或者重新拨号获得新ip,上层应用也不会断线**)
 48 | 
 49 | Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一个方向失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。
 50 | 
 51 | 对于有大量client的情况,对于不同client,server发送的心跳是错开时间发送的,不会因为短时间发送大量的心跳而造成拥塞和延迟抖动。
 52 | 
 53 | ### 加密 防重放攻击
 54 | 用aes128cbc加密,md5/crc32做数据完整校验。用类似ipsec/openvpn的 replay window机制来防止重放攻击。
 55 | 
 56 | 设计目标是,即使攻击者可以监听到tunnel的所有包,可以选择性丢弃tunnel的任意包,可以重放任意包;攻击者也没办法获得tunnel承载的任何数据,也没办法向tunnel的数据流中通过包构造/包重放插入任何数据。
 57 | 
 58 | ### 其他特性
 59 | 信道复用,client的udp端支持多个连接。
 60 | 
 61 | server支持多个client,也能正确处理多个连接的重连和连接恢复。
 62 | 
 63 | NAT 穿透 ,tcp icmp udp模式都支持nat穿透。
 64 | 
 65 | 支持Openvz,配合finalspeed使用,可以在openvz上用tcp模式的finalspeed
 66 | 
 67 | 支持Openwrt,没有编译依赖,容易编译到任何平台上。
 68 | 
 69 | epoll实现,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是柔和进行的,不会因为消耗太多cpu时间造成延迟抖动。
 70 | 
 71 | ### 关键词
 72 | 突破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
 73 | 
 74 | # 简明操作说明
 75 | 
 76 | ### 安装
 77 | 下载编译好的二进制文件,解压到任意目录。
 78 | 
 79 | https://github.com/wangyu-/udp2raw-tunnel/releases
 80 | 
 81 | ### 运行
 82 | 假设你有一个server,ip为44.55.66.77,有一个服务监听在udp 7777端口。 假设你本地的主机到44.55.66.77的UDP流量被屏蔽了,或者被qos了
 83 | 
 84 | ```
 85 | 在server端运行:
 86 | ./udp2raw_amd64 -s -l0.0.0.0:4096  -r127.0.0.1:7777   -a -k "passwd" --raw-mode faketcp   --cipher-mode xor
 87 | 
 88 | 在client端运行:
 89 | ./udp2raw_amd64 -c -l0.0.0.0:3333  -r44.55.66.77:4096 -a -k "passwd" --raw-mode faketcp   --cipher-mode xor
 90 | ```
 91 | (以上例子需要用root账号运行。 用非root运行udp2raw需要一些额外的步骤,具体方法请看 [这个](https://github.com/wangyu-/udp2raw-tunnel/wiki/run-udp2raw-as-non-root) 链接。用非root运行更安全)
 92 | 
 93 | ###### Server端输出:
 94 | ![](/images/output_server.PNG)
 95 | ###### Client端输出:
 96 | ![](/images/output_client.PNG)
 97 | 
 98 | 现在client和server之间建立起了,tunnel。想要在本地连接44.55.66.77:7777,只需要连接 127.0.0.1:3333。来回的所有的udp流量会被经过tunneling发送。在外界看起来是tcp流量,不会有udp流量暴露到公网。
 99 | 
100 | ### MTU设置(重要)
101 | 
102 | 不论你用udp2raw来加速kcptun还是vpn,为了稳定使用,都需要设置合理的MTU(在kcptun/vpn里设置,而不是在udp2raw里),建议把MTU设置成1200。client和server端都要设置。
103 | 
104 | ### 提醒
105 | `--cipher-mode xor`表示仅使用简单的XOR加密,这样可以节省CPU占用,以免CPU成为速度瓶颈。如果你需要更强的加密,可以去掉此选项,使用默认的AES加密。加密相关的选项见后文的`--cipher-mode`和`--auth-mode`。
106 | 
107 | 如果要在anroid上运行,请看[Android简明教程](/doc/android_guide.md)
108 | 
109 | 如果要在梅林固件的路由器上使用,添加`--lower-level auto` `--keep-rule`
110 | 
111 | 如果client和server无法连接,或者连接经常断开,请看一下`--seq-mode`的用法,尝试不同的seq-mode。
112 | 
113 | # 进阶操作说明
114 | 
115 | ### 命令选项
116 | ```
117 | udp2raw-tunnel
118 | git version:6e1df4b39f    build date:Oct 24 2017 09:21:15
119 | repository: https://github.com/wangyu-/udp2raw-tunnel
120 | 
121 | usage:
122 |     run as client : ./this_program -c -l local_listen_ip:local_port -r server_address:server_port  [options]
123 |     run as server : ./this_program -s -l server_listen_ip:server_port -r remote_address:remote_port  [options]
124 | 
125 | common options,these options must be same on both side:
126 |     --raw-mode            <string>        avaliable values:faketcp(default),udp,icmp
127 |     -k,--key              <string>        password to gen symetric key,default:"secret key"
128 |     --cipher-mode         <string>        avaliable values:aes128cbc(default),xor,none
129 |     --auth-mode           <string>        avaliable values:md5(default),crc32,simple,none
130 |     -a,--auto-rule                        auto add (and delete) iptables rule
131 |     -g,--gen-rule                         generate iptables rule then exit,so that you can copy and
132 |                                           add it manually.overrides -a
133 |     --disable-anti-replay                 disable anti-replay,not suggested
134 | client options:
135 |     --source-ip           <ip>            force source-ip for raw socket
136 |     --source-port         <port>          force source-port for raw socket,tcp/udp only
137 |                                           this option disables port changing while re-connecting
138 | other options:
139 |     --conf-file           <string>        read options from a configuration file instead of command line.
140 |                                           check example.conf in repo for format
141 |     --fifo                <string>        use a fifo(named pipe) for sending commands to the running program,
142 |                                           check readme.md in repository for supported commands.
143 |     --log-level           <number>        0:never    1:fatal   2:error   3:warn
144 |                                           4:info (default)     5:debug   6:trace
145 |     --log-position                        enable file name,function name,line number in log
146 |     --disable-color                       disable log color
147 |     --disable-bpf                         disable the kernel space filter,most time its not necessary
148 |                                           unless you suspect there is a bug
149 |     --sock-buf            <number>        buf size for socket,>=10 and <=10240,unit:kbyte,default:1024
150 |     --force-sock-buf                      bypass system limitation while setting sock-buf
151 |     --seq-mode            <number>        seq increase mode for faketcp:
152 |                                           0:static header,do not increase seq and ack_seq
153 |                                           1:increase seq for every packet,simply ack last seq
154 |                                           2:increase seq randomly, about every 3 packets,simply ack last seq
155 |                                           3:simulate an almost real seq/ack procedure(default)
156 |                                           4:similiar to 3,but do not consider TCP Option Window_Scale,
157 |                                           maybe useful when firewall doesnt support TCP Option
158 |     --lower-level         <string>        send packets at OSI level 2, format:'if_name#dest_mac_adress'
159 |                                           ie:'eth0#00:23:45:67:89:b9'.or try '--lower-level auto' to obtain
160 |                                           the parameter automatically,specify it manually if 'auto' failed
161 |     --gen-add                             generate iptables rule and add it permanently,then exit.overrides -g
162 |     --keep-rule                           monitor iptables and auto re-add if necessary.implys -a
163 |     --clear                               clear any iptables rules added by this program.overrides everything
164 |     -h,--help                             print this help message
165 | 
166 | ```
167 | 
168 | ### iptables 规则,`-a`和`-g`
169 | 用raw收发tcp包本质上绕过了linux内核的tcp协议栈。linux碰到raw socket发来的包会不认识,如果一直收到不认识的包,会回复大量RST,造成不稳定或性能问题。所以强烈建议添加iptables规则屏蔽Linux内核的对指定端口的处理。用-a选项,udp2raw会在启动的时候自动帮你加上Iptables规则,退出的时候再自动删掉。如果长期使用,可以用-g选项来生成相应的Iptables规则再自己手动添加,这样规则不会在udp2raw退出时被删掉,可以避免停掉udp2raw后内核向对端回复RST。
170 | 
171 | 用raw收发udp包也类似,只是内核回复的是icmp unreachable。而用raw 收发icmp,内核会自动回复icmp echo。都需要相应的iptables规则。
172 | ### `--cipher-mode` 和 `--auth-mode` 
173 | 如果要最大的安全性建议用aes128cbc+md5。如果要运行在路由器上,建议用xor+simple,可以节省CPU。但是注意xor+simple只能骗过防火墙的包检测,不能防止真正的攻击者。
174 | 
175 | ### `--seq-mode`
176 | facktcp模式并没有模拟tcp的全部。所以理论上有办法把faketcp和真正的tcp流量区分开来(虽然大部分ISP不太可能做这种程度的包检测)。seq-mode可以改变一些seq ack的行为。如果遇到了连接问题,可以尝试更改。在我这边的移动线路用3种模式都没问题。
177 | 
178 | ### `--keep-rule`
179 | 定期主动检查iptables,如果udp2raw添加的iptables规则丢了,就重新添加。在一些iptables可能会被其他程序清空的情况下(比如梅林固件和openwrt的路由器)格外有用。
180 | 
181 | ### `--fifo`
182 | 指定一个fifo(named pipe)来向运行中的程序发送命令,例如`--fifo fifo.file`:
183 | 
184 | 在client端,可以用`echo reconnect >fifo.file`来强制client换端口重连(上层不断线).对Server,目前没有效果。
185 | 
186 | ### `--lower-level`
187 | 大部分udp2raw不能连通的情况都是设置了不兼容的iptables造成的。--lower-level选项允许绕过本地iptables。在一些iptables不好改动的情况下尤其有效(比如你用的是梅林固件,iptables全是固件自己生成的)。
188 | 
189 | ##### 格式
190 | `if_name#dest_mac_adress`,例如 `eth0#00:23:45:67:89:b9` 。`eth0`换成你的出口网卡名。`00:23:45:67:89:b9`换成网关的mac地址(如果client和server在同一个局域网内,可能不需要网关,这时候直接用对方主机的mac地址,这个属于罕见的应用场景,可以忽略)。
191 | 
192 | 可以用`--lower-level auto`自动获取参数,如果获取参数失败,再手动填写。
193 | 
194 | ##### client端获得--lower-level参数的办法
195 | 在client 端,运行`traceroute <server_ip>`,记下第一跳的地址,这个就是`网关ip`。再运行`arp -s <网关ip>`,可以同时查到出口网卡名和mac。
196 | 
197 | ![](/images/lower_level.PNG)
198 | 
199 | 如果traceroute第一跳结果是`* * *`,说明网关屏蔽了对traceroute的应答。需要用`ip route`或`route`查询网关:
200 | 
201 | ![](/images/route.PNG)
202 | ##### server端获得--lower-level参数的办法
203 | 如果client有公网ip,就`traceroute <client_ip>`。下一步和client端的方法一样。
204 | 
205 | 如果client没有公网ip,就`traceroute google.com` 或`traceroute baidu.com`。下一步和client端的方法一样。
206 | 
207 | server端也可以用`--lower-level auto` 来尝试自动获得参数,如果无法连接再手动填写。
208 | 
209 | ##### 注意
210 | 如果用了`--lower-level`选项。server虽然还可以bind在0.0.0.0,但是因为你显式指定了网络接口,就只能工作在这一个网络接口了。
211 | 
212 | 如果`arps -s`命令查询不到,首先再试几次。如果还是查询不到,那么可能是因为你用的是pppoe方式的拨号宽带,查询不到是正常的。这种情况下`if_name`填pppoe产生的虚拟interface,通常名字叫`pppXXXX`,从`ifconfig`命令的输出里找一下;`des_mac_adress`填`00:00:00:00:00:00`,例如`ppp0#00:00:00:00:00:00`
213 | 
214 | ### `--conf-file`
215 | 
216 | 为了避免将密码等私密信息暴露给`ps`命令,你也可以使用 `配置文件` 来存储参数。
217 | 
218 | 比如,将以上服务端参数改写成配置文件
219 | 
220 | `server.conf`:
221 | 
222 | ```
223 | -s
224 | # 你可以像这样添加注释
225 | # 注意,只有整行注释才能在配置文件里使用
226 | # 注释必须独占一行
227 | -l 0.0.0.0:4096
228 | -r 127.0.0.1:7777
229 | -a
230 | -k passwd
231 | --raw-mode faketcp
232 | ```
233 | 
234 | 注意,当写入配置文件的时候,密码等参数两边的引号必须去除。
235 | 
236 | 然后就可以使用下面的方式启动服务端
237 | 
238 | ```bash
239 | ./udp2raw_amd64 --conf-file server.conf
240 | ```
241 | 
242 | # 性能测试
243 | iperf3 的UDP模式有BUG,所以,这里用iperf3的tcp模式,配合Openvpn,测试udp2raw的性能。(iperf3 udp issue ,https://github.com/esnet/iperf/issues/296 )
244 | 
245 | openvpn关掉了自带的加密。
246 | #### iperf3 命令: 
247 | ```
248 | iperf3 -c 10.222.2.1 -P40 
249 | iperf3 -c 10.222.2.1 -P40 -R
250 | ```
251 | #### client主机
252 | vultr 2.5美元每月套餐(single core 2.4ghz cpu,512m ram,日本东京机房),
253 | #### server主机
254 | bandwagonhost 3.99美元每年套餐(single core 2.0ghz cpu,128m ram,美国洛杉矶机房)
255 | ### 测试1
256 | raw_mode: faketcp  cipher_mode: xor  auth_mode: simple
257 | 
258 | ![image4](/images/image4.PNG)
259 | 
260 | (反向的速度几乎一样,所以只发正向测试的图)
261 | 
262 | 测试中cpu被打满。其中有30%的cpu是被openvpn占的。 如果不用Openvpn中转,实际达到100+Mb/S 应该没问题。
263 | 
264 | ### 测试2
265 | raw_mode: faketcp  cipher_mode: aes128cbc  auth_mode: md5
266 | 
267 | ![image5](/images/image5.PNG)
268 | 
269 | (反向的速度几乎一样,所以只发正向测试的图)
270 | 
271 | 测试中cpu被打满。绝大多数cpu都是被udp2raw占用的(主要消耗在aes加密)。即使不用Openvpn,速度也不会快很多了。
272 | # 应用
273 | ### 中转 kcptun
274 | [udp2raw+kcptun step_by_step教程](kcptun_step_by_step.md)
275 | ### 中转 finalspeed
276 | [udp2raw+finalspeed step_by_step教程](finalspeed_step_by_step.md)
277 | # 如何自己编译
278 | [编译教程](build_guide.zh-cn.md)
279 | # 相关repo
280 | ### kcptun-raw
281 | udp2raw was inspired by kcptun-raw,which modified kcptun to support tcp mode.
282 | 
283 | https://github.com/Chion82/kcptun-raw
284 | ### relayRawSocket
285 | kcptun-raw was inspired by relayRawSocket. A simple  udp to raw tunnel,wrote in python
286 | 
287 | https://github.com/linhua55/some_kcptun_tools/tree/master/relayRawSocket
288 | ### kcpraw
289 | another project of kcptun with tcp mode
290 | 
291 | https://github.com/ccsexyz/kcpraw
292 | ### icmptunnel
293 | Transparently tunnel your IP traffic through ICMP echo and reply packets.
294 | 
295 | https://github.com/DhavalKapil/icmptunnel
296 | 
297 | # wiki
298 | 
299 | 更多内容请看 wiki:
300 | 
301 | https://github.com/wangyu-/udp2raw-tunnel/wiki
302 | 
303 | 


--------------------------------------------------------------------------------
/doc/android_guide.md:
--------------------------------------------------------------------------------
 1 | # How to run udp2raw on a rooted android device(arm cpu)
 2 | 
 3 | There is currently no GUI for udp2raw on android.Make sure you have installed Terminal to run it.Your device has to be rooted,otherwise you cant use raw socket.
 4 | 
 5 | Download udp2raw_arm from https://github.com/wangyu-/udp2raw-tunnel/releases.
 6 | 
 7 | Copy udp2raw_arm to any dir of your **internal storage** .Copying it to **SD card wont work**.
 8 | 
 9 | # Steps
10 | 1.  run udp2raw_arm  as usual, except you must change the -a option to -g
11 | ```
12 | ./udp2raw_arm -c -r 44.55.66.77:9966 -l 0.0.0.0:4000 -k1234 --cipher xor -g
13 | ```
14 | 
15 | 2. find the generated iptables rule from udp2raw's output,add it manually by running:
16 | ```
17 | iptables -I INPUT -s 44.55.66.77/32 -p tcp -m tcp --sport 9966 -j DROP
18 | ```
19 | 
20 | 3. run udp2raw_ram without -g command
21 | 
22 | ```
23 | ./udp2raw_arm -c -r 44.55.66.77:9966 -l 0.0.0.0:4000 -k1234 --cipher xor 
24 | ```
25 | 
26 | # ScreenShot 
27 | zoom-in if not large enough
28 | 
29 | ![](/images/android.png)
30 | 


--------------------------------------------------------------------------------
/doc/build_guide.md:
--------------------------------------------------------------------------------
 1 | # udp2raw build guide
 2 | 
 3 | the guide on how to build udp2raw
 4 | 
 5 | ## Build udp2raw for a specific platform
 6 | 
 7 | ### linux platform which supports local compile
 8 | such as PC,raspberry pi
 9 | 
10 | ##### install git
11 | run on debian/ubuntun:
12 | ```
13 | sudo apt-get install git
14 | ```
15 | run on redhat/centos:
16 | ```
17 | sudo yum install git
18 | ```
19 | ##### clone git code
20 | 
21 | run in any dir:
22 | 
23 | ```
24 | git clone https://github.com/wangyu-/udp2raw-tunnel.git
25 | cd udp2raw-tunnel
26 | ```
27 | 
28 | ##### install compile tool
29 | run on debian/ubuntun:
30 | ```
31 | sudo apt-get install build-essential
32 | ```
33 | 
34 | run on redhat/centos:
35 | ```
36 | sudo yum groupinstall 'Development Tools'
37 | ```
38 | 
39 | run 'make',compilation done. the udp2raw file is the just compiled binary
40 | 
41 | ### platform which needs cross-compile
42 | such as openwrt router,run following instructions on your PC
43 | 
44 | ##### install git
45 | run on debian/ubuntun:
46 | ```
47 | sudo apt-get install git
48 | ```
49 | run on redhat/centos:
50 | ```
51 | sudo yum install git
52 | ```
53 | 
54 | ##### download cross compile tool chain
55 | 
56 | find it on downloads.openwrt.org according to your openwrt version and cpu model.
57 | 
58 | for example, my tplink wdr4310 runs chaos_calmer 15.05,its with ar71xx cpu,download the following package.
59 | 
60 | ```
61 | 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
62 | ```
63 | unzip it to any dir,such as :/home/wangyu/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2
64 | 
65 | cd into staging_dir ,toolchain-xxxxx ,bin .find the soft link with g++ suffix. in my case ,its mips-openwrt-linux-g++ ,check for its full path:
66 | 
67 | ```
68 | /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++
69 | ```
70 | ##### compile
71 | modify first line of makefile to:
72 | ```
73 | 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++
74 | ```
75 | 
76 | run `make cross`,the just generated `udp2raw_cross` is the binary,compile done. copy it to your router to run.
77 | 
78 | `make cross` generates non-static binary. If you have any problem on running it,try to compile a static binary by using `make cross2` or `make cross3`.If your toolchain supports static compiling, usually one of them will succeed. The generated file is still named `udp2raw_cross`.
79 | 
80 | 
81 | 
82 | ## Build a full release (include all binaries supported in the makefile)
83 | 
84 | 1. make sure your linux is amd64 version
85 | 
86 | 2. clone the repo
87 | 
88 | 3. make sure you have g++ , make sure your g++ support the `-m32` option; make your your have installed libraries for `-m32` option
89 | 
90 | 4. download https://github.com/wangyu-/files/releases/download/files/toolchains.tar.gz , and extract it to the right position (according to the makefile)
91 | 
92 | 5. run `make release` inside udp2raw's directory
93 | 


--------------------------------------------------------------------------------
/doc/build_guide.zh-cn.md:
--------------------------------------------------------------------------------
 1 | # udp2raw编译方法
 2 | 本文演示怎么把udp2raw编译到自己所需的平台。
 3 | 
 4 | ## 可以本地编译的linux平台
 5 | 比如电脑、树莓派
 6 | 
 7 | ##### 首先安装git
 8 | debian/ubuntun执行:
 9 | ```
10 | sudo apt-get install git
11 | ```
12 | redhat/centos执行:
13 | ```
14 | sudo yum install git
15 | ```
16 | ##### 用git把源码clone至本地
17 | 
18 | 在任意目录执行:
19 | 
20 | ```
21 | git clone https://github.com/wangyu-/udp2raw-tunnel.git
22 | cd udp2raw-tunnel
23 | ```
24 | 
25 | ##### 安装g++ make 等工具
26 | debian/ubuntun执行:
27 | ```
28 | sudo apt-get install build-essential
29 | ```
30 | 
31 | redhat/centos执行:
32 | ```
33 | sudo yum groupinstall 'Development Tools'
34 | ```
35 | 
36 | 然后运行make,编译完成。 生成的udp2raw就是编译好的bianry。
37 | 
38 | ## 需要交叉编译的平台
39 | 比如各种openwrt路由器
40 | 
41 | ##### 首先安装git
42 | debian/ubuntun执行:
43 | ```
44 | sudo apt-get install git
45 | ```
46 | redhat/centos执行:
47 | ```
48 | sudo yum install git
49 | ```
50 | 
51 | ##### 下载安装交叉编译工具包
52 | 去downloads.openwrt.org上找到自己的openwrt版本和cpu型号对应的SDK。通常openwrt版本号不一样也问题不大,最主要是cpu型号。
53 | 
54 | 比如我的tplink wdr4310运行的是chaos_calmer 15.05,ar71xx cpu,应该下载这个包:
55 | 
56 | ```
57 | 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
58 | ```
59 | 解压到本地任意目录,比如:/home/wangyu/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2
60 | 
61 | 让后依次进入,staging_dir ,toolchain-xxxxx ,bin 目录,找到后缀是g++的软链,比如我的是mips-openwrt-linux-g++ ,记下这个文件的完整路径:
62 | 
63 | ```
64 | /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++
65 | ```
66 | ##### 编译
67 | 把makefile的第一行 cross_cc=后面的内容改成你刚才记下的完整路径:
68 | ```
69 | 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++
70 | ```
71 | 
72 | 执行`make cross`,目录下生成udp2raw_cross文件。编译完成。
73 | 
74 | `make cross`编译出的binary是非静态的。如果运行有问题,可以尝试用`make cross2`或`make cross3`编译静态的binary,你的工具链必须带静态库才能成功编译,生成的文件仍然叫udp2raw_cross.
75 | 


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step.md:
--------------------------------------------------------------------------------
 1 | # udp2raw+finalspeed 加速tcp流量 Step by Step 教程
 2 | ![image](finalspeed_step_by_step/Capture0.PNG)
 3 | 
 4 | ##### 背景
 5 | 国内有些ISP会对UDP做QOS或屏蔽,这时候加速协议对TCP发包模式的支持就很重要。finalspeed虽然本身支持在底层用TCP发包,但是其依赖的libpcap不支持openvz架构,即使不是openvz架构的主机,也存在不稳定的问题。
 6 | 
 7 | 
 8 | ##### 摘要
 9 | udp2raw是一个把udp流量通过raw socket包装成tcp流量的工具。通过用udp2raw配合udp模式的 finalspeed一样可以达到在底层发tcp包,绕过QOS的效果。支持openvz,稳定性也好很多。原理上相当于在finalspeed外面再包了一层tunnel。
10 | 
11 | 本教程会一步一步演示用udp2raw+finalspeed加速http流量的过程。加速任何其他tcp流量也一样,包括$\*\*\*。本文避免讨论科学上网,所以只演示加速http流量。
12 | 
13 | udp2raw也支持把udp流量包装成Icmp发送,本教程不做演示。
14 | 
15 | ### 环境要求
16 | 服务器主机是linux,有root权限。  可以是openvz架构的vps。 也可以是openwrt路由器。
17 | 
18 | 本地主机是windows,本地有openwrt路由器或树莓派或安装了linux虚拟机(网卡设置为桥接模式)。
19 | 
20 | (如果嫌给虚拟机安装linux麻烦,可以用release里发布的预装了udp2raw的openwrt_x86虚拟机镜像,容量4.4mb)
21 | 
22 | 下面的教程按虚拟机演示,如果你有openwrt路由器或树莓派,可以直接运行再路由器或树莓派上,就不需要虚拟机了。
23 | 
24 | ### 安装
25 | 下载好udp2raw的压缩包,解压分别解压到服务器和本地的虚拟机。
26 | 
27 | https://github.com/wangyu-/udp2raw-tunnel/releases
28 | 
29 | 在服务器端安装好finalspeed服务端,在本地windows安装好finalspeed的客户端。服务端我以前是用91yun的一键安装脚本安装的,没装过的可以去网上搜一键安装脚本。
30 | 
31 | ### 运行
32 | 1.先在服务器主机运行如下命令,确定finalspeed服务端已经正常启动了。
33 | 
34 | ```
35 | netstat -nlp|grep java
36 | ```
37 | ![image](finalspeed_step_by_step/Capture5.PNG)
38 | 
39 | 如果显示了150端口,就表示服务端启动好了。
40 | 
41 | 2.在服务器启动udp2raw server
42 | ```
43 |  ./udp2raw_amd64 -s -l0.0.0.0:8855 -r 127.0.0.1:150  -a -k "passwd" --raw-mode faketcp
44 | ```
45 | ![image](finalspeed_step_by_step/Capture2.PNG)
46 | 
47 | 3.在本地的虚拟机上启动udp2raw client  ,假设服务器ip是45.66.77.88
48 | ```
49 | ./udp2raw_amd64 -c -r45.66.77.88:8855 -l0.0.0.0:150 --raw-mode faketcp -a -k"passwd"
50 | ```
51 | 如果一切正常,client端会显示client_ready:
52 | 
53 | ![image](finalspeed_step_by_step/Capture3.PNG)
54 | 
55 | 记下红框中的ip,这是虚拟机的网卡ip
56 | 
57 | 在server端也会显示server_ready
58 | ![image](finalspeed_step_by_step/Capture4.PNG)
59 | 
60 | 4.在本地windows,按图配置好finalspeed的客户端。注意,192.168.205.8改成你刚才记下来的IP,带宽也要按实际的填。传输协议要选UDP.
61 | ![image](finalspeed_step_by_step/Capture.PNG)
62 | 
63 | 5.所有准备工作已经完成了,在本地访问本地的8012端口,相当于访问服务器的80端口。
64 | 
65 | 来试一下通过http://127.0.0.1:8012/ 下载文件 ,1.5M/s:
66 | ![image](finalspeed_step_by_step/Capture6.PNG)
67 | 
68 | 再试一下直接通过服务器的ip访问,http://45.66.77.88:80/ ,速度只有600K/s
69 | ![image](finalspeed_step_by_step/Capture7.PNG)
70 | 
71 | 教程就到这里了,用来加速其他的tcp服务也是一样的,只要再第三步那里设置其他的端口。
72 | 


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/11:
--------------------------------------------------------------------------------
1 | 11
2 | 


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture0.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture2.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture3.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture4.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture5.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture6.PNG


--------------------------------------------------------------------------------
/doc/finalspeed_step_by_step/Capture7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/finalspeed_step_by_step/Capture7.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step.md:
--------------------------------------------------------------------------------
 1 | # udp2raw+kcptun 加速tcp流量 Step by Step 教程
 2 | ![image](kcptun_step_by_step/Capture00.PNG)
 3 | 
 4 | 本教程会一步一步演示用udp2raw+kcptun加速SSH流量的过程。加速任何其他tcp流量也一样,包括$\*\*\*;本文避免涉及科学上网,所以演示ssh。
 5 | 
 6 | ### 环境要求
 7 | 两边的主机都是linux,有root权限。 可以是openwrt路由器或树莓派,也可以是root了的android。
 8 | 
 9 | 在windows/mac上运行udp2raw可以参考这个教程:
10 | 
11 | https://github.com/wangyu-/udp2raw-tunnel/wiki/在windows-mac上运行udp2raw客户端,带图形界面
12 | 
13 | 
14 | ### 安装
15 | 下载好kcptun和udp2raw的压缩包,解压分别解压到client端和server端。
16 | 
17 | https://github.com/xtaci/kcptun/releases
18 | https://github.com/wangyu-/udp2raw-tunnel/releases
19 | 
20 | 解压好后,如图:
21 | ![image](kcptun_step_by_step/Capture0.PNG)
22 | 
23 | ### 运行
24 | 1.在远程服务器运行 udp2raw_amd64 server模式:
25 | ```
26 | ./udp2raw_amd64 -s -l0.0.0.0:8855 -r 127.0.0.1:4000 -k "passwd" --raw-mode faketcp -a
27 | ```
28 | ![image](kcptun_step_by_step/Capture.PNG)
29 | 
30 | 2.在本地运行udp2raw_amd64 client模式,假设server ip是45.66.77.88:
31 | ```
32 | ./udp2raw_amd64 -c -r45.66.77.88:8855 -l0.0.0.0:4000 --raw-mode faketcp -a -k"passwd"
33 | ```
34 | 如果一切正常client端输出如下,显示client_ready:
35 | ![image](kcptun_step_by_step/Capture2.PNG)
36 | 
37 | server端也会有类似输出,显示server_ready:
38 | ![image](kcptun_step_by_step/Capture3.PNG)
39 | 
40 | 3.在远程服务器运行 kcp server
41 | 
42 | 
43 | ```
44 | ./server_linux_amd64 -t "127.0.0.1:22" -l ":4000" -mode fast2 -mtu 1300
45 | ```
46 | -mtu 1300很重要,或者设置成更小。
47 | ![image](kcptun_step_by_step/Capture6.PNG)
48 | 
49 | 4.在本地运行 
50 | 
51 | 
52 | ```
53 |  ./client_linux_amd64 -r "127.0.0.1:4000" -l ":3322" -mode fast2 -mtu 1300
54 | ```
55 | -mtu 1300很重要,或者设置成更小。
56 | ![image](kcptun_step_by_step/Capture7.PNG)
57 | 
58 | 5.所有准备工作已经做好,在本地运行
59 | ```
60 | ssh -p 3322 root@127.0.0.1
61 | ```
62 | 已经连进去了,而且是经过kcptun加速的:
63 | ![image](kcptun_step_by_step/Capture8.PNG)
64 | 


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture0.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture00.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture00.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture2.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture3.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture6.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture7.PNG


--------------------------------------------------------------------------------
/doc/kcptun_step_by_step/Capture8.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/doc/kcptun_step_by_step/Capture8.PNG


--------------------------------------------------------------------------------
/doc/openvpn_guide.md:
--------------------------------------------------------------------------------
 1 | # udp2raw+openvpn config guide
 2 | ![image_vpn](/images/openvpn.PNG)
 3 | 
 4 | ![image4](/images/image4.PNG)
 5 | 
 6 | # udp2raw command
 7 | #### run at server side
 8 | ```
 9 | ./udp2raw_amd64 -s -l0.0.0.0:8855 -r 127.0.0.1:7777 -k "passwd" --raw-mode faketcp -a
10 | ```
11 | #### run at client side
12 | assume server ip is 45.66.77.88
13 | ```
14 | ./udp2raw_amd64 -c -l0.0.0.0:3333 -r 45.66.77.88:8855 -k "passwd" --raw-mode faketcp -a
15 | ```
16 | 
17 | #### hint
18 | You can add `--cipher-mode xor` `--auth-mode simple` to **both** sides to obtain maximum performance(but poor security).
19 | 
20 | # openvpn config
21 | 
22 | #### client side config
23 | ```
24 | client
25 | dev tun100
26 | proto udp
27 | 
28 | remote 127.0.0.1 3333
29 | resolv-retry infinite 
30 | nobind 
31 | persist-key 
32 | persist-tun  
33 | 
34 | ca /root/add-on/openvpn/ca.crt
35 | cert /root/add-on/openvpn/client.crt
36 | key /root/add-on/openvpn/client.key
37 | 
38 | keepalive 3 20
39 | verb 3
40 | mute 20
41 | 
42 | comp-lzo no
43 | cipher none      ##### disable openvpn 's cipher and auth for maxmized peformance. 
44 | auth none        ##### you can enable openvpn's cipher and auth,if you dont care about peformance,or you dont trust udp2raw 's encryption
45 | 
46 | fragment 1200       ##### very important    you can turn it up a bit. but,the lower the safer
47 | mssfix 1200         ##### very important
48 | 
49 | sndbuf 2000000      ##### important
50 | rcvbuf 2000000      ##### important
51 | txqueuelen 4000     ##### suggested
52 | ```
53 | 
54 | 
55 | #### server side config
56 | ```
57 | local 0.0.0.0
58 | port 7777 
59 | proto udp
60 | dev tun 
61 | 
62 | ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
63 | cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
64 | key /etc/openvpn/easy-rsa/2.0/keys/server.key
65 | dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
66 | 
67 | server 10.222.2.0 255.255.255.0 
68 | ifconfig 10.222.2.1 10.222.2.6
69 | 
70 | client-to-client
71 | duplicate-cn 
72 | keepalive 10 60 
73 | 
74 | max-clients 50
75 | 
76 | persist-key
77 | persist-tun
78 | 
79 | status /etc/openvpn/openvpn-status.log
80 | 
81 | verb 3
82 | mute 20  
83 | 
84 | comp-lzo no
85 | cipher none      ##### disable openvpn 's cipher and auth for maxmized peformance. 
86 | auth none        ##### you can enable openvpn's cipher and auth,if you dont care about peformance,or you dont trust udp2raw 's encryption
87 | 
88 | fragment 1200       ##### very important    you can turn it up a bit. but,the lower the safer
89 | mssfix 1200         ##### very important
90 | 
91 | sndbuf 2000000      ##### important
92 | rcvbuf 2000000      ##### important
93 | txqueuelen 4000     ##### suggested
94 | ```
95 | 


--------------------------------------------------------------------------------
/images/android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/android.png


--------------------------------------------------------------------------------
/images/image0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/image0.PNG


--------------------------------------------------------------------------------
/images/image1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/image1.PNG


--------------------------------------------------------------------------------
/images/image2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/image2.PNG


--------------------------------------------------------------------------------
/images/image4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/image4.PNG


--------------------------------------------------------------------------------
/images/image5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/image5.PNG


--------------------------------------------------------------------------------
/images/lower_level.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/lower_level.PNG


--------------------------------------------------------------------------------
/images/multiplatform/init:
--------------------------------------------------------------------------------
1 | 
2 | 


--------------------------------------------------------------------------------
/images/multiplatform/mp1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp1.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp2.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp3.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp4.5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp4.5.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp4.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp5.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp6.PNG


--------------------------------------------------------------------------------
/images/multiplatform/mp7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/multiplatform/mp7.PNG


--------------------------------------------------------------------------------
/images/openvpn.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/openvpn.PNG


--------------------------------------------------------------------------------
/images/output_client.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/output_client.PNG


--------------------------------------------------------------------------------
/images/output_server.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/output_server.PNG


--------------------------------------------------------------------------------
/images/route.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/route.PNG


--------------------------------------------------------------------------------
/images/speed_test.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/speed_test.PNG


--------------------------------------------------------------------------------
/images/speedtest/111:
--------------------------------------------------------------------------------
1 | 
2 | 


--------------------------------------------------------------------------------
/images/speedtest/Capture.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/speedtest/Capture.PNG


--------------------------------------------------------------------------------
/images/speedtest/Capture2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/speedtest/Capture2.PNG


--------------------------------------------------------------------------------
/images/udp2rawopenvpn.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/udp2rawopenvpn.PNG


--------------------------------------------------------------------------------
/images/wiki/111:
--------------------------------------------------------------------------------
1 | 
2 | 


--------------------------------------------------------------------------------
/images/wiki/mac_nat_vb1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/mac_nat_vb1.PNG


--------------------------------------------------------------------------------
/images/wiki/mac_nat_vb2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/mac_nat_vb2.PNG


--------------------------------------------------------------------------------
/images/wiki/mac_nat_vb3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/mac_nat_vb3.PNG


--------------------------------------------------------------------------------
/images/wiki/mac_nat_vb4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/mac_nat_vb4.PNG


--------------------------------------------------------------------------------
/images/wiki/windows_nat.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/windows_nat.PNG


--------------------------------------------------------------------------------
/images/wiki/windows_nat_vb1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/windows_nat_vb1.PNG


--------------------------------------------------------------------------------
/images/wiki/windows_nat_vb2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/windows_nat_vb2.PNG


--------------------------------------------------------------------------------
/images/wiki/windows_nat_vm1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/windows_nat_vm1.PNG


--------------------------------------------------------------------------------
/images/wiki/windows_nat_vm2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyu-/udp2raw-multiplatform/632bd6c338a8e86da1a1903fe75f6cc0969ce5b6/images/wiki/windows_nat_vm2.PNG


--------------------------------------------------------------------------------