Compare commits
33 Commits
20171111.0
...
20171125.0
Author | SHA1 | Date | |
---|---|---|---|
|
b35edf7486 | ||
|
3bc07d5c86 | ||
|
f081ab751d | ||
|
91097eab5d | ||
|
c22b5e9680 | ||
|
9162a533d3 | ||
|
b01b087949 | ||
|
51b45c8f39 | ||
|
995ea8c98d | ||
|
aec81eb0c9 | ||
|
8b59b4afb9 | ||
|
c33bb552cd | ||
|
9516cfe99d | ||
|
5b1e59cae2 | ||
|
211d7ea4d3 | ||
|
7599d99fcc | ||
|
706cb0b583 | ||
|
43ae798e77 | ||
|
2f12d55229 | ||
|
0a4555dd42 | ||
|
14ece87bc3 | ||
|
50f682daf4 | ||
|
d487ca57f7 | ||
|
482e658858 | ||
|
069a9ba2b4 | ||
|
c591902be1 | ||
|
6a825dc51e | ||
|
1bdb6a5720 | ||
|
1afe8d7317 | ||
|
a54a0e269b | ||
|
e8398d0d31 | ||
|
dc43cb740b | ||
|
2e6be9e159 |
6
ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1,6 @@
|
||||
For English speaking user:
|
||||
https://github.com/wangyu-/UDPspeeder/wiki/Issue-Guide
|
||||
|
||||
中文用户请看:
|
||||
https://github.com/wangyu-/UDPspeeder/wiki/发Issue前请看
|
||||
(否则Issue可能被忽略,或被直接关掉)
|
@@ -3,11 +3,9 @@
|
||||
|
||||
A Tunnel which turns UDP Traffic into Encrypted FakeTCP/UDP/ICMP Traffic by using Raw Socket, helps you Bypass UDP FireWalls(or Unstable UDP Environment). It can defend Replay-Attack and supports Multiplexing. It also acts as a Connection Stabilizer.
|
||||
|
||||
When used alone,udp2raw tunnels only UDP traffic. Nevertheless,if you used udp2raw + any UDP-based VPN together,you can tunnel any traffic(include TCP/UDP/ICMP),currently OpenVPN/L2TP/ShadowVPN and [tinyFecVPN](https://github.com/wangyu-/tinyFecVPN) are confirmed to be supported.
|
||||
|
||||

|
||||
|
||||
or
|
||||
When used alone,udp2raw tunnels only UDP traffic. Nevertheless,if you used udp2raw + any UDP-based VPN together,you can tunnel any traffic(include TCP/UDP/ICMP),currently OpenVPN/L2TP/ShadowVPN and [tinyFecVPN](https://github.com/wangyu-/tinyFecVPN) are confirmed to be supported.
|
||||
|
||||

|
||||
|
||||
|
@@ -16,7 +16,7 @@ u64_t get_current_time()
|
||||
{
|
||||
timespec tmp_time;
|
||||
clock_gettime(CLOCK_MONOTONIC, &tmp_time);
|
||||
return tmp_time.tv_sec*1000+tmp_time.tv_nsec/(1000*1000l);
|
||||
return ((u64_t)tmp_time.tv_sec)*1000llu+((u64_t)tmp_time.tv_nsec)/(1000*1000llu);
|
||||
}
|
||||
|
||||
u64_t pack_u64(u32_t a,u32_t b)
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# Udp2raw-tunnel
|
||||

|
||||

|
||||
udp2raw tunnel,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS,或在UDP不稳定的环境下提升稳定性。可以有效防止在使用kcptun或者finalspeed的情况下udp端口被运营商限速。
|
||||
|
||||
支持心跳保活、自动重连,重连后会恢复上次连接,在底层掉线的情况下可以保持上层不掉线。同时有加密、防重放攻击、信道复用的功能。
|
||||
@@ -20,7 +20,17 @@ https://github.com/wangyu-/UDPspeeder
|
||||
# 支持的平台
|
||||
Linux主机,有root权限。可以是PC、android手机/平板、openwrt路由器、树莓派。主机上最好安装了iptables命令(apt/yum很容易安装)。
|
||||
|
||||
对于windows和mac用户,在虚拟机中可以稳定使用(udp2raw跑在Linux里,其他应用照常跑在window里;确保虚拟机网卡工作在桥接模式)。可以使用[这个](https://github.com/wangyu-/udp2raw-tunnel/releases/download/20171108.0/lede-17.01.2-x86_virtual_machine_image.zip)虚拟机镜像,大小只有7.5mb,免去在虚拟机里装系统的麻烦;虚拟机自带ssh server,可以scp拷贝文件,可以ssh进去,可以复制粘贴,root密码123456。
|
||||
Release中提供了`amd64`、`x86`、`arm`、`mips_be`、`mips_le`的预编译binary.
|
||||
|
||||
##### 对于windows和mac用户:
|
||||
|
||||
在虚拟机中可以稳定使用(udp2raw跑在Linux里,其他应用照常跑在window里;确保虚拟机网卡工作在桥接模式)。可以使用[这个](https://github.com/wangyu-/udp2raw-tunnel/releases/download/20171108.0/lede-17.01.2-x86_virtual_machine_image.zip)虚拟机镜像,大小只有7.5mb,免去在虚拟机里装系统的麻烦;虚拟机自带ssh server,可以scp拷贝文件,可以ssh进去,可以复制粘贴,root密码123456。
|
||||
|
||||
如果你的网络不允许桥接,也是有办法用的,具体方法请看wiki。
|
||||
|
||||
##### 对于ios和游戏主机用户:
|
||||
|
||||
可以把udp2raw运行在局域网的其他机器上。最好的办法是买个能刷OpenWrt/LEDE/梅林的路由器,把udp2raw运行在路由器上。
|
||||
|
||||
# 功能特性
|
||||
### 把udp流量伪装成tcp /icmp
|
||||
@@ -50,7 +60,7 @@ NAT 穿透 ,tcp icmp udp模式都支持nat穿透。
|
||||
|
||||
支持Openvz,配合finalspeed使用,可以在openvz上用tcp模式的finalspeed
|
||||
|
||||
支持Openwrt,没有编译依赖,容易编译到任何平台上。release中提供了ar71xx版本的binary
|
||||
支持Openwrt,没有编译依赖,容易编译到任何平台上。
|
||||
|
||||
epoll实现,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是柔和进行的,不会因为消耗太多cpu时间造成延迟抖动。
|
||||
|
||||
|
1
images/wiki/111
Normal file
@@ -0,0 +1 @@
|
||||
|
BIN
images/wiki/mac_nat_vb1.PNG
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
images/wiki/mac_nat_vb2.PNG
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
images/wiki/mac_nat_vb3.PNG
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
images/wiki/mac_nat_vb4.PNG
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
images/wiki/windows_nat.PNG
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/wiki/windows_nat_vb1.PNG
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
images/wiki/windows_nat_vb2.PNG
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
images/wiki/windows_nat_vm1.PNG
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
images/wiki/windows_nat_vm2.PNG
Normal file
After Width: | Height: | Size: 29 KiB |
12
main.cpp
@@ -1196,13 +1196,13 @@ int client_event_loop()
|
||||
if (nfds < 0) { //allow zero
|
||||
if(errno==EINTR )
|
||||
{
|
||||
mylog(log_info,"epoll interrupted by signal\n");
|
||||
mylog(log_info,"epoll interrupted by signal,continue\n");
|
||||
//close(fifo_fd);
|
||||
myexit(0);
|
||||
//myexit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
mylog(log_fatal,"epoll_wait return %d\n", nfds);
|
||||
mylog(log_fatal,"epoll_wait return %d,%s\n", nfds,strerror(errno));
|
||||
myexit(-1);
|
||||
}
|
||||
}
|
||||
@@ -1440,12 +1440,12 @@ int server_event_loop()
|
||||
if (nfds < 0) { //allow zero
|
||||
if(errno==EINTR )
|
||||
{
|
||||
mylog(log_info,"epoll interrupted by signal\n");
|
||||
myexit(0);
|
||||
mylog(log_info,"epoll interrupted by signal,continue\n");
|
||||
//myexit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
mylog(log_fatal,"epoll_wait return %d\n", nfds);
|
||||
mylog(log_fatal,"epoll_wait return %d,%s\n", nfds,strerror(errno));
|
||||
myexit(-1);
|
||||
}
|
||||
}
|
||||
|