概览 LSF(Linux socket filter)起源于BPF(Berkeley Packet Filter).基础从架构一致.但使用更简单.LSF内部的BPF最早是cBPF(classic).后来x86平台首先切换到eBPF(extended).但因为非常多上层应用程序仍然使用cBPF(tcpdump.iptables),而且eBPF还没有支持非常多平台,所以内核提供了从cBPF向eBPF转换的逻辑,而且eBPF在设计的时候也是沿用了非常多cBPF的指令编码. 可是在指令集合寄存器.还有架…
简单介绍 最早的内核包过滤机制是ipfwadm.后来是ipchains.再后来就是iptables/netfilter了. 再往后,也就是如今是nftables. 只是nftables与iptables还处于争雄阶段,谁能胜出眼下还没有定论.可是他们都属于netfilter项目的子成员. 钩子 netfilter基于钩子,在内核网络协议栈的几个固定的位置由netfilter的钩子. 我们知道数据包有两种流向,一种是给本机的:驱动接收-->路由表-->本机协议栈-->驱动发送.一种是要转发…
总览 路由表 IP层通过路由将数据包送达该送达的目的地址,这就要求在整个网络中建立正确的路由表.路由表的内容是记录要到达哪里下一跳须要发到哪里(能够是port能够是ip),如此整个网络在单个节点仅仅知道自己局部转发信息的情况下就能正确的转发. 路由协议 路由表的原理简单,难的是维护. 怎样在全网络形成这样一张大表.假设在网络变动的时候全网的表高速收敛聚合?假设全部是手动的固然能够实现,可是成本太高. 这就须要自己主动化的协议.这样的形成并更新路由表的协议叫做路由协议. 内部网关协议和外部网关协议…
使用socket BPF linux 下的 包过滤器 BPF Linux内核工程导论——网络:Filter(LSF.BPF.eBPF) 注意(文中描述的内容): 此外,这段BPF代码还存在的一个问题是,一般情况下tcpdump只返回所捕获包的头96字节,也就是0×60字节,可见代码的倒数第二行是ret #96.对于需要完整的包处理还是不行的,因此你需要将其设置为0×0000ffff,或者在用tcpdump生成的时候用tcpdump -s 65535 -dd … 来生成 1.我的tcpdump 生…
Linux世界介绍 给自己定级 门外汉: 不会安装操作系统 不会用虚拟机(安装和使用) 入门级: 熟悉常见的发行版,甚至装过而且能用一些特殊发行版(比如kali)做过一些简单的图形界面的使用. 会一些最基础的命令(比如cd.ps.top.ls.ifconfig等这个级别的) 基础级: 能够使用一些常见的命令(touch.tail.date.find.du.fdisk.less.pidof等这个级别的命令) 图形界面操作的比較熟练.而且能够相应一部分的后台命令. 知道一些经常使用的配置文件的作用(…
想要研究linux内核.使用linux内核,首先要知道linux内核能做到什么,提供了什么.我看过非常多刚開始学习的人一进入公司就開始使用linux内核开发内核模块.使用的不管是通信方式.内存接口还是设备接口仍都是内核早已淘汰掉的. 原因是他们一般是直接在网络上搜索来怎样完毕工作的.但他们手中的却是最先进的内核代码. 非常大一部分程序猿是这样的觉得自己能够征服一切的人.略微看一下再百度就能用. 我不否认写出能够用的程序不须要太多的预备知识积累,仅仅要懂了流程,现学现卖就能够了.可是这样相当于信息…
route命令 网络配置 route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现. 语法 route(选项)(参数) 选项 -A:设置地址类型: -C:打印将Linux核心的路由缓存: -v:详细信息模式: -n:不执行DNS反向查找,直接显示数字形式的IP地址: -e:netstat格式显示路由表: -net:到一个网络的路由表: -host:到一个主机的路…
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现. 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由.要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失…
答:进入旧的内核中编译需要的网卡模块 1. 启动旧的内核进入系统 2. 安装新内核源码 3. 找出当前的网卡型号 4. 尝试卸载某个与网卡相关的内核模块,观察是否影响当前网卡的使用,如果有影响,那么便可以判断当前的网卡使用的就是这个内核模块驱动网卡的 5. 从/boot目录中找到旧内核的配置文件,查找是否有对应网卡的选项被使能 6. 从/boot目录中找到新内核的配置文件,加入对应网卡的内核模块选项 7. 重新编译安装内核及模块 make -j4 && sudo make modules_…
Linux内核的整体架构 作者:蜗蜗 发布于:2014-2-21 13:23 分类:Linux内核分析 原文:http://www.wowotech.net/linux_kenrel/11.html 1. 前言 本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统.之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应. 注:本文和其它的“Linux内核分析”文章都基于如下约定:  a) 内核版本为Lin…