Giter VIP home page Giter VIP logo

mdns_repeater's Introduction

mDNS Repeater

The entire purpose of this project is to repeat mDNS packets verbatim across VLANs because Google casting appears to be unhappy with whatever processing avahi-daemon does on the speaker group advertisements sent by Google speakers. (I am 99% sure this is Google's fault, but I haven't been motivated to track down what they're doing.)

This fairly simple multicast DNS repeater replaces a janky nftables configuration that I was never really happy with. What it does is very simple: it listens on port 5353 of multicast groups 224.0.0.251 and ff02::fb on the specified interfaces, and repeats incoming packets from each to the others on the same port and group with the source address replaced by an address configured on the outgoing interface, taking care not to re-repeat packets it is responsible for having sent.

For IPv4, the source address is set to an arbitrary IPv4 address from the sending interface. For IPv6, the source address is set to an arbitrary link-local IPv6 address (i.e., from fe80::/16) from the sending interface.

systemd

The systemd configuration assumes:

  • You have created a user called mdnsrptr with a home directory /home/mdnsrptr.
  • You have created /etc/default/mdns_repeater with an appropriate value for REPEAT_IFACES.
  • You have cloned the repo into that home directory and used pipx to install the repo into ~/.local.

You'll want to copy the systemd configuration into /etc/systemd/system and then enable and start the service.

Licensing

MIT. See LICENSE in the repo for details. Note that I am not sure what the licensing of get_iface_addrs.py is given its provenance (q.v., the source repo), so this license may not apply to that file.

mdns_repeater's People

Contributors

squarooticus avatar

Stargazers

Alex Legler avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.