All Projects → dyne → Dowse

dyne / Dowse

The Awareness Hub for the Internet of Things

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Dowse

noddos
Noddos client
Stars: ✭ 78 (-43.88%)
Mutual labels:  dns, router, dhcp
Sower
Sower is a cross-platform intelligent transparent proxy solution.
Stars: ✭ 391 (+181.29%)
Mutual labels:  router, dns, dhcp
Libnet
A portable framework for low-level network packet construction
Stars: ✭ 640 (+360.43%)
Mutual labels:  dns, dhcp
Dnsproxy
Simple DNS proxy with DoH, DoT, DoQ and DNSCrypt support
Stars: ✭ 683 (+391.37%)
Mutual labels:  dns, dnscrypt
Blocklist
Privacy DNS
Stars: ✭ 61 (-56.12%)
Mutual labels:  dns, dnscrypt
Dnscrypt Server Docker
A Docker image for a non-censoring, non-logging, DNSSEC-capable, DNSCrypt-enabled DNS resolver
Stars: ✭ 483 (+247.48%)
Mutual labels:  dns, dnscrypt
Dnscrypt Wrapper
This is dnscrypt wrapper (server-side dnscrypt proxy), which helps to add dnscrypt support to any name resolver.
Stars: ✭ 493 (+254.68%)
Mutual labels:  dns, dnscrypt
Dnscrypt Menu
Manage DNSCrypt from the macOS menu bar (BitBar plugin)
Stars: ✭ 59 (-57.55%)
Mutual labels:  dns, dnscrypt
Doh Server
Fast, mature, secure DoH server proxy written in Rust (doh-proxy).
Stars: ✭ 327 (+135.25%)
Mutual labels:  dns, dnscrypt
Dnscrypt Protocol
DNSCrypt protocol specification
Stars: ✭ 91 (-34.53%)
Mutual labels:  dns, dnscrypt
Bsb Lan
LAN interface for Boiler-System-Bus (BSB) and Local Process Bus (LPB) and Punkt-zu-Punkt Schnittstelle (PPS) used by Elco Thision, Brötje and similar heating systems
Stars: ✭ 83 (-40.29%)
Mutual labels:  internet, lan
Glider
glider is a forward proxy with multiple protocols support, and also a dns/dhcp server with ipset management features(like dnsmasq).
Stars: ✭ 1,710 (+1130.22%)
Mutual labels:  dns, dhcp
Portmapper
A tool for managing port forwardings via UPnP
Stars: ✭ 416 (+199.28%)
Mutual labels:  router, internet
Encrypted Dns Server
An easy to install, high-performance, zero maintenance proxy to run an encrypted DNS server.
Stars: ✭ 398 (+186.33%)
Mutual labels:  dns, dnscrypt
Dnscrypt Resolvers
Lists of public DNSCrypt / DoH DNS servers and DNS relays
Stars: ✭ 536 (+285.61%)
Mutual labels:  dns, dnscrypt
Piholecloudflared
Raspberry Pi setup with Pi-Hole, CloudflareD, DHCP as the ultimate Ad-blocker
Stars: ✭ 57 (-58.99%)
Mutual labels:  dns, dhcp
Hosts Blocklists
Automatically updated, moderated and optimized lists for blocking ads, trackers, malware and other garbage
Stars: ✭ 1,749 (+1158.27%)
Mutual labels:  dns, dnscrypt
http-connection-lifecycle
Complete and detailed explanation of HTTP connection lifecycle
Stars: ✭ 43 (-69.06%)
Mutual labels:  dns, router
dns-resolver-infra
Privacy DNS infrastructure
Stars: ✭ 39 (-71.94%)
Mutual labels:  dns, dnscrypt
Downloads
AD Health Check, Send HTML Email, Ping machines, Encrypt Password,Bulk Password,Microsoft Teams,Monitor Certificate expiry, Monitor cert expiry, AD attributes, IP to Hostname, Export AD group, CSV to SQL,Shutdown, Restart, Local Admin, Disk Space, Account expiry,Restore Permissions, Backup permissions, Delete Files Older Than X-Days, export DHCP options,Read Registry,Distribution group AD attributes,Monitor Windows Services,Export Reverse DNS,Task Monitor,Monitor and alert, Exchange Health check,Get Network Info, Export AD Attributes,AD group members, Office 365 Group member, SQL to CSV, Outlook save send attachments, Upload files to FTP,Exchange – Total Messages Sent Received, Set Teams Only Mode, Intune Duplicate Device,Intune Cleanup Not Evaluated, Ownership and Grant Permissions, Write Create Modify Registry , Organization Hierarchy from AD,Azure AD Privileged Identity Management,Intune – Export MAM Devices,Intune Marking devices as Corporate, Dynamic to Static Distribution Group,Monitor Alert Office 365 services,Group Member Count,Bulk Addition external users sharepoint, ADD to Exchange online License Group,All in One Office 365 Powershell,Bulk Addition of Secondary Email, Automate move mailboxes to o365, Addition Modification Termination Exchange users, Monitoring Unified Messaging port,Unified Messaging Extensions Report, Set Default Quota for SharePoint,Bulk Contact Creation and Forwarding, Uploading and Downloading files sftp, Monitoring Sftp file and download, Office 365 groups Write back, CSV parser, Email address update, Email address modify, MDM enrollment, Welcome Email, Intune Welcome Email, remove messages, remove email, SKOB to AD, SKOB to group, PowerApps report, Powerautomate Report, Flow report, Server QA, Server Check List, O365 IP range, IP range Monitor, o365 Admin Roles, memberof extraction, CSV to Excel, Skype Policy, UPN Flip, Rooms Report, License Reconciliation,Intune Bulk Device Removal, Device Removal, Clear Activesync, Lync Account Termination,Lync Account Removal, Enable office 365 services, Enable o365 Services, Export PST, Site collection Report, Office 365 Group Sites, System Admin,ActiveSync Report,White Space,Active Directory attributes, outlook automation, Intune Detect App, Distribution list Fix, Legacy DN, start service, stop service, disable service, Message tracking, Distribution lists report,Distribution groups report,Quota Report, Auto reply, out of office, robocopy multi session, Home Folder, local admin, Database, UPN SIP Mismatch, Recoverable deleted, teams number, Number assignment, teams phone, AD Group Hierarchy, Hierarchy membership, Sync Groups
Stars: ✭ 75 (-46.04%)
Mutual labels:  dns, dhcp

