熊喵君的博客

Thinking will not overcome fear but action will.

Linux Namespace && Cgroup

Linux 系统资源隔离与管理机制介绍

0x00 前言 Linux Namespace 和 Cgroup 都是 Linux 内核的功能,用于隔离和管理系统资源,但它们的目标和方法有所不同 cgroup = limits how much you can use; namespaces = limits what you can see (and therefore use) Linux Namespace 主要用...

DPI with go:构建一个流量分析系统

golang 的包处理:gopacket

0x00 前言 项目中需要实现一些基本的流量分析功能,借用了 gopacket 库,该库是 libpcap 和 npcap 的 go 封装,提供了更方便的 go 语言操作接口。通常网络抓包有以下几个步骤: 枚举主机上网络设备的接口 针对某一网口进行抓包 解析数据包的 mac 层、ip 层、tcp/udp 层字段等 ip 分片重组,或 tcp 分段重组成上层协议如 ht...

Pprof 调试经验汇总

0x00 前言 0x01 DEBUG 汇总 调用图 安装 yum install graphviz go tool pprof main http://localhost:8000/debug/pprof/heap 或者 goroutine,进入命令行 输入 svg 命令即可保存 火焰图 安装 FlameGraph,如下 安装 go-torch...

frp穿透项目:设计与分析(一)

0x00 前言 架构 参考 frp 内网穿透

Envoy 应用入门(TODO)

0x00 前言 Envoy 是一个开源的边缘服务代理,也是 Istio Service Mesh 默认的数据平面,专为云原生应用程序设计。与 HAProxy 以及 Nginx 等传统 Proxy 依赖静态配置文件来定义各种资源以及数据转发规则不同,Envoy 几乎所有配置都可以通过订阅来动态获取。对应的发现服务以及各种各样的 API 统称为 xDS。Envoy 与 xDS 之间通过 P...

重拾 Linux 网络(五):TCP/IP 协议栈回顾

工作中遇到的那些协议栈相关的知识点汇总(基于 google-netstack 的应用开发)

0x00 前言 本文汇总下笔者在近期工作中遇到的与 TCP/IP 协议栈相关的知识点汇总 Linux内核网络数据收发流程 1、Linux网络接收数据包流程如下,在Linux内核中当数据包到达网卡的时候,通过DMA方式将数据映射到内存,然后硬中断通知CPU有数据到来,调用硬中断处理函数,之后交给软中断去处理。通过ksoftirq调用软中断处理函数,收包的软中断处理函数是net_rx_a...

再看 io.Copy

梳理一下容易被遗漏的细节问题

0x00 前言 前文 神奇的 Golang-IO 包 描述过 io.Copy 系列方法的一般使用,最近在做流量代理项目中,遇到几个不错的 issue: Behavior of tun2socks with closed TCP ports #222 Fix: tcp relay [Bug] TCP relay is incorrect Fix: wrap net.C...

重拾 Linux 网络(四):NAT

NAT 与 内网穿透

0x00 前言 NAT(Network Address Translation,网络地址转换),也叫做网络掩蔽或者 IP 掩蔽。NAT 是一种网络地址翻译技术,主要是将内部的私有 IP 地址(private IP)转换成可以在公网使用的公网 IP(public IP) 本文介绍下笔者在项目中解决 UDP 透明代理的 NAT 实现及相关背景知识,以及内网穿透的原理及应用 NAT 分为...

使用 Golang 实现 SSH 和 SSHD(四)

git over sshd:如何实现一个 git-sshd-server

0x00 git over ssh 项目中需要实现 git 客户端的命令审计等功能,本文介绍下 git over ssh(d) 的原理及实现细节。具体的细节可以参考项目:gogs,本文依此项目为基础介绍下实现细节;此外还可以参考:git-Reference 本文的关键词是:git over ssh authorized_keys with forced_command git 支持的传输...

Golang 网络编程(三):tun 网络编程

golang tun 网络编程应用以及 gvisor 协议栈开发介绍

0x00 前言 前文介绍了 TUN 技术在透明代理中的使用,TUN 技术可应用于多种互联网场景: 透明代理技术 加速器 虚拟专用网络(VPN) 跨平台(OS)网络互联 0x01 基础知识 iobased OR fdbased 启动 TUN 网卡的方式如何选型?fdbased 和 iobased 的区别主要体现在数据的传输方式上 当使用 fdbase...