【问题标题】:How to send a router advertisement correctly?如何正确发送路由器广告?
【发布时间】:2013-01-24 20:54:15
【问题描述】:

我正在开发一个没有手头设备的 IPv6 linux 设备驱动程序。所以我现在试图用虚假的路由器广告消息来欺骗内核。

unsigned char c[] = {0x33, 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 61, 0x86, 0xdd, //IPv6 type
            0x60, 0x00, 0x00, 0x00, //Version, ...
            0x00, 24, //payload length
            58,         //next header 
            255,        //hop limit 
            0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x3d, //source
            0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //destination
            134, //type
            0, //code,
            0x7a, 0x2c, //checksum
            255, //current hop limit
            0x80, //flag
            0xff, 0xff,
            0x00, 0x00, 0x00, 0x00, //reachable timer
            0x00, 0x00, 0x00, 0x00,
            0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 61, //source link-layer address   
            };

我尝试使用 Tcpdump 来抓取我发送给内核的这个数据包。而且我发现内核真的得到了这个数据包。

13:32:59.989851 00:00:00:00:00:3d (oui Ethernet) > 33:33:00:00:00:02 (oui Unknown), ethertype IPv6 (0x86dd), length 78: (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::200:ff:fe00:3d > ip6-allnodes: [icmp6 sum ok] ICMP6, router advertisement, length 24
    hop limit 255, Flags [managed], pref medium, router lifetime 65535s, reachable time 0s, retrans time 0s
      source link-address option (1), length 8 (1): 00:00:00:00:00:3d
        0x0000:  0000 0000 003d

但之后我使用ip -6 neigh 来检查内核是否在邻居表中存在假节点。我找不到它了。

我的问题是什么?有什么想法吗?

【问题讨论】:

  • 这似乎是一个非常专业的问题;我怀疑你会在 netdev mailing list 这样的地方得到比 StackOverflow 更好的答案。
  • 出于兴趣,什么是“IPv6 linux 设备驱动程序”?为什么使用 IPv6 的事实会影响设备驱动程序?
  • @TomAnderson:a previous question by Yifan Sun 上也有人问过这个问题。还没有得到充分的回答——听起来他们正在尝试编写一个拒绝支持 IPv4 数据包的驱动程序??!
  • @TomAnderson谢谢大家的关心。问题已经解决了。我正在发送一个路由器广告,我可以通过输入“ip -6 route”而不是“ip -6 neigh”来找到它。再次感谢。
  • @duskwuff:奇怪的东西,伙计。

标签: linux drivers router ipv6


【解决方案1】:

也许这些黑客工具包会有所帮助

  1. IPv6-toolkit - ra6 程序伪造路由器广告
  2. THV-IPv6 - *fake_advertise6* 程序

【讨论】:

    【解决方案2】:

    为什么要伪造路由器广告?

    在您的情况下,我会在同一以太网链路上放置第二个 Linux(如果您没有物理设置,则在 VMWare 或任何其他虚拟环境中),在第二个 Linux 上安装 radvd,然后让 radvd在链接上发送路由器广告。

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      相关资源
      最近更新 更多