Dowse logo

A digital rod for local area network rabdomancy

software by Dyne.org

Updates: http://dowse.eu

Whitepaper: https://files.dyne.org/dowse/dowse_whitepaper.pdf

Build Status

Dowse project stats

Introduction

Dowse is a transparent proxy facilitating the awareness of ingoing and outgoing connections, from, to, and within a local area network.

Dowse provides a central point of soft control for all local traffic: from ARP traffic (layer 2) to TCP/IP (layers 3 and 4) as well as application space, by chaining a firewall setup to a trasparent proxy setup. A core feature for Dowse is that of hiding all the complexity of such a setup.

Dowse is also a highly extensible platform: interoperability between modules is available using Socks4/5, UNIX pipes, local TCP/IP sockets and port redirection, conforming to specific daemon implementations. At the core of Dowse is a very portable shell script codebase implementing a modular plugin architecture that isolates processes and supports any executable written in any language: Shell, C, Perl, Python etc.

Dowse is an ongoing development effort rapidly gaining momentum for its simplicity and usefulness. Here a recent backstage video:

The making of Dowse

Features

Dowse takes control of a LAN by becoming its DHCP server and thereby assigning itself as main gateway and DNS server for all clients. It keeps tracks of assigned leases by MAC Address. ISC DHCP and DNSCRYPT-PROXY are used as daemons.

All network traffic is passed through NAT rules for masquerading. HTTP traffic (TCP port 80) can be filtered through a transparent proxy using an application layer chain of Squid2 and Privoxy.

All IP traffic is filtered using configurable blocklists to keep out malware, spyware and known bad peers, using Peerguardian2 and Iptables.

All DNS traffic (UDP port 53) is filtered through a DNSCRYPT-PROXY plugin encrypting all traffic (AES/SHA256) and analysed using domain-list to render a graphical representation of traffic.

Privilege escalation is managed using https://sup.dyne.org

Installation

Installation and activation takes a few steps, only make install needs root:

  1. Download dowse on a GNU/Linux box (we use Devuan Ascii)
git clone https://github.com/dyne/dowse dowse-src
cd dowse-src && git submodule update --init --recursive
  1. Install all requirements, here below the list of packages. To avoid installing more than needed, consider using the --no-install-recommends flag in APT or similar for other package managers.
zsh iptables build-essential autoconf automake libhiredis-dev libkmod-dev libjemalloc-dev pkg-config libtool libltdl-dev libsodium-dev libldns-dev libnetfilter-queue-dev uuid-dev zlib1g-dev cmake liblo-dev nmap python3-flask python3-redis xmlstarlet wget libcap2-bin
  1. Choose which user should be running dowse: your own is fine, or eventually create one just for that to separate filesystem permissions.

  2. As the user of choice, run make inside the dowse source

  3. As root, run make install

  4. If necessary edit the files in the /etc/dowse folder, especially settings where it should be indicated the address for the local network you like to create.

  5. As the dowse user of choice and inside the source, fire up the startup script ./start.sh

