登录
  • Even when we go our separate ways, in my heart you'll always stay...
  • 用代码行数测算软件开发进度如同按重量测算飞机的制造进度@比尔.盖茨

UDP 53免费上网、DNS隧道经验谈

IT那些事 Benny小土豆 7266次浏览 2745字 78个评论
这篇文章在 2017年08月24日22:38:59 更新了哦~
郑重声明:
本文仅供研究学习技术交流,请勿用于商业及非法用途。如产生任何纠纷,与本人无关。

这是一篇回炉重炒的福利文

本文将介绍一种绕过Web认证来免费上网的姿势,不敢保证在所有网络环境下都好用,但是至少我已经享受一段时间免费的待遇了。

一. 原理简介

在连接到某个需要Web认证的热点之前,我们已经获得了一个内网IP,此时,如果我们访问某个HTTP网站,网关会对这个HTTP响应报文劫持并篡改,302重定向给我们一个web认证界面(所以点HTTPS的网站是不可能跳转到web认证页面的)。详细原理可以戳这里

我们看到了,网关(或者说交换机)都默认放行DHCP 和DNS报文,也就是UDP53与UDP 67。有些网关甚至不会报文进行检查,这也就意味着任何形式的数据包都可以顺畅通过。

既然如此,我们就可以在公网搞一台服务器,然后借此来免费上网,顺便还能防止网络审计——再一次画了删除线的"免费",其实只是把钱花在服务器上了。我们这次免费上网的主要突破点就是UDP 53,当然了,据一位朋友实践,UDP 67也可以绕过Web认证,甚至是那些UDP 53无法绕过的热点。当然啦,TCP 53也行,毕竟DNS也有TCP的。

二. 环境检测

废话不多说了,连上热点并且不要进行认证,打开cmd(或者GNU/Linux的终端),输入如下内容

nslookup www.baidu.com

这是我的结果

UDP 53免费上网、DNS隧道经验谈

我在没有进行Web认证的情况下成功查询到的IP地址,但是我们并无法确定网关是放行了UDP 53的所有数据包还是只放行了DNS报文。所以我们要进一步测试下!如果连这都过不了,那还是洗洗睡吧。

2016年9月10日更新:用我的这个小工具试试吧(此工具测试的其实是TCP53,但是如果允许TCP,那么UDP也肯定没问题)

项目地址
去Git仓库下载源码,之后Linux用户运行

python UDP53.py

Windows用户直接双击dist下的udp.exe吧!

下图是Windows下的运行结果UDP 53免费上网、DNS隧道经验谈

有人会问,为何你两次nslookup得到的IP不同呢?想都不用想,百度肯定是在全国各地都部署了内容分发节点,就近访问啊。

三. 实战:允许任何类型数据包通过的网关(提示congratulations)

遇到这种情况,那就是人生中最幸运的事情啦!想法很简单,既然允许任何类型是数据通过UDP 53,那我就在外网搭建一个UDP 53的服务,然后连接上就好了。

使用UDP 53的OpenVPN(UDP 67同理)

这种情况我选择搭建OpenVPN的UDP 53(或者也可以试试UDP 67),搭建方法我已经在半年前的博文SoftEther VPN Server安装手记+福利提到了,只需要最后开启UDP 53的OpenVPN即可。

UDP 53免费上网、DNS隧道经验谈

PS,APP Store大陆区早就封杀了OpenVPN,我来给你们提供一个美国住址来注册美区账号吧

5200 Zoo Dr,Los Angeles, CA 90027
(323) 668-0104

其实用53端口的Shadowsocks也行,只是感觉没有OpenVPN这么方便迅速快捷...至于效率,未知。
如果此时抓包,咱能发现,wireshark会告诉咱DNS协议下那些都是malformed packet,必然呐……

四. 实战:仅允许DNS报文通过的网关(提示sad face)

这种情况下,我劝你还是放弃吧。但是并不是不可以免费上网,有一种技术叫做DNS隧道,还有Ping隧道→_→人们为了免费上网还真是什么方法都用上了啊。

据称在某些情况下DNS隧道效果也很好,我没有测试过

