feat: README
This commit is contained in:
parent
92ac9346cc
commit
b9fef76c2c
26
Readme.md
Normal file
26
Readme.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# MDNS Relay
|
||||
|
||||
You ever wanted to split your network into multiple indepented ones, while still being able to find
|
||||
your printer or join a spotify session in another network? Then this project is for you.
|
||||
|
||||
The purpose of this program is to relay multicast DNS (mDNS) packets between multiple private networks.
|
||||
Existing solution, such a avahi allow you to do this as well but only unconditionally, relaying all questions
|
||||
and answers, with this you can decide what queries get relayed and which get blocked.
|
||||
|
||||
## Usage
|
||||
`mdns-relay -c <config>` where config is a json file containing these options:
|
||||
```json
|
||||
{
|
||||
"interfaces: "A regex used to filter interfaces on which to listen, to exclude for example the public net or VPNs completely",
|
||||
// A list of rules to be applied to incoming packages"
|
||||
"rules" : [
|
||||
{
|
||||
"from": "A regex to match the incoming interface",
|
||||
"to": "The exact name of the interface to which matching packets will be relayed",
|
||||
"allow_questions": "Regex matching any questions",
|
||||
"allow_answers": "Regex matching any answers",
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
To apply a rule has to either have a single matching question or answer.
|
|
@ -4,11 +4,10 @@ use color_eyre::{eyre::bail, Result};
|
|||
use pnet::datalink::{interfaces, NetworkInterface};
|
||||
use pnet::ipnetwork::IpNetwork::{V4, V6};
|
||||
use regex::Regex;
|
||||
use serde::{Deserialize, Deserializer};
|
||||
use serde::Deserialize;
|
||||
use serde_json::from_reader;
|
||||
use simple_dns::Packet;
|
||||
use socket2::{Domain, Protocol, Socket, Type};
|
||||
use std::borrow::Cow;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::{
|
||||
|
|
Loading…
Reference in a new issue