Twitter via Ping Tunnel

周四 Cola 没去幼儿园,中午带着他去 KFC 吃东西。回来的时候小林指着西总布胡同说走这条路回去还是原路返回,他说还是走原路吧!于是我们就骑着电动滑板车经由协和医院对面的外交部街西口回家。

Cola 知道这附近就是王府井,有这么几句对话「爸爸,我发现王府井这里有很多条路可以回家」,爸爸:「是啊,条条大路通罗马」,Cola:「条条大路通外交部街」,做为父亲的小林肯定了他的答案,觉得这小家伙还真会活学活用。

Facebook for iPhone @HOME

晚上在「NAS 路由挖矿」群,又有一波关于「软路由器」问题的讨论,小林和好友 Hoowa 差点被「软路由」给整蒙了,我们手头各种路由器不都是软件路由器吗?LEDE 及 OpenWrt 这些项目难道不都是软路由吗?

其实完全由硬件实现的 NAT 路由器其实非常少见,一般都会采用可以升级固件的方式来改进功能或协议。因即便纯硬件的方案也没有多少方案在使用,Hoowa 确定少量使用联发科NAT、高通DMA硬件方案,由于不灵活几乎没有纯硬件的实现。

Google via Ping Tunnel

其实以前我们用 FreeBSD 或者 Linux 做路由器,其实也是软路由,甚至用 Windows 当路由器也很正常,只是性能或功能也许不算很强大。小林理解可以在开放的架构上部署的系统就是软路由,如一般的电脑或者树莓派等都可以等,而事实上路由器刷 OpenWrt 本质上也没区别。

其实大可以考虑用 Mac mini 来跑跑看效率如何,Hoowa 说主要看网卡芯片在小包转发时候的效果怎么样了确定性能。到底怎样软路由好在哪?其实吧,也没有特别明确的定义,简单的说,刷微信朋友圈时不卡,抢红包总能得手,对还有流畅看 YouTube 4K 视频。刘韧补充道:「科学上网,切来切去太麻烦!有好的解决方案吗?」。

YouTube for Apple TV @HOME

其实小林前段时间写的文章就分享过一些方案,只要维护一份 IP 地址列表或者使用网络流行的功夫网列表即可,国内流量和国际流量自动路由很方便,小林现在随时 Facebook、Google、Twitter 和 YouTube 豪无障碍。

小林用了三级路由器,注意不是三层路由器。因为中国联通配了一个很烂的光猫 RG200O_V1A4 还不给管理权限,直接拨号后可以给 IP 机顶盒播放高清电视,还有可以接固话使用,同时还有 Wi-Fi 功能,就是经常搜索无线可以看到 CU_* 开头的热点。

Misstar Tools for MiRoute 2

除了联通的这一级路由器,小林在中间还有一个小米路由器2是刷了开发版,开启 SSH 后安装了 Misstar Tools 俗称 MT 工具箱,上面有个相对稳定可用的科学上网插件可以连接海外服务器,在这一级路由器做了 IP 分流,做到井水不犯河水,你走你的阳光道,我走我的独木桥。

最后一级无线路由器,是一组6个支持 Mesh 技术的腾达分布式路由 nova MW6,这一级才是解决了最后一公里的问题。喔,不,更准确的说是解决最后几米的问题,因为 2.4G 网络几乎是没法看高清电影的。而 5G 网络的距离又有限,如果存储电影的机器在几米之外,那么看蓝光级别的电影必卡。因此 Mesh 技术自动组网自动优化在这个时候才发挥了真正的作用,小林甚至还为直播用的电视机顶盒额外加了电猫避免走无线不够流畅。

因此小林的电脑访问外网,是要经过三个内部的网关才真正到达下一跳,好在内部的时延不是特别慢,以下是 traceroute www.google.com 的效果:

lin:~ lin$ traceroute www.google.comtraceroute to www.google.com (172.217.161.164), 64 hops max, 52 byte packets 1  192.168.5.1 (192.168.5.1)  4.308 ms  2.240 ms  2.452 ms # 腾达 2  xiaoqiang (192.168.31.1)  2.413 ms  2.210 ms  2.968 ms # 小米 3  192.168.1.1 (192.168.1.1)  3.189 ms  4.612 ms  2.663 ms # 贝尔 4  221.221.8.1 (221.221.8.1)  5.902 ms  5.742 ms  6.035 ms # 联通

Hoowa 甩了一句 ICMP 协议传输,小x 也说过考虑用 ICMP 传输,但要测试一下 NAT 的穿透效果。然后小林上网搜索看到好几款 ICMP Tunnel 的实现,曾经用过 SSH Tunnel、HTTP Tunnel,用过各种 UDP 打洞然后虚拟网卡实现或纯 VPN 方案等,方才发现条条大路通罗马。

Ping Tunnel 0.72版本更新于2011年,可从http://www.cs.uit.no/~daniels/PingTunnel/ 自行下载源码编译,也可以使用 apt-get 在服务器上快速安装,在 macOS 上系统上可使用 brew 快速安装。

# for Linuxapt-get install ptunnel# for macOSbrew install ptunnel

使用方法非常简单,在服务器端使用 root 身份,直接执行 ptunnel 就可以,当然真正使用可以用 nohup 等挂起在后台运行,可以加入 -m 参数设置并发的隧道数。服务器建议搭配 tinyproxy 辅助做为代理服务器则更为理想。

Starting the proxy (needs to run as root):

 [root #] ptunnel

客户端使用也要求有 root 权限,-p 为 Ping Tunnel 也就是做为代理的隧道主机,-lp 设置 TCP 监听端口,-da 期望转到哪台主机,-dp 相应的端口,-c 可以指定网卡,-m 和服务器相似的并发隧道,不出意外就开始转发了。

Starting a client (also needs root):

 [root #] ptunnel -p proxy.pingtunnel.com -lp 8000 -da login.domain.com -dp 22 -c eth0

And then using the tunnel to ssh to login.domain.com:

官方例子是用 ssh 指定 8000 端口用于转发到要登录的 login.domain.com 主机 22 端口连接 ssh 服务使用,直接用 ICMP 来做隧道的情况下连接另一台主机。

 [user $] ssh -p 8000 localhost

小林告诉大家一个透明 HTTP 转发方法,服务器端不需要做额外的修改,还是同样的方法,在客户端这里,8.8.8.8 指隧道主机请自行修改,本地监听 TCP 端口 8080,实际上转发到隧道主机本机的 8888 端口上,而 8888 是 Tinyproxy 一款轻量级 HTTP/HTTPS 代理服务器软件的默认端口,-m 参数指定并发数,-v 可显示相应日志的级别。在浏览器上指定客户端的 IP 地址或本机 127.0.0.1 端口设置为 8080 即可透过 ICMP Tunnel 实现科学上网。

# for Server

apt-get install tinyproxytinyproxyptunnel

# for Client

ptunnel -p 8.8.8.8 -lp 8080 -da 127.0.0.1 -dp 8888 -m 65535 -v 4

是的,小林亲测 ICMP Tunnel 确实可用,条条大路通罗马,不过这是一条羊肠小道,实在没有别的路可走的时候才适合派上用场,使用 Google 或Twitter 也许问题不大,使用 Facebook 或 YouTube 就有点吃力了。

粱肇新则表示:通过 ICMP 实现,穿透效果会比 UDP 好,估计它的 TCP 在 ICMP 上实现得比较粗糙。把 Google 的那个 TCP 在 UDP 之上的代码(QUIC 快速UDP网络连接)移到 ICMP 上面就会稳定很多,速度也会获得优化,估计会快不少。


‭‭‭‭哥林多后书‬ ‭13:14‬ “愿主耶稣基督的恩惠、上帝的慈爱、圣灵的感动常与你们众人同在!”

【延伸阅读】

  • 教你轻松在家看YouTube,废弃小米路由器再利用

  • Rabbit(Rabb.it),这只兔子让你自由访问YouTube和Netflix

  • Butterfly VPN起死回生成功刷入PandoraBox系统可支持SSR等(Butterfly Traveler 2.0)

  • 智能车就是计算机,无人车就是机器人

  • 使用Resilio Sync轻松构建跨平台P2P资源共享网络

  • 绘本推荐《BLOCKCHAIN for babies》

  • 那些年小林用过的下载软件

  • 中国互联网历史上第一个博客

  • 为什么说区块链是互联网的补丁?

  • 简晶的程序人生

  • 域名投资:切忌把家乡「情怀」当「商业」嗅觉

  • 一封20多年前来自瀛海威时空的电子邮件

  • 纪念 Web 30 年:说说小林和 Web 的那些事

  • 马化腾为什么要打破电信网和互联网的壁垒隔阂

  • 小林和腾讯不得不说的故事(完整篇)

谢谢您点「在看」并「分享」至朋友圈~

通过 ICMP 协议实现 Ping Tunnel 建立可穿透网络隧道相关推荐

  1. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

  2. python调用库实现返回ping的时延_python网络作业:使用python的socket库实现ICMP协议的ping...

    ICMP ping是您遇到过的最常见的网络扫描类型. 打开命令行提示符或终端并输入ping www.google.com非常容易. 为什么要在python中实现? 很多名牌大学喜欢考试用python的 ...

  3. ICMP协议的ping和tracert应用

    一.实验目的 1.掌握基于ICMP协议的ping和tracert的基本使用方法. 二.实验内容 1.完成ping命令的使用方法和结果演示. 2.完成tracert命令的使用方法和结果演示. 三.实验过 ...

  4. 原生socket使用ICMP协议实现ping单个或多个目标时发生窜包的解决方法

    问题描述 原生socket使用ICMP协议实现ping功能,网上代码很多了,我参考的是这本:王艳平,张越.Windows网络与通信程序设计[M].北京人民邮电出版社,2006. 代码逻辑也很清晰,先构 ...

  5. TCP/IP详解--学习笔记(4)-ICMP协议,ping和Traceroute

    1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...

  6. tcptracerte参数_TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】

    1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...

  7. 《TCP/IP详解》学习笔记(四):ICMP 协议、ping 和 Traceroute

    ICMP 协议介绍 前面讲到了,IP 协议并不是一个可靠的协议,它不保证数据被成功送达,那么自然的,保证数据送达的工作应该由其他的模块来完 成.其中一个重要的模块就是 ICMP(网络控制报文)协议. ...

  8. TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...

  9. c语言实现icmp协议ping命令,利用ICMP协议实现ping命令

    一.实现原理 ping利用ICMP协议包来侦测另一个主机是否可达.Ping的原理是使用了类型码为8的ICMP回送请求包,收到请求的主机则用类型码为0的ICMP回应报文.如果应答包和请求包的标示号.序号 ...

最新文章

  1. php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例
  2. labview与下位机通信的格式问题处理
  3. swift 学习- 14 -- 继承
  4. shiro教程(1)-基于url权限管理
  5. matplotlib一些常用知识点的整理,
  6. Python Dataframe转List
  7. java注册是什么意思_springcloud注册中心是什么意思?有什么作用?
  8. 多系统服务器数据备份软件,护卫神好备份系统
  9. 如何让五层楼都有wifi?
  10. 英雄会被表彰,这些技术与代码也将载入史册!
  11. Name or service not know
  12. (0.2.2)如何下载mysql数据库(二进制、RPM、源码、YUM源)
  13. 再次提升2%,仅85K参数的开源人脸检测算法
  14. 三菱M70M700数控系统简明调试手册 PLC编程手册 设定手册
  15. 看_那人好像一个产品狗_对_这就是产品狗
  16. 配置Dot1q终结子接口实现跨设备VLAN间通信示例
  17. 零费用学习网络营销,小伙伴们惊呆了
  18. c/c++编程笔记:日期时间处理
  19. MBA-day7数学-路程问题
  20. 夏有乔木雅望天堂2018.6.27

热门文章

  1. r语言python0基础_万丈高楼平地起,从零开始学R语(生信分析向,R语言基础)...
  2. 月入万元或不需缴税!九张图带你看懂个税新规
  3. java web课程设计之图书管理系统
  4. python键盘控制_python实现键盘控制鼠标移动
  5. 新一代防泄密系统即将发布
  6. 全世android手机,全世界最安全手机:黑莓第二款Android手机DTEK 50
  7. 安卓开发代码工程结构(2)
  8. SpringBoot项目目录结构(工程结构)
  9. Android调用getSimSerialNumber获取iccid不完整(RK3288 7.1.2)
  10. ctab提取dna流程图_CTAB法提取植物DNA原理以及步骤