关于ICMP隧道一点理解(起于修改wien-qq的记住密码)
起
使用linux半年多以来,一直有一个我很需要但我无法完美解决的东西困扰这我-----(linux QQ)
目前我的解决方案是GitHub上的一个第三方QQ(有关ICMP隧道的搭建见 承,转)
但是第三方总是有些小毛病(无法向个人发送文件)
于是我有走上了那条老路,使用wine来兼容WindowsQQ(这里没有选择deepin-wine,我印象中deepin的wine还停留在2.几)
然后我就遇到了这个跟ICMP有一点点关系的问题(关系不大,但我当时确实是想解决QQ的问题)
wine-qq一直有一个无法解决的问题(无法记住密码),也就是说只要我网一断我就得重新登录一下我的QQ(还要再输一次密码)
我大概分析了一下它的原因:
每次断网重连QQ都会提醒我检查防火墙什么的(wine哪来的防火墙),不过这给了我提示
有可能是断网之后wine重置了分配给QQ的网络资源,导致QQ无法使用原来的网络配置,最终致使QQ无法联网
然后好巧不巧,我发现QQ支持代理这个功能(也就是可以指定QQ的流量使用什么网络配置)然后我用我服务器的代理给QQ挂上了
bingo,我成功了,从此我的wine-QQ可以记住密码了
但是有些人就是上头(me),没有问题也要创造问题
我觉得用服务器的代理太麻烦了(万一服务器到期就没了)
所以我想找一个本地的代理,让我的主机代理主机里wine的QQ
先说一下结果
我没能成功找到我觉得合适的方法(要么就是太占用资源,没必要,要么就是没法用)
buttttt,在找的过程中我发现了这个ICMP隧道代理(扯这么久终于扯到ICMP了)
承
OK,从这里开始就和linux QQ没任何关系了
首先,什么是ICMP?
举个最简单的栗子,ping的数据包就是通过ICMP协议传输的
........
很明显可以看出来icmp数据包是有一个data部分,而data里面的数据在ping这个指令里就是一堆连续的字符,在Windows里面默认值是"abcdefghijklmn......... hi",一瞬间感觉网络世界好单纯,有意思
不过有默认值那就说明里面填充的data是可以自定义的,
所以我们可以自定义要传输的数据(这就是隧道)然后交给指定的服务端
最后要说道的一个重要的知识点(很重要,那笔记下来):
ICMP的数据包是由系统底层进行处理的一般应用是接触不到icmp数据包(所以icmp数据包可以直接穿透防火墙,是不是有了什么奇妙的想法、注:网络不是什么法外之地)
而且就算服务端收到了你处理好的icmp数据包,它这么知道要去data字段找内容
下面就要说道ICMP隧道最重要的部分了
icmptunnel
这里直接放过地址自己看 https://github.com/DhavalKapil/icmptunnel
转
好的~ 该介绍的知识也介绍的差不多了,那就直接动手
这次我用我主机通过icmp隧道链接我的阿里云服务器
1.关闭系统对icmp数据包的处理机制(这也是为什么icmp隧道能分辨初隧道流量,因为真实的ICMP流量已经被系统忽略了)
这里直接给出命令:
sudo su #进入root用户
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #这里不要用vim ,nano等打开,只能用echo写入
客户端和服务端都要配置,通过icmp_echo_ignore_all很容易理解就是忽略所有的icmp请求
2.在服务端启动icmptunnel
下载icmptunnel的文件包,编译好之后(按照github上的步骤编译),进入到icmptunnel可执行文件的位置
sudo su #进入root用户,icmp设局内核层无法在普通用户上操作
./icmptunnel -s & #开启icmptunnel服务端的进程,它应该会提醒你新建了一个tun0的网卡
ifconfig tun0 110.11.12.1 netmask 255.255.255.0 #配置一下网卡这里ip地址可以随便设,但不要太随便(10.0.0.1最好,我这里就举个栗子),然后子网掩码什么的不懂就直接抄我这份(主要是不想换行写注释)
至此服务端就配置好了
3客户端链接icmptunnel
同样也是编译好,进入对应文件夹
sudo su #进入root用户
./icmptunnel 36.89.42.97 & #这中间的ip地址是服务端的公网ip,也就是说是我云服务器的ip(当然这里是我编的),运行玩之后应该会告诉你链接成功
ifconfig 110.11.12.2 netmask 255.255.255.0 #注意配置ip是前面三段一定要是一样的(因为这里的子网掩码是255.255.255.0)最后一段任意,如果服务端的是10.0.0.1,这里就是10.0.0.2
先不要关闭终端(这个终端还能用,好像关了服务就停了)
至此icmp隧道就完成了,你可以在你的电脑上以110.11.12.1的ip对110.11.12.2(也就是你的云服务器的隧道ip)进行访问,比如说ssh,fth,sftp.....
最后我晒一下我的结果

