通过狗洞为你的两个局域网打个洞
今天我就来教你一下如何通过狗洞为你的两个网络打个洞。(须一方网络有公网IP)
dog-tunnel,俗称狗洞,是一个p2p的打洞软件,让你如何在两个网络之间快速建立高速网络通道。官放网站
我这里使用的是lite版本,官方介绍特性如下:
- 数据安全,p2p模式通讯时数据不经过服务端,用户可自定义访问密码
- p2p模式底层采用KCP协议,在恶劣网络环境下比tcp延迟降低 30%-40%
- p2p模式支持AES加密
- p2p模式可以穿透80%的网络
- p2p模式失败时自动切换到c/s模式
- 原生支持远端socks5代理
- 支持多洞模式,多连接时动态切换狗洞提高访问速度
- 远端掉线自动重连
- 开放lite版本测试,完全点对点不依赖服务器,需要确保一方有公共IP,自动重连,加密,登录认证,支持透明代理
以下是lite版本的功能:
参数说明
-action 指明通道行为,默认socks5(socks5代理服务),可设置ip:port,作为端口转发用,客户端可指定该参数,当服务端指定参数时会强制采用服务端策略, 指定参数route将开启透明代理模式,windows版本不支持该模式,该模式下请自行设置用户的DNS和网关,将需要的tcp连接通过iptables转发到-local端口即可
-auth 用于简单的登录验证,两端不一致时客户端会被断开
-debug 调试输出
-dnscache 当socks5模式时有效,指定dns缓存时间,默认0,单位分钟
-encrypt 客户端指定,表示该通道是否启用消息加密
-local 通道连通时本地监听端口,格式ip:port
-pipe 通道个数,默认1,最大10
-r 反向模式,true时客户端触发action行为,服务端监听local指定的端口
-service 通道服务端地址,客户端指定时为连接地址,服务端指定时为监听地址,用于通道打通,双方地址一致,一般为服务端ip:port
-tcp tcp模式,默认false,使用udp模式在网络差的环境下效率更高,cpu占用也更高(待优化),两端需一致
-timeout 客户端执行连接超时时间,tcp模式关闭模式时有效
-v 更多输出信息
-version 版本信息
-xor 两端需一致,用于udp模式握手加密,内容为任意字符串
-session_timeout 指定连接会话在不活跃状态时多久(秒)后被销毁,防止被动连接的情况下产生僵尸socket,默认0不自动销毁
使用方法:
服务端开启
dtunnel_lite -service 127.0.0.1:1234 -v -action "" -xor 1213343
监听本地1234的udp服务端口,action为空表示客户端连接时不限制action行为,如果服务端想限制客户端行为,可强制设置action内容
xor为用户指定字符串用于握手加密,可不指定
之后,客户端可连接服务端进行使用
1. socks5代理
dtunnel_lite -service 127.0.0.1:1234 -v -action socks5 -encrypt -xor 1213343 -local :8787 -pipe 5 -session_timeout 30
客户端连接本地1234的udp端口,监听本地的8787端口作为socks5服务,传输内容加密,默认建立5条固定通道(防止大数据传输或者网络不好时单条通道拥堵)
web请求中不可避免的会有一些非正常关闭的tcp连接,加session_timeout可以清除这些无用连接,防止描述符泄露
2. 开启透明代理
dtunnel_lite -service 127.0.0.1:1234 -v -action route -encrypt -xor 1213343 -local :8787 -pipe 5
参数类似1,action设置route,并设置iptables将所有需要转发的tcp连接转发至8787端口
3. 端口映射
dtunnel_lite -service 127.0.0.1:1234 -v -action 127.0.0.1:22 -encrypt -xor 1213343 -local :8787 -pipe 5
执行后,服务端22端口将被映射至本地8787端口
4. 反向映射
dtunnel_lite -service 127.0.0.1:1234 -v -action 127.0.0.1:80 -encrypt -xor 1213343 -local :8080 -pipe 5 -r
执行后,本地80端口,被映射到远端8080端口