AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 561102
Accepted
TopherIsSwell
TopherIsSwell
Asked: 2020-01-09 16:12:54 +0800 CST2020-01-09 16:12:54 +0800 CST 2020-01-09 16:12:54 +0800 CST

是什么决定了接口的混杂性、接口标志或属性?

  • 772

我在 RHEL 7 机器上使用 Lynis 运行扫描,它说接口处于混杂模式。我检查并确定链接不是基于没有 Promuscuous 标志(只有广播、多播、运行和 UP (BMRU) 可见):

$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001

$ netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             9001 17217705      0      0 0      17899485      0      0      0 BMRU

所以我查看了 Lynis 是如何检查并运行命令的ip link -o -d show dev eth0 | grep 'promiscuity 1',果然,我发现了以下内容:

$ ip -d link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff promiscuity 1 addrgenmode eui64 numtxqueues 8 numrxqueues 8 gso_max_size 65536 gso_max_segs 65535

我的问题是哪个更权威。我习惯于只检查标志而不是接口属性。是什么promiscuity 1意思?这个界面是混杂的吗?

rhel network-interface
  • 2 2 个回答
  • 1454 Views

2 个回答

  • Voted
  1. Best Answer
    mosvy
    2020-01-11T15:20:04+08:002020-01-11T15:20:04+08:00

    正如在/中引入只读参数的补丁中所解释的:promiscuityip-linkiproute2

    该标志IFF_PROMISC仅在用户明确设置时由内核导出,例如在运行时不会导出tcpdump)。

    + if (do_link && tb[IFLA_PROMISCUITY] && show_details)
    +     fprintf(fp, "\n    promiscuity %u ",
    +         *(int*)RTA_DATA(tb[IFLA_PROMISCUITY]));
    

    事实上,接口(由 使用)和 rtnetlink 接口(由使用)使用的dev_get_flags()内核函数将从导出到用户空间的一组标志中显式清除:ioctl(SIOCGIFFLAGS)ifconfigip link showIFF_PROMISC

     *      Get the combination of flag bits exported through APIs to userspace.
     */
    unsigned int dev_get_flags(const struct net_device *dev)
    {
            unsigned int flags;
    
            flags = (dev->flags & ~(IFF_PROMISC |
                                            ...)) |
                    (dev->gflags & (IFF_PROMISC |
                                    IFF_ALLMULTI));
    

    [dev->gflags以上是一组不被内核使用,而仅由用户空间接口设置和检索的兼容性标志]

    从用户空间检查接口是否处于混杂模式的唯一ip -d link show方法是(就像这样做一样)通过 接口IFLA_PROMISCUITY检索的属性rtnetlink(7)。这反映了设备的实际混杂计数:promiscuity > 0意味着设备处于混杂模式。


    ifconfig DEV promisc通过or更新设备标志ip link set dev DEV promisc on不是将设备设置为混杂模式的唯一方法:另一种方法是通过接口:packet(7) setsockopt()

    setsockopt(sock, SOL_SOCKET, PACKET_ADD_MEMBERSHIP, {.mr_type = PACKET_MR_PROMISC})`
    

    这就是tcpdump(以及其他网络捕获和过滤工具)正在使用的东西。

    • 3
  2. binarym
    2020-01-10T02:44:55+08:002020-01-10T02:44:55+08:00

    PROMISCUOUS它本身就是一面旗帜,而不是其他旗帜的组合。

    您提供的转储上未设置该标志。

    如果我在我的系统上手动设置它,我可以清楚地看到它:

    ~# ifconfig eth0 promisc
    ~# ip link show dev eth0
    2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether 28:f1:0e:09:b8:f8 brd ff:ff:ff:ff:ff:ff
    root@NEO-L196:~# ip -o -d link show dev eth0
    2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000\    link/ether 28:f1:0e:09:b8:f8 brd ff:ff:ff:ff:ff:ff promiscuity 1 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
    ~# 
    

    如果您继续收到来自 Lynis 的警告,则有两种可能性:

    • Lynis 有问题,向您报告了误报。

    • 您的系统已被黑客入侵并安装了后门:黑客用隐藏混杂标志的修补程序替换了ip,ifconfig和二进制文件。route

    • 0

相关问题

  • systemctl 命令在 RHEL 6 中不起作用

  • 克服 ifconfig Ubuntu16.04 和 Ubuntu17.01 的格式差异

  • 如何在 RHEL 7 上离线安装 docker?

  • 通过静态 IP(NAT?)访问 VM

  • 在 Gnome3 中禁用窗口的自动最大化

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve