arp_filter/arp_ignore/rp_filter
下面这段代码应该是arp_ignore/arp_filter的最好的注脚;在ARP_ignore通过的情况下,我再去判断ARP_filter,这个ARP_filter其实就是为了判断,当数据包再出去的时候,是不是还是通过我这个网络设备;如果是的话,那么就放走,如果不是的话,那么就不行;其实有点反向路由的意思,看下ARP_filter的代码
799 dont_send = arp_ignore(in_dev, sip, tip);
800 if (!dont_send && IN_DEV_ARPFILTER(in_dev))
801 dont_send = arp_filter(sip, tip, dev);
802 if (!dont_send) {
803 n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
804 if (n) {
805 arp_send_dst(ARPOP_REPLY, ETH_P_ARP,
806 sip, dev, tip, sha,
807 dev->dev_addr, sha,
808 reply_dst);
809 neigh_release(n);
810 }
811 }
812 goto out_consume_skb;
ARP_filter的代码,收到数据包之后有了源ip和目的ip,看下返回的设备是那个,如果返回的设备并不是我接收这个包的设备,那么就会防止这张网卡来发送arp的数据包啦!
static int arp_filter(__be32 sip, __be32 tip, struct net_device *dev)
{
struct rtable *rt;
int flag = 0;
/*unsigned long now; */
struct net *net = dev_net(dev); rt = ip_route_output(net, sip, tip, 0, 0);
if (IS_ERR(rt))
return 1;
if (rt->dst.dev != dev) {
__NET_INC_STATS(net, LINUX_MIB_ARPFILTER);
flag = 1;
}
ip_rt_put(rt);
return flag;
}
那么ARP_filte和rp_filter又是要有两个问题,这两个参数都是进行反向路由检查的,那么有什么区别? 可以看到rp_filter是在收到包的时候达到了ip层之后,所以对于arp协议,还没有到ip层,所以就增加了一个ARP_filter.
那么再看ARP_filter是干嘛?是说这个数据包仍然得是从这个网卡返回的!这似乎是很容易达成的呢,因为网卡都是在一个局域网中呢!网络都是从这个数据包中来的,但是仍然是有问题的,但是这都是最简单的场景,以后研究网络问题,我们都要网虚拟化和网络攻防的方向考虑.ARP_filter要处理的场景就是多网卡.
现在的场景是允许一台机器,多张网卡连接到一个局域网!
竟然还有这种丧心病狂的玩法,这个哥们在这里讲了一些,所以的这些问题都出现在主机中的两个端口的处于相同的子网之中,
http://huntxu.github.io/2015-12-24-arp-filter-vs-arp-ignore.html
一台主机两张网卡位于相同的子网,这个有什么应用场景么
arp_filter/arp_ignore/rp_filter的更多相关文章
- 自学网络 arp_ignore/arp_announce
1)机器上有好几个IP地址,如何让网卡只接收自己IP地址的数据包: 如何只接收自己网卡的数据包 http://www.cnblogs.com/honpey/p/8447819.html 相关的配置ar ...
- LVS 之 DR model arp_announce arp_ignore转
DR模式的收发流程: 1)客户端发起请求到调度器的vip.2)调度器根据调度算法在各个服务器中动态选择一台服务器,但它不修改ip报文,而是将数据帧的MAC地址改为选出服务器的MAC地址.再将修改名的数 ...
- LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
先简单的介绍下关于LVS负载均衡 LVS(Linux Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Li ...
- Linux 内核参数 arp_ignore & arp_announce 详解
arp_ignore定义了对目标地址为本机IP的ARP询问的不同应答模式. arp_announce对网络接口(网卡)上发出的ARP请求包中的源IP地址作出相应的限制:主机会根据这个参数值的不同选择使 ...
- Linux的rp_filter与策略路由
Linux的rp_filter用于实现反向过滤技术,也即uRPF,它验证反向数据包的流向,以避免伪装IP攻击,但是它和Linux的策略路由却很容易发生冲突,其本质原因在于,uRPF技术强制规定了一个反 ...
- (转)Linux内核参数之arp_ignore和arp_announce
原文:https://blog.csdn.net/ccy19910925/article/details/79960599 一.arp_ignore和arp_announce介绍 arp_ignore ...
- Linux内核参数之arp_ignore和arp_announce
一.arp_ignore和arp_announce介绍 arp_ignore和arp_announce参数都和ARP协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作.这两个参数很重要, ...
- arp_ignore
上一篇文件说了arp_announce,那么到这里arp_ignore,我们直接看代码应该也比较容易立即了 目前我知道的是arp_ignore = 0,只要IP是自己机器上的,都可以回复: 说实话就是 ...
- Linux内核参数之rp_filter
一.rp_filter参数介绍 rp_filter参数用于控制系统是否开启对数据包源地址的校验. 首先看一下Linux内核文档documentation/networking/ip-sysctl.tx ...
随机推荐
- vue-router核心概念
vue用来实现SPA的插件 使用vue-router 1. 创建路由器: router/index.js new VueRouter({ routes: [ { // 一般路由 path: '/abo ...
- css dropdown menu
<ul> <li class="left">abc</li> <li class="middle" id=" ...
- 20145234黄斐《Java程序设计》第七周学习总结(课本部分)
教材知识概述 存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. 6.1 存储技术 1.随机访问存储器(RAM)分为两类:静态的(SRAM)比动态的(DRAM)快,但也贵得多 静态RA ...
- DocX操作word生成报表
1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱尔兰的一个叫Cathal Coffey的博士生开发出来的.DocX使得操作w ...
- 北京Uber优步司机奖励政策(3月16日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- wamp报错SCREAM:Error suppression ignored for
问题:SCREAM:Error suppression ignored for 解决: 在php.ini最下面加入scream.enabled = Off http://stackoverflow.c ...
- 阿里otter使用问题汇总
最近在使用otter做为和表从库.(100个分表太难查询了) user_00,user_01...user_99 => user_all 1.问题DDL语句不能执行(exception:setl ...
- 网易七鱼 Android 高性能日志写入方案
本文来自网易云社区 作者:网易七鱼 Android 开发团队 前言 网易七鱼作为一款企业级智能客服系统,对于系统稳定性要求很高,不过难保用户在使用中不会出现问题,而 Android SDK 安装在用户 ...
- Ruby 基础教程 1-1
1.指定编码方式 第一种 在代码文件首行通过 #encoding:GBK的方式 第二种 ruby -E UTF-8 文件名称 第三种 irb -E UTF-8 2 ...
- C++ 基础面试题-2
请写出一下程序的输出内容 /* ** 2018/03/21 22:02:03 ** Brief: ** Author:ZhangJianWei ** Email:Dream_Dog@163.com * ...