万能的SoftEther VPN Server同样提供了这个略显鸡肋的功能

加密与网络-VPN over ICMP / DNS 设置

UDP 53免费上网、DNS隧道经验谈

注意,需要使用SoftEther VPN Client 管理工具4.0以上,VPN over DNS不可以与OpenVPN with UDP 53共存。

之后在SoftEther VPN Client 管理工具中新建连接,填入相关信息即可。

这里我的测试不太多,我从国外论坛上找到这么一句话:

Softether client got it's TCP protocol on top of it's priority as it's the stable one, UDP on Nat-t comes next, then ICMP and then DNS. of all these protocol only the vpn over DNS did not work for me as it fails to retrieve the right ip and gateway.

SoftEther VPN Client先尝试TCP协议,然后尝试UDP on Nat-t,然后再Ping隧道和DNS隧道。

下图是勉强成功建立DNS隧道的截图。

UDP 53免费上网、DNS隧道经验谈

五. 注意事项

1.速度

允许所有数据包通过UDP 53的情况下,速度主要取决于你的服务器的出网带宽热点本身的网速

2.IP问题

服务器在外地,所以淘宝支付宝之类的需要验证码之类的。以后如果申诉也要记得把登陆地区选上服务器所在地。

3.安全问题

某些热点是公开的、没有密码保护的,所以可以很轻松的搞中间人攻击——甚至是root的Android手机都可以做到。而OpenVPN可以防止中间人攻击(配置文件里有服务器的证书),同时我使用了AES-128-CBC加密,搞定网络审计简直是轻轻松松的。

六. 服务器的选购

国内VPS价格普遍离谱,恰巧我还是学生党,也算捡到了大便宜→_→不是学生党谁想着免费上网的心思啊?

其实大部分人最关心的问题还是速度吧!

UDP 53的OpenVPN速度主要限制就在热点本身的速度和服务器的出口带宽速度。腾讯云学生版带宽都是1Mbps,所以限制基本就是服务器出口带宽了……

