使用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的记住密码)的更多相关文章

  1. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  2. 绕过边界防火墙之ICMP隧道、HTTP隧道、UDP隧道

    一.ICMP隧道 背景:已经通过某种手段拿到了园区网A主机的控制权,但是边界防火墙只放行该主机向外的ICMP流量,此时怎样才能让A主机和公网主机C建立TCP连接呢? 方案:将TCP包内容包裹在ICMP ...

  3. ICMP隧道 ptunnle

    通过ICMP echo(ping request)和reply(ping reply)实现隧道 适用于防火墙只允许ping出站流量的环境 支持多并发连接,性能优 支持身份验证 使用时需要root用户 ...

  4. icmp隧道手工操作

    ICMP协议被用于检测网络连通状态的协议,通常情况下,防火墙会默认放过该协议. 渗透测试中经常出现一种情况是,我们通过某一种方式取得了一台主机的权限,得到了一些文件,比如域hash,密码文件之类的东西 ...

  5. 三层架构的一点理解以及Dapper一对多查询

    1.首先说一下自己对三层架构的一点理解 论坛里经常说会出现喜欢面相对象的写法,所以使用EF的,我个人觉得他俩没啥关系,先别反对,先听听我怎么说吧. 三层架构,基本都快说烂了,但今天还是说三层架构:UI ...

  6. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  7. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  8. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  9. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  10. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

随机推荐

  1. mongodb基础整理篇————设计[四]

    前言 简单整理一下mongodb的设计. 正文 设计三步曲: 第一步:建立基础文档模型 例子: 1对1建模: 1 对多建模: N对N模型: 第二步: 根据读写况细化 遇到的问题: 解决: 查询连表: ...

  2. jenkins 持续集成和交付——一个构件小栗子前置(三)

    前言 下面介绍构建一个小栗子. 在此之前有个小前提,就是已经安装好了git 服务器,用的是gogs,详细请看外篇. 正文 插件安装 首先你要安装一个git插件. 装完git插件后,我们还得安装一些gi ...

  3. Windows家庭版开启远程桌面的方法

    一.背景介绍 Windows家庭版提示不支持远程桌面,如下图Windows11家庭版: 本文将介绍一种Windows家庭版开启远程桌面的方法,分为开启远程桌面设置.配置问题排查及解决: 安装远程桌面补 ...

  4. 《c#高级编程》第2章C#2.0中的更改(三)——迭代器

    一.概念 C#迭代器(Iterator)是一种特殊类型的方法,它使得在使用循环遍历数据集合时更加简单和有效.使用迭代器可以通过简单地定义迭代器方法来自动实现枚举器模式. 当您需要访问一个数据集合中的每 ...

  5. 《领域驱动设计》:从领域视角深入仓储(Repository)的设计和实现

    简介: <领域驱动设计>中的Repository(下面将用仓储表示)层实际上是极具有挑战性的,对于它的理解,也十分重要.本文讲大部分内容都在众多前辈理论基础上,从一个崭新的领域视觉开始探索 ...

  6. 如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

    简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户 ...

  7. Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?

    ​简介: 本文作者关涛是大数据系统领域的资深专家,在微软(互联网/Azure云事业群)和阿里巴巴(阿里云)经历了大数据发展20年过程中的后15年.本文试从系统架构的角度,就大数据架构热点,每条技术线的 ...

  8. [公链观点] BTC 1.0, ETH 2.0, EOS 3.0, Dapp, WASM, DOT, ADA, VNT

    Dapp 发展史 WASM 兼容Web的编码方式 Cardano(ADA 艾达币) 权益挖矿 VNT chain 解决联盟链和公链的跨链基础项目 跨链项目 Polkadot (DOT 波卡币) 是不是 ...

  9. WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响

    本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 远古时候,不知道大佬是故意还是失 ...

  10. 为何 WPF 对 vcruntime140 有引用

    通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因 在独立发布的时候,可以在仓库里面找到 vcruntime140.dll 这 ...