码迷,mamicode.com
首页 > 其他好文 > 详细

arp_filter/arp_ignore/rp_filter

时间:2019-01-15 14:04:06      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:ble   发送   hub   err   long   span   out   场景   反向   

下面这段代码应该是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

标签:ble   发送   hub   err   long   span   out   场景   反向   

原文地址:https://www.cnblogs.com/honpey/p/10270936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!