应该都打上码了吧
合
虽然不知道这么就从linuxqq的问题扯到了ICMP隧道,但整一整确实挺有意思的
不过icmp隧道最终也没有用到我的qq上,主要是太麻烦
但有一点确实值得强调(icmp是可以穿过防火墙的),也就是说有可能你的服务器就被别人用icmp隧道控制着你的电脑
当然这个可能性很小,icmp隧道的要求太高了
如果你不放心等话可以检查一下系统是否可以收到ping的数据包,可以收到就说明没有icmp隧道(应该是这样的吧)
最后说一下转载我的博客可以直接和我联系,不要直接把别人的博客复制过去然后还TMD投原创
嗯~~,一晚上没睡,现在去补个觉~~~~~
关于ICMP隧道一点理解(起于修改wien-qq的记住密码)的更多相关文章
- angular.js的一点理解
对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...
- 绕过边界防火墙之ICMP隧道、HTTP隧道、UDP隧道
一.ICMP隧道 背景:已经通过某种手段拿到了园区网A主机的控制权,但是边界防火墙只放行该主机向外的ICMP流量,此时怎样才能让A主机和公网主机C建立TCP连接呢? 方案:将TCP包内容包裹在ICMP ...
- ICMP隧道 ptunnle
通过ICMP echo(ping request)和reply(ping reply)实现隧道 适用于防火墙只允许ping出站流量的环境 支持多并发连接,性能优 支持身份验证 使用时需要root用户 ...
- icmp隧道手工操作
ICMP协议被用于检测网络连通状态的协议,通常情况下,防火墙会默认放过该协议. 渗透测试中经常出现一种情况是,我们通过某一种方式取得了一台主机的权限,得到了一些文件,比如域hash,密码文件之类的东西 ...
- 三层架构的一点理解以及Dapper一对多查询
1.首先说一下自己对三层架构的一点理解 论坛里经常说会出现喜欢面相对象的写法,所以使用EF的,我个人觉得他俩没啥关系,先别反对,先听听我怎么说吧. 三层架构,基本都快说烂了,但今天还是说三层架构:UI ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
- RxSwift 入坑好多天 - 终于有了一点理解
一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...
随机推荐
- mongodb基础整理篇————设计[四]
前言 简单整理一下mongodb的设计. 正文 设计三步曲: 第一步:建立基础文档模型 例子: 1对1建模: 1 对多建模: N对N模型: 第二步: 根据读写况细化 遇到的问题: 解决: 查询连表: ...
- jenkins 持续集成和交付——一个构件小栗子前置(三)
前言 下面介绍构建一个小栗子. 在此之前有个小前提,就是已经安装好了git 服务器,用的是gogs,详细请看外篇. 正文 插件安装 首先你要安装一个git插件. 装完git插件后,我们还得安装一些gi ...
- Windows家庭版开启远程桌面的方法
一.背景介绍 Windows家庭版提示不支持远程桌面,如下图Windows11家庭版: 本文将介绍一种Windows家庭版开启远程桌面的方法,分为开启远程桌面设置.配置问题排查及解决: 安装远程桌面补 ...
- 《c#高级编程》第2章C#2.0中的更改(三)——迭代器
一.概念 C#迭代器(Iterator)是一种特殊类型的方法,它使得在使用循环遍历数据集合时更加简单和有效.使用迭代器可以通过简单地定义迭代器方法来自动实现枚举器模式. 当您需要访问一个数据集合中的每 ...
- 《领域驱动设计》:从领域视角深入仓储(Repository)的设计和实现
简介: <领域驱动设计>中的Repository(下面将用仓储表示)层实际上是极具有挑战性的,对于它的理解,也十分重要.本文讲大部分内容都在众多前辈理论基础上,从一个崭新的领域视觉开始探索 ...
- 如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践
简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户 ...
- Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?
简介: 本文作者关涛是大数据系统领域的资深专家,在微软(互联网/Azure云事业群)和阿里巴巴(阿里云)经历了大数据发展20年过程中的后15年.本文试从系统架构的角度,就大数据架构热点,每条技术线的 ...
- [公链观点] BTC 1.0, ETH 2.0, EOS 3.0, Dapp, WASM, DOT, ADA, VNT
Dapp 发展史 WASM 兼容Web的编码方式 Cardano(ADA 艾达币) 权益挖矿 VNT chain 解决联盟链和公链的跨链基础项目 跨链项目 Polkadot (DOT 波卡币) 是不是 ...
- WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响
本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 远古时候,不知道大佬是故意还是失 ...
- 为何 WPF 对 vcruntime140 有引用
通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因 在独立发布的时候,可以在仓库里面找到 vcruntime140.dll 这 ...