打破容器的界限——使用nsenter实现Docker“内网穿透”

Docker 是个好东西,我们都知道。它的优点就是“隔离”,所有的依赖、监听的网络端口、运行产生的垃圾文件都被隔离在Docker容器里,应用数据、日志、服务端口被 Docker 以统一的形式暴露出来,简单且易维护。

但它的缺点,也是“隔离”。在生产环境中,我们当然认为最干净的环境是最好的,但一旦某些bug暴露出来,需要我们去对容器中的服务进行操作时,比如写个Python、修改数据库内容、调试服务连通性,就到了令人头痛的时候了。在容器里, dignetstat 这种豪华的工具自然不能指望,有的容器里连 wgetcurl 这种最基本的命令行工具都没有。怎么办呢?

一般来讲,我们有两种选择。一是把服务端口暴露出来,在容器外面连接暴露端口进行操作。二是在容器内安装我们需要的调试工具、运行环境,或将必要的工具 bind mount 进去,在容器内部进行操作。但这两种方式,各有优点,也各有缺点。所以今天,我们试一试第三种选择——使用 nsenter 工具,让宿主机上的程序“借用” Docker 容器的运行上下文 [1] (主要是网络与进程namespace),打破容器内外的界限,方便开发者利用宿主机上的工具快速解决问题。

同时,文中还会分享我写的一个小脚本,通过我们宿主机 glibc 提供的一个特殊机制,优雅的解决容器内网域名解析的问题。我敢打包票,针对这个问题,我这个绝对是东半球第二好用的解决方案。

阅读更多

Docker自动化构建实例-OpenGrok

为什么我这么执着于这个OpenGrok呢,大概因为这是市面上唯一一个,像样子的代码审计工具了吧【摊手】

大概半年前看到了这个项目,就随手(其实shell恶心了我好久)写了一个构建脚本,当时在docker上调通了,就扔在那儿撒手不管了,种种原因没有派上用场。最近逆向一些东西比较多,在闲置多年的学生机上docker run起来一个,打开页面给我出来一个404??😅这我就不是很开心了。没办法重头撸了一遍当年写的Dockerfile,加上当年的想法成功实现了当年想实现的那些功能,包括但不限于:一键部署、索引自动更新、实时获取最新release、结合CI固定历史版本等等。

所以就填一下,自己写Dockerfile时掉进去过的那些坑。

阅读更多

免AOSP源码树编译安卓内核

为了让老 Note4 发挥余热,去掉该死的SELinux,编译一下内核,macOS编译不了,缺少elf.h,查查解决方案蛮麻烦的,干脆新开个ubuntu,顺便试用一下据说不错的苹果Hypervisor framework【性能+10,内存占用-50】。

传统交叉编译时需要checkout整个20多个G的安卓源码库,即使指定了shallow clone也要17、8G,本文将通过一些repo命令的黑魔法扔掉用不到的分支和项目,获得一个内核编译的轻量环境。

阅读更多

macOS 下编译集成 Python 3 的 GDB

2017-10-31更新:brew维护者明确表示需要上游合并,而从文末来看明显不可能合并了。我的PR在那放着也不会丢,从这个链接下载patch并自行apply即可。

Python是信仰。版本也是信仰的一部分。

开玩笑的啦。之所以非要自己编译,是因为gdb的某个插件不支持Py2.x。更何况,3比2在某些细节上更合我的口味。而brew的formula只支持可选链接brew版的python2,并没有3,只好自己研究一下咯。

其实让我最惊讶的是,主流发行版(如Ubuntu)有的已经把gdb链接到python3了,然而都几年了没人研究也没人提,网上也找不到——什么时候让mac也可以这么diao呀?

撰写本文时所使用的版本是GDB 8.0.1

阅读更多

Compile Kali Nethunter

黑客嘛,随身总要带一些行头,以满足处处装逼的欲望,于是他们发明了Kali Nethunter,把黑客精神随身装在手机里,行之所至,处处志之。行头哪里来?诶诶我不送,不送啊。黑客嘛,用自己的东西才叫牛逼,用别人的东西只能叫装逼。所以我在这讲一讲怎么把裤兜里刷微信玩游戏的手机统统变成“黑客手机”。

这两个月Cyanogen倒闭了,CM也改名叫LineageOS了,还紧跟潮流升级Android N(CM14.1)了,所有的工作都要推倒重来了。趁着重新来过的机会把以前的经验总结一下,一边给我手机升一边写教程,不用担心,步骤都是通用的哦~

阅读更多

碎屏手机改造移动路由

换了手机后,想专门配一个大流量的上网卡,良心联通15G/50元,但新办上网卡只有micro卡,而且新手机卡槽已然满了,一个4G卡托要一百多,还要插我那个电池垃圾不行的移动路由……怎么说我那破手机还是一个卡槽全网通啊!(而且心疼钱。)想想用这破手机实现也不难,无非是开机打开热点而已了。

开始从固件上入手,不过垃圾国行特供版少有开源固件,还要熟悉安卓启动机制,卒。转而寻求软件实现。发现也不难,从商店里下了几个热门的安卓自动化软件,简单说一下自己的体验。

在这之前,要先恢复手机到最佳状态。格掉吧!

阅读更多