mdns-repeater Multicast DNS repeater

https://github.com/lucasec/mdns-repeater

代码来自上面的链接,这个东西有什么用处了

1:模仿程序,可以显示多播数据的转发

2:对 mDNS的数据进行转发

3:多播数据是无法穿越路由NAT,如 openwrt中的WAN和LAN对于的网络接口

4:mdns-repeater  使用直接 接网络接口名称 mdns-repeater eth0 br-lan 就可以实现数据在接口之间的转发

5:mDNS 的简介

mDNS , multicast DNS, 可以理解为局域网内部的 DNS 系统,它和 DNS 有很多相似的地方,通过它可以实现局域网内部的服务发现、查找和广播。同时它是基于组播的协议。

mDNS : multicast DNS ,规范文档地址: http://www.ietf.org/rfc/rfc6762.txt

在局域网内,你要通过一台主机和其他主机进行通信,你需要知道对方的 ip 地址,但是有些时候,你并不知道对方的 ip 地址,因为一般使用 DHCP 动态分配 ip 地址的局域网内,各个主机的 IP 地址是由 DHCP 服务器来帮你分配 IP 地址的。所以在很多情况下,你要知道对方的 IP 地址是比较麻烦的。

鉴于发现这篇文章最近的浏览量比较多,晚上也有不少转载,特别声明一下,文章水平可能不大够,只是我当时的一些理解,所以希望大家以批判的角度来看,然后又什么问题欢迎讨论。真心不希望误导大家 ^_^

mDNS 的工作原理

首先,在 IP 协议里规定了一些保留地址,其中有一个是 224.0.0.251,对应的 IPv6 地址是 [FF02::FB]。

mDNS 协议规定了端口为 5353,而 DNS 的端口是 53。

mDNS 基于 UDP 协议。DNS 一般也是基于 UDP 协议的,但是也可以使用 TCP 协议。

如果理解了 DNS 协议,再去理解 mDNS 协议就很简单了,区别只是 mDNS 一般作用在一个局域网内的,有特定的 IP 地址,也就是 224.0.0.251,有特定的端口 5353,mDNS 的作用是实现局域网内的服务发现,查询,注册,DNS 作用是实现域名的解析,作用大概是一样的。

每个进入局域网的主机,如果开启了 mDNS 服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的 IP 地址是多少。当然,具体实现要比这个复杂点。

比如,A 主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的 IP 是 192.168.1.101,端口是 21。当 B 主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。

大概的原理就是这样子,mDNS 提供的服务要远远多于这个,当然服务多但并不复杂。

在 Apple 的设备上(电脑,笔记本,iphone,ipad等设备)都提供了这个服务。很多 Linux 设备也提供这个服务。Windows 的设备可能没有提供,但是如果安装了 iTunes 之类的软件的话,也提供了这个服务。

这样就可以利用这个服务开发一些局域网内的自动发现,然后提供一些局域网内交互的应用了。

Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Found user 'nobody' (UID 65534) and group 'nogroup' (GID 65534).
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Successfully dropped root privileges.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: avahi-daemon 0.8 starting up.
Thu Jun 23 03:40:18 2022 daemon.warn avahi-daemon[2037]: WARNING: No NSS support for mDNS detected, consider installing nss-mdns!
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Loading service file /etc/avahi/services/http.service.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Loading service file /etc/avahi/services/ssh.service.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Joining mDNS multicast group on interface br-lan.IPv6 with address fdc3:cf9c:39ea:1::1.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: New relevant interface br-lan.IPv6 for mDNS.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Joining mDNS multicast group on interface br-lan.IPv4 with address 198.19.255.1.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: New relevant interface br-lan.IPv4 for mDNS.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Joining mDNS multicast group on interface eth0.IPv6 with address fdc3:cf9c:39ea:0:211:c7ff:fe11:1911.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: New relevant interface eth0.IPv6 for mDNS.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Joining mDNS multicast group on interface eth0.IPv4 with address 198.18.6.93.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: New relevant interface eth0.IPv4 for mDNS.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Network interface enumeration completed.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering new address record for fdc3:cf9c:39ea:1::1 on br-lan.*.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering new address record for 198.19.255.1 on br-lan.IPv4.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering new address record for fdc3:cf9c:39ea:0:211:c7ff:fe11:1911 on eth0.*.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering new address record for fdc3:cf9c:39ea:0:68a1:394d:8034:e494 on eth0.*.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering new address record for 198.18.6.93 on eth0.IPv4.
Thu Jun 23 03:40:18 2022 daemon.info avahi-daemon[2037]: Registering HINFO record with values 'MIPS'/'LINUX'.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LLMNR (Link-Local Multicast Name Resolution)、mDNS (Multicast DNS)和DNS (Domain Name System) 是三种常见的域名解析协议。 1. LLMNR (Link-Local Multicast Name Resolution) 是一种在局域网内解析域名的协议。它允许设备在没有 DNS 服务器的情况下进行名称解析。设备可以通过广播消息的方式向局域网内的其他设备查询域名,其他设备可以回应解析结果。LLMNR 主要用于 Windows 系统。 2. mDNS (Multicast DNS) 是一种基于多播的域名解析协议,用于在局域网内解析主机名和服务名称。它不需要依赖中央 DNS 服务器,而是通过在局域网内广播查询消息和回应消息的方式,实现设备之间的域名解析。mDNS 主要用于支持 Zeroconf(零配置网络)的设备,如 Apple 的 Bonjour 和 Linux 的 Avahi。 3. DNS (Domain Name System) 是互联网上最常用的域名解析协议。它是一个分布式的系统,用于将域名映射到对应的 IP 地址。当用户在浏览器中输入一个域名时,操作系统或本地域名服务器会向上级 DNS 服务器发送查询请求,逐级查询直到找到对应的 IP 地址。DNS 使用 UDP 或 TCP 协议进行通信,默认使用 UDP。它是互联网上的标准解析协议。 总结来说,LLMNR 和 mDNS 主要用于局域网内的域名解析,而 DNS 则是用于互联网上的域名解析。它们各自采用不同的机制和协议,但都能实现将域名解析为对应的 IP 地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家有工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值