iptables规则绑定在port而不是拦截在协议栈
版权声明:本文为博主原创,无版权。未经博主同意能够任意转载,无需注明出处,任意改动或保持可作为原创!
https://blog.csdn.net/dog250/article/details/24173103
其实,我就是这样一个人。
Cisco的ACL能够被编译在port上。其实Cisco设备的网络port角色是能够被定义的,Linux的理念和此全然不同,Linux内核觉得定义角色这样的事是用户态的职责。如何要实现一个具有完备性的,不依赖用户态配置的数据包拦截机制,那就必须在协议栈路径上进行拦截。换句话说。Netfilter是全然基于skb本身来拦截并处理数据包的,这一点能够从NF_HOOK宏的參数看得出来,可是你能够看到。它还有两个net_device參数。基于这一点,我们就能够模仿Cisco设备的方式将规则绑定到设备了,这么做是有优点的,能够大大提高效率。
比方假设你配置了10000条规则,假设有不相关网口设备进来的数据包。那么这些数据包就不必经过iptables规则的过滤。
须要改动的地方比較少,这里仅仅给出ipt_hook的改动:
static unsigned int
ipt_hook(unsigned int hook,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
struct netns_table_per_dev {
struct list_head list;
struct net_device *dev;
struct xt_table *table;
};
// dev_net(in)->ipv4.iptable_filter不再是一个xt_table,而是一个list
struct wrap_table {
struct list_head *tb_list;
};
struct xt_table *table;
struct netns_table_per_dev *table_dev;
struct list_head *pos;
struct wrap_table *tb_list = (struct wrap_table *)dev_net(in)->ipv4.iptable_filter;
list_for_each(pos, tb_list->tb_list) {
table_dev = list_entry(pos, struct netns_table_per_dev, dev);
if (table_dev->dev == in) {
table = table_dev->table;
}
}
if (table == NULL) {
return NF_ACCEPT;
}
return ipt_do_table(skb, hook, in, out, table);
}
一个在协议栈拦截。一个在设备拦截,该手术做的有点大。颠覆了既有的理念。不知道会不会有后遗症。
无论如何,不能走火入魔。
iptables规则绑定在port而不是拦截在协议栈的更多相关文章
- 为什么tap事件绑定在document上,而不是对象本身上
1.在移动端前端开发,click事件有300ms的延时,为了提升用户体验,快速响应.zepto添加了tap事件.tap是在手指触屏横纵向移动距离小于30px,触发tap事件.移动距离的判断是通过tou ...
- iptables规则表
1.iptables规则表 Filter(针对过滤系统):INPUT.FORWARD.OUTPUT NAT(针对地址转换系统):PREROUTING.POSTROUTING.INPUT.OUTPUT ...
- linux iptables规则介绍
今天又学习了一下iptables,做一点总结来方便以后查阅. Netfilter(网络过滤器)是Linux操作系统核心层内部的一个数据包处理模块,主要负责数据包的拦截和转发,而iptables是Net ...
- iptables规则进阶
iptables规则进阶 1.实验环境搭建: 在进行试验之前,先要进行实验环境的搭建,要求如下: 1.对于三台主机,分别设置IP地址 2.设置10.0.1.22为内网主机 3.设置中间主机有两个网卡, ...
- 设置主机防火墙规则(iptables规则设置及其与firewalld的生死纠葛)
一.什么是firewalld防火墙? firewalld防火墙在Linux主机里其实就是一道隔离工具,它只对进出主机的请求做判断处理.也就是说它只管进出,至于你进来后做了什么,就不在firewalld ...
- Iptables 规则 一些简单实例和详细介绍
设定规则 iptables -p INPUT DROP iptables -p OUTPUT ACCEPT iptables -p FORWARD DROP 1.防止外网用内网IP欺骗 iptable ...
- linux系统中查看己设置iptables规则
1.iptables -L 查看filter表的iptables规则,包括所有的链.filter表包含INPUT.OUTPUT.FORWARD三个规则链. 说明:-L是--list的简写,作用是列出规 ...
- 常用的 Linux iptables 规则
一些常用的 Linux iptables 规则,请根据自己的具体需要再修改. 转载自:http://mp.weixin.qq.com/s/uAPzh9_D4Qk6a3zBh7Jq5A # 1. 删除所 ...
- 25 个常用的 Linux iptables 规则【转】
转自 25 个常用的 Linux iptables 规则 - 文章 - 伯乐在线http://blog.jobbole.com/108468/ # 1. 删除所有现有规则 iptables -F # ...
随机推荐
- 百度地图API学习总结
常用技术 1.创建地图: var map = new BMap.Map("divid"); 2.创建坐标点:var point = new BMap.Point("经 ...
- 12 Essential Bootstrap Tools for Web Designers
12 Essential Bootstrap Tools for Web Designers Posted by vikas on June 6, 2014, filed in: Tools, Web ...
- [myeclipse]@override报错问题
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Ove ...
- 21.线程池ThreadPoolExecutor实现原理
1. 为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题.因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗 ...
- Python list降序排序
test = [6,1,2,3,4,5] a = sorted(test,reverse=True) print a 结果如下: [6, 5, 4, 3, 2, 1] 你可以参考下sorted,里面是 ...
- Java导出Excel(有数据库导出代码)
/** * 导出 * @param request * @param response * @throws Exception */ @SuppressWarnings("unchecked ...
- 破解google翻译API全过程
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6554340.html 前言 google的翻译不得不承认它 ...
- yii2 实现excel导出功能
官方教程地址:http://www.yiiframework.com/extension/yii2-export2excel/ 安装: Either run php composer.phar req ...
- 12.18 微信扫码获取openid与登陆
官方文档: https://open.weixin.qq.com/ 1.先获取code 1-1 配置项目配置文件 wechat: mpAppId: wxd898fcb01713c658 mpAppSe ...
- Python基础学习----字符串的常用方法
# Python字符串 # 大多数的语言定义字符串是双引号,Python既可以双引号,也可以单引号.但使用也有区别 # 单双引号的使用 My_name="bai-boy" Demo ...