Dowse is now running with a web interface on port 80.

To interact with dowse there is also a console with commands prefixed with dowse- (tab completion available). To enter it run zsh without extensions and source the main script: first type zsh -f and press enter, then type source /usr/local/dowse/zshrc and press enter.

If you like the dowse user to have an interactive console every time it logs in, then do ln -s /usr/local/dowse/zshrc $HOME/.zshrc.

If all went well now one should be able to connect any device to the internet as you did before, via Dowse.

Embedded ARM devices

Using https://www.devuan.org just compile and install Dowse following the procedure above. Images are available for a several popular ARM devices including RaspberryPI2 and 3, BananaPI, Cubieboard etc.

Starting Dowse

Here below an example start script launching all services in Dowse. Some can be commented / expunged ad-hoc depending from use cases, since the only vital functions are redis-server, dhcpd and dnscrypt-proxy.

#/usr/bin/env zsh

source /etc/dowse/settings
source /usr/local/dowse/zshrc

    notice "Starting Dowse"

    # start the redis daemon (core k/v service)
    start redis-server

	notice "Starting all daemons in Dowse"

    # launch the dhcp daemon
    start dhcpd

    # start the dns encrypted tunneling
    start dnscrypt-proxy

	# start the mqtt/websocket hub
	start mosquitto

    # netdata dashboard for the technical status
    start netdata

	# nodejs/node-red
	start node-red

	# start the cronjob handler (with resolution to seconds)
	start seccrond

    notice "Dowse succesfully started"

}

Adding the following line one can set up an open network, what we call it "party mode":

echo "set party-mode ON" | redis-cli

As a good practice, such a script can be launched from /etc/rc.local for user dowse using setuidgid from the daemontools package.

The next is an example on how to stop dowse, for instance from a stop.sh script:

#/usr/bin/env zsh

source /usr/local/dowse/zshrc

	notice "Stopping all daemons in Dowse"

	stop seccrond

	stop mosquitto

	# stop nodejs/node-red
	stop node-red

    # stop the dashboard
    stop netdata

    # stop the dns crypto tunnel
    stop dnscrypt-proxy

    # stop the dhcp server
    stop dhcpd

    # remove the layer 3 firewall rules
    iptables-snat-off
    iptables-stop

    # restore backup if present
    # [[ -r /etc/resolv.conf.dowse-backup ]] &&  {
    #     mv /etc/resolv.conf.dowse-backup /etc/resolv.conf
    # }

    stop redis-server

    notice "Dowse has stopped running."

The scripts above are found in dowse source as start.sh and stop.sh and can be customised and called from the system at boot. It is also possible to run an interactive console with completion where dowse commands are available using the console.sh script. Once in the console all the above start/stop commands and even more internals will be available to be launched interactively.

Visualization

The DNS visualization is produced in a custom format which can be easily processed by gource. This is the best way to "see dowse running": if you are running it locally, then install gource and do:

dowse-to-gource | gource --log-format custom -

or from remote:

ssh [email protected] -- dowse-to-gource | gource --log-format custom -

Sidenote: dowse-to-gource must be in the user's $PATH. To achieve this, as mentioned above, you can change the user's shell to zsh and do: ln -sf /usr/local/dowse/zshrc $HOME/.zshrc.

This will live render all the DNS activity occurring on your computer or local network, with the sort of animation that is also showcased on our website.

One can also experiment with gource arguments and render all the output of dowse-to-gource into a video file.

Experimentation

Open Sound Control (OSC) messaging is implemented to interface low-latency devices that are running on the same network. To start it one must know the IP address of the device, then do:

dowse-to-osc osc.udp://10.0.0.2:999

This will start sending OSC messages over UDP to IP 10.0.0.2 port 999

Development

The main development repository is on https://github.com/dyne/dowse

Inside the ops directory an Ansible recipe is found along a ready to use Vagrant configuration to build two virtual machines (leader and client) that simulate a LAN to do further testing of Dowse.

cd ops
vagrant up

Plus the usual vagrant commands. The devops in Dowse is based on http://Devuan.org and will run two virtual machines connected to each other, one "leader" running Dowse and serving DHCP, one "client" connected to it and to the Internet via the leader.

Help with development is welcome, manuals on how to write new modules and daemons are in the making and there is a sister project to categorize all domains used by Internet's conglomerates which also welcomes contributions: https://github.com/dyne/domain-list

Disclaimer

Dowse development is supported by: NLNET foundation (2015) SIDNfonds (2015-2016)

Dowse is Copyright (C) 2012-2017 by the Dyne.org Foundation

This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3 of
the License, or (at your option) any later version.

This source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Please refer to the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this source code; if not, write to: Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].