所以下面给大家贴出来我在腾讯云和阿里云撕逼的经验(传说七牛今年也会推出云主机,我很期待啊

腾讯云:

策略是,每个月赠送"满65元减64元"优惠券,包年包月1核1G内存1Mbps恰巧是65元。至于你怎么凑满那65元,是没有限制的。但说实话,要是选择按流量计费,那流量是很不耐用的...!

阿里云:

价格要比腾讯云稍微贵一点点(接近十块钱),但是可以在购买界面直接选择其他数值的峰值带宽,并且每月赠送15G出网流量。

但是,他丫的要签到!自己看去……

UDP 53免费上网、DNS隧道经验谈

国内学生云服务器优惠也就这两个马家了……

七.买不起服务器、不会搭建、网速太慢

这你叫我咋办。

八. 最后

给大家看看百度的广告,或者是"推广"吧。

TMD整个第一屏都是广告,没有一个字和学生二字贴边。

UDP 53免费上网、DNS隧道经验谈

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://www.bennythink.com/udp53.html
喜欢 (24)
分享:-)
Benny小土豆
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(78)个小伙伴在吐槽
  1. dalao,按照上面的提示开启了VPN over ICMP / DNS 设置,但是客户端提示连接失败了。。(连着需要认证的WiFi)
    Lyceum2017-09-21 18:17 回复
    • Benny小土豆
      唔……这个我也不太清楚了,你在正常网络下试试排除下原因。
      Benny小土豆2017-09-21 22:59 回复
  2. dalao,我按你说的配置完了softether,但是生成openvpn的配置文件在客户端上连不上,是不是要改什么东西(我服务器是windows server 2008是不是得用linux)
    zsqtai2017-09-11 12:13 回复
    • Benny小土豆
      服务器是Windows也可以。 你先在正常的网络环境下做做测试看能不能连接上,排除下是配置的原因还是网络的原因。
      Benny小土豆2017-09-11 12:55 回复
      • 在正常网络环境也不行,是sofrether生成的配置文件要修改吗
        zsqtai2017-09-11 13:44
      • Benny小土豆
        正常环境也不行,那可能是你配置错了,或者检查下服务器的防火墙配置什么的
        Benny小土豆2017-09-11 14:36
  3. 我开了全局,其他设置是默认的,手机和电脑都不可以绕过验证
    叶飘零2017-09-04 22:19 回复
    • Benny小土豆
      工具测试通过了吧?那你只能用OpenVPN了。
      Benny小土豆2017-09-04 22:20 回复
      • 测试确实通过了,openvpn也是可行的,因为国内只有腾讯的学生机,带宽太小,所以想尝试一下ss。开始我以为是ss使用的不是udp连接导致失败,随后我使用kcptun来转为udp,可是发现还是不行。我觉得ss+kcptun理论上是可行的,也许是某个地方出了问题导致无法连接到服务器或者连接到了服务器但并不能上网,我再试试吧,谢谢博主。
        叶飘零2017-09-04 22:25
      • Benny小土豆
        脚本测试的是TCP 53发出连接请求,ss是TCP应用,应该可以的啊……要不就老实OpenVPN吧,哈哈,
        Benny小土豆2017-09-04 22:28
      • 是啊,我也觉得很奇怪,我还是去腾讯云搭一个将就用吧。
        叶飘零2017-09-04 22:29
      • Benny小土豆
        有待后续研究!
        Benny小土豆2017-09-04 22:32
  4. 博主知道为什么nslookup我用学校dns服务器就失败,用公共比如114.114.114.114就可以吗 然后我想用ssr+kcptun+国外vps方案,能否实现?
    ~ ~2017-09-01 15:48 回复
    • Benny小土豆
      你好,你说的用学校dns进行nslookup失败是什么意思?无法查询到某些域名对应的IP? 第二个问题,只要你能通过那个脚本的测试(脚本测试的是TCP 53),那么用53端口的ss、ssr就可以,记得设置成全局。
      Benny小土豆2017-09-01 16:42 回复
      • 我找到问题了 是我设置了IPV6 DNS 导致失败。那个还有个问题 ssr你是怎么弄的53端口。我服务器上添加了53端口,但是本地连接没反应(不管有没有接入校园网),然后用kcptun也提示没有53加速端口,小白求教
        ~ ~2017-09-01 20:28
      • Benny小土豆
        如果你确定服务端设置对了,客户端也设置对了,校园网也放行53,那么就应该是可以的。
        Benny小土豆2017-09-01 21:31
    • 你好,请问你成功了吗?我用ss+53并不行,ss+kcptun也不行
      叶飘零2017-09-04 22:10 回复
      • Benny小土豆
        你好,先用脚本测试看看结果如何。
        Benny小土豆2017-09-04 22:12
  5. 请问下Softether怎么做DNS隧道?我想过大学校园网
    苦逼学生2017-08-31 22:54 回复
    • Benny小土豆
      请仔细阅读。
      Benny小土豆2017-08-31 23:26 回复
  6. 今天去测试了一下CMCC-WEB,然而并不能连接上服务器... 我想请教一下,上文中"加密与网络"里面设置的dns模式和openVPN直接设置53端口有什么区别呢? 我貌似不知道如何使用ICMP / DNS模式.... 我是直接在openVPN里面设置好53端口,然后导出文件,再在手机载入的....
    永远的萌新2017-08-24 20:21 回复
    • Benny小土豆
      据我测试,CMCC这一系列都没办法直接用UDP/TCP 53端口的应用的。
      加密与网络中的“DNS模式”实际上指的是DNS隧道,我们普通设置的53端口只是利用了web认证必须开放UDP 53(DNS服务)和UDP 67(DHCP服务)这个原理(估计CMCC是对UDP 53的报文进行了过滤)。普通的UDP 53可能不管用,也许67会好用,但是DNS隧道一定是好用的,就是速度不敢恭维。
      如何设置DNS隧道的话,在管理面板里的“加密与网络”开启这个功能(不能与OpenVPN的53端口并存),然后用SoftEther VPN Client试试连接,他会自动尝试协议。 如果使用OpenVPN,那么就是常规的去设置个53端口,导出配置文件,然后在手机/PC的应用上使用这个配置文件。
      Benny小土豆2017-08-24 22:35 回复
      • 普通的使用openVPN连接还是可以的,附近没有cmcc了,所以测试只能放弃了;web服务器内网穿透也失败了,只能连接到openVPN设定的53端口....再次感谢dalao你的教程~
        永远的萌新2017-08-24 23:58
      • Benny小土豆
        哈哈,没事,有问题来问我~
        Benny小土豆2017-08-25 09:03
  7. emmm,博主能出个纯小白的教程嘛,想蹭免费的网,教程又看不懂。
    维他爱柠檬2017-08-24 15:21 回复
  8. 感谢博主,请教博主在Shadowsocks中如何使用UDP53端口呢?
    HW_zz2017-08-22 22:48 回复
    • Benny小土豆
      你好,这个你可以去搜一搜,我不太清楚(Shadowsocks是TCP应用)。但实际上在大部分情况下,TCP 53也是可以的,上面脚本就是测试的TCP 53,所以直接搭建个53端口的Shadowsocks就差不多了。
      Benny小土豆2017-08-22 22:54 回复
      • 博主你好,我在实际测试的时候,直接ss+53并不能成功,但是实际上是可以突破的,因为我用openvpn测试过了。
        叶飘零2017-09-04 22:12
      • Benny小土豆
        按理说应该可以的,不知道你是否把ss的代理模式改成了全局?
        Benny小土豆2017-09-04 22:13
  9. 感谢教程~ 请问一下,CMCC-WEB,或者那些酒店里需要关注微信才能上网的WiFi,也可以使用这个方法吗?
    永远的萌新2017-07-31 18:13 回复
    • Benny小土豆
      你好,感谢来访。 基本上所有情况下,DNS隧道都是可行的。你可以使用文中提到的工具测试下!
      Benny小土豆2017-07-31 18:16 回复
      • 哇~这么快就回复了~ 再次感谢~如果找到这样的WiFi,我会试试看的~
        永远的萌新2017-07-31 18:18
      • Benny小土豆
        因为,我在玩手机呀😂
        Benny小土豆2017-07-31 18:23
      • 诶....原来如此~是得到了评论的通知吗~ 我也好想搭建一个这样的博客啊....然而并不知道该如何做... 页面上的雪花飘落效果超好看的~ 总之先看看你的各种文章提高知识水平~
        永远的萌新2017-07-31 18:27
      • Benny小土豆
        是呀,默认情况下你也应该收到了回复评论的邮件提醒。关于博客的话,页脚可以看到是搭建在vultr的WordPress, 主题你可以看这里,可以RSS订阅喔!
        Benny小土豆2017-07-31 18:36
      • 我在本地用Ubuntu下搭建了lamp,正在探索ing~ 我也是使用WordPress,在尝试和学习各种插件和主题的搭配~ RSS什么的....不太清楚...总之经常来看可以吗?(会不会有流量限额什么的...)
        永远的萌新2017-07-31 19:26
      • Benny小土豆
        哇,本地测试啊,开发主题的时候咱都是这么干的。RSS你可以用任何一款RSS订阅器订阅,这样就不用来回刷新看我更新没了。博客随便看呀,没有流量什么的限制,欢迎随时造访:-)
        Benny小土豆2017-07-31 20:07
      • 嗯嗯~那我以后经常来学习好了~再次再次感谢~
        永远的萌新2017-07-31 20:11
      • Benny小土豆
        :-)好哒,有问题也可以来戳我~
        Benny小土豆2017-07-31 20:12
  10. 感觉这个方法就是用NAT网关做了个防弹衣,然后udp53的万能隧道走网关上的代理来保证安全性。但归根结底还是要花钱的样子...而且你这速度...不知道有多快?
    atom19902017-02-26 22:40 回复
  11. 再次发言: 最近试了一下Azure新加坡机房。 1.搭建好softether的openVPN之后,能连接,且连接稳定从未掉线,但是不能访问诸多网页,却可以google搜索和看youtube。 2.之前也有用过Vultr的日本机房来搭建softether,能上网但是极易掉线。 3.python版的shadowsocks搭建好后连不上,53+全局;用移动数据上网后能连上但是速度较之前的9000端口慢。 希望和大家讨论一下。
    godstick2017-02-26 14:00 回复
    • Benny小土豆
      Hi, 欢迎再次造访。如果使用国外的服务器的话,最好还不要使用OpenVPN为好,OpenVPN连接的过程中会验证证书,特征比较明显,比较容易被封杀; Python版ss绕过web认证,我的测试不是很充分,如果为了绕过认证,还是推荐OpenVPN吧!
      Benny小土豆2017-02-26 14:27 回复
      • 刚刚重新开了一台虚拟机,azure的经典虚拟机,之前不知道是不是安装了锐速的原因导致不能上网。 连接比较稳定(从未掉过线),只是速度较不稳,有时1M+/s,有时50k/s,估计不是服务器的问题,因为我用服务器做了一个speedtest的测试,速度非常快,应该是千兆网络。所以难道是中途某个线路限制了速度?请问一下有没有相关的软件能测试在哪个环节被限速了呢? 另外,我用了下路由追踪,我这四川电信--广东--香港--新加坡,延迟80ms。所以用国外VPS来同时绕过上网认证和翻墙是可行的。
        godstick2017-02-26 20:31
      • Benny小土豆
        Hi, 通常来说我们基本上不用质疑服务器的网速,关键因素主要在选择的科学上网方式、国际出口拥堵程度、自己的带宽、线路路由表等。或许你可以试试SSR,以前用过一小段时间。PS,据说4.9内核的BBR算法不错,但是不知道azure是什么架构,KVM和Xen都可以升级内核。
        Benny小土豆2017-02-26 20:35
      • 有朋友告诉我说azure用锐速效果明显好于BBR,但是我也没测试。 但是我有一个问题,openvpn好像是基于UDP协议,但是锐速、BBR之类的加速软件似乎都是加速TCP协议的,所以我有点懵了,它们究竟能不能用于openvpn呢?
        godstick2017-02-26 20:49
      • Benny小土豆
        嗯Open是UDP协议的,BBR是TCP拥塞控制算法之一。但是不知道为何Python版的SS测试通过了,没有细究。想要翻墙和免认证兼得,那有些困难;不过如果能够在国内的服务器上做一些工作处理下,比如说运行个蓝灯什么的或许会好用(我一直没成功过)
        Benny小土豆2017-02-26 20:52
      • 咦,后面条消息怎么没法回复呢? 我试了一下SSR用53端口,听说SSR是支持UDP转发的。 不过呢我突然想到一个可能导致我之前ss连不上的原因,那就是难道openvpn占用了53端口,所以SS无法连接。
        godstick2017-02-26 21:05
      • Benny小土豆
        对的UDP转发,具体没研究过,你可以试试呀!端口被占用当然不行啦
        Benny小土豆2017-02-26 21:11
    • openvpn绝对是被GFW干扰造成掉线和不稳定,因为协议特征太明显。ss连不上首先考虑防火墙规则是否开放了端口。
      atom19902017-02-26 22:18 回复
      • 不不不,后来我重新开了一台虚拟机之后openvpn没有问题了。 感觉azure的新加坡挺稳定的,还没出现过掉线的情况;之前vultr日本出现过掉线的情况;假如香港vps的话应该更加稳定。 ss的问题嘛,应该是端口被占用。
        godstick2017-02-26 22:23
  12. 大神请收下我的膝盖....
    小川先生2016-12-18 12:22 回复
    • Benny小土豆
      Hi感谢来访, 看到你的ACM那些,我都想把室友的膝盖也送了哎
      Benny小土豆2016-12-18 12:32 回复
  13. 咱一般都用uTP tunnel……
    TJM2016-12-14 16:17 回复
    • Benny小土豆
      感谢来访,我一定是out了没听过这东东
      Benny小土豆2016-12-14 16:37 回复
      • Micro Transport Protocol啊~bt搞的那一套……
        TJM2016-12-14 17:24
      • Benny小土豆
        凹凸曼了,完全没听过
        Benny小土豆2016-12-14 17:47
  14. openvpn android版报错:OpenVPN server certificate verification failed:PolarSSL:SSL read error:X509-Certificate verification failed,e.g.CRL,CA or signature check failed. openvpn windows版连接时循环在:MANAGEMENT: >STATE:1481090896,RECONNECTING,tls-error,, Restart pause, 2 second(s)
    godstick2016-12-07 14:09 回复
    • Benny小土豆
      这两个问题都是因为证书错误,建议你检查下服务端和客户端的证书。
      Benny小土豆2016-12-07 17:45 回复
  15. 我发现了一个问题,就是连接上openvpn后 QQ会掉线,不知道为什么,但是openvpn并不会断开,玩游戏也是会掉线,但openvpn并不会断开
    Jackson2016-10-16 17:12 回复
    • Benny小土豆
      不稳定呗~??
      Benny小土豆2016-10-16 20:07 回复
      • 国内啊服务器啊 有什么办法吗
        Jackson2016-10-18 06:58
      • Benny小土豆
        我还算稳定。目前我也不太清楚有什么好的办法,原因也不太清楚。
        Benny小土豆2016-10-18 13:11
  16. 新姿势 get√
    迎風别葉index2016-10-11 10:15 回复
    • Benny小土豆
      get success
      
      Benny小土豆2016-10-11 21:16 回复
  17. 请问国外的vps有时候掉线的很厉害,有时候蛮稳定的,这是什么原因呢?udp53
    Jackson2016-09-28 22:27 回复
    • Benny小土豆
      连接到国外vps要经过GFW,而OpenVPN连接过程的特征比较明显(证书交换、UDP),所以有可能是被GFW干扰。如果利用国外vps翻墙,推荐用shadowsocks这类特征不是很明显的私有协议。
      Benny小土豆2016-09-28 22:34 回复
      • 但是使用您所说的,我监听53之后并不能绕过认证
        Jackson2016-09-29 07:20
      • Benny小土豆
        不同热点对UDP 53处理不同,上面提供了一个小工具,可以检测下
        Benny小土豆2016-09-29 07:28
      • 噢不是的,我是已经可以用UDP53端口绕过认证了,我是说用国外VPS搭建softether可以绕过认证,但是不稳定,老掉线,国内阿里云确是很稳定。你也说过可能是被GFW干扰,所以推荐我用shadowsocks,所以想问一下,我已经搭建好了shadowsocksR,并且端口也改为53端口,但不能绕过认证,请问是哪里出错了?
        Jackson2016-09-29 14:16
      • Benny小土豆
        嗯....看看能不能搞个UDP的Shadowsocks..:-)
        Benny小土豆2016-09-29 14:21
      • 回复: 试过SS-libev,go,de等版本了,不知道那个是你说的UDP的Shadowsocks,请问能否提供一下具体的版本或者方法?如果可以能否邮件联系呢?这个博客好像不能及时回复最新内容,xxxxx@qq.com
        Jackson2016-09-29 14:30
  18. Benny小土豆
    这孩子甚至都在想黑了某个内网的服务器,然后开代理...
    Benny小土豆2016-05-24 17:17 回复
    • 我就是……确切的说,是学长黑的,我要来了数据库,嗯,虽然有点旧了,但跑一跑,还是有大把的教师和学生资源可以用,所以我可以几十块钱“用”一个学期的网。
      R0uter2017-02-22 10:14 回复
      • Benny小土豆
        哎妈呀,兄弟你也忒有才了,这是我一辈子的梦想啊/(ㄒoㄒ)/~~ :!:
        Benny小土豆2017-02-22 10:16
      • 也是我一辈子的梦想……学长实现了。我只是要来了他脱下的学校的裤罢了。 虽然密码是md5的,但学校默认密码都是身份证后六位,所以我自己写了个脚本来穷举并md5做了个字典,分分钟跑出一大半哈哈哈
        R0uter2017-02-22 10:19
  19. 这孩子想法真多,我也涨见识了
    luobod2016-05-24 17:00 回复