All Projects → cunnie → sslip.io

cunnie / sslip.io

Licence: Apache-2.0 License
Golang-based DNS server which maps DNS records with embedded IP addresses to those addresses.

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to sslip.io

docker-powerdns
PowerDNS + Recursor + Admin GUI + Adblock in one single Docker
Stars: ✭ 49 (-74.87%)
Mutual labels:  dns-server
devops-notes
My technical documentation in the SRE / DevOps paradigm.
Stars: ✭ 19 (-90.26%)
Mutual labels:  dns-server
Secure-Adblocking-DNS
Secure (DNS-over-TLS) Adblocking (Pi-hole) Recursive (unbound) Server System setup
Stars: ✭ 19 (-90.26%)
Mutual labels:  dns-server
ljdns
A contemporary DNS library using LuaJIT FFI.
Stars: ✭ 26 (-86.67%)
Mutual labels:  dns-server
afdns
Ad free DNS server. A docker container with a DNS server configured to block advertisement hosts.
Stars: ✭ 27 (-86.15%)
Mutual labels:  dns-server
newdns
A library for building custom DNS servers in Go.
Stars: ✭ 40 (-79.49%)
Mutual labels:  dns-server
gochinadns
Project archived: I believe Clash has provides a more elegant DNS & proxy solution. So there is no need to maintain this project. Have fun guys! ----- A drop-in replacement for ChinaDNS, with a better code implementation and several bugfixes.
Stars: ✭ 38 (-80.51%)
Mutual labels:  dns-server
coredns
CoreDNS is a DNS server that chains plugins
Stars: ✭ 8,962 (+4495.9%)
Mutual labels:  dns-server
xip.name
Simple wildcard DNS inspired by xip.io
Stars: ✭ 143 (-26.67%)
Mutual labels:  dns-server
Windows.10.DNS.Block.List
Windows DNS Block List
Stars: ✭ 18 (-90.77%)
Mutual labels:  dns-server
fastdns
Fast DNS package for Go. Tuned for high performance. Zero memory allocations in almost paths. Up to 1M QPS on a single host.
Stars: ✭ 67 (-65.64%)
Mutual labels:  dns-server
NETMF-Toolkit
The .NET Micro Framework Toolkit (using Microsoft .NET Micro Framework)
Stars: ✭ 13 (-93.33%)
Mutual labels:  dns-server
AmpliSpy
Check local or remote list of DNS servers for suitability in DNS Amplification DoS.
Stars: ✭ 39 (-80%)
Mutual labels:  dns-server
Public-DNS
site.futa.gg
Stars: ✭ 38 (-80.51%)
Mutual labels:  dns-server
ddns
Simple restful dynamic DNS service
Stars: ✭ 25 (-87.18%)
Mutual labels:  dns-server
SnitchDNS
Database Driven DNS Server with a Web UI
Stars: ✭ 169 (-13.33%)
Mutual labels:  dns-server
unbound-dns-firewall
DNS-Firewall Python script for UNBOUND
Stars: ✭ 23 (-88.21%)
Mutual labels:  dns-server
dnsfwd
DNS forwarder over a (TCP) virtual circuit
Stars: ✭ 21 (-89.23%)
Mutual labels:  dns-server
zonemanager
Central DNS/DHCP database with replication to Amazon Route53, BIND, MikroTik routers and other services.
Stars: ✭ 29 (-85.13%)
Mutual labels:  dns-server
Alfis
Alternative Free Identity System
Stars: ✭ 162 (-16.92%)
Mutual labels:  dns-server

sslip.io

Test Type Status
Production Nameservers ci.nono.io
DNS Server Unit Tests ci.nono.io

sslip.io is a DNS server that maps specially-crafted DNS A records to IP addresses (e.g. "127-0-0-1.sslip.io" maps to 127.0.0.1). It is similar to, and inspired by, xip.io.

If you'd like to use sslip.io as a service, refer to the website (sslip.io) for more information. This README targets developers; the website targets users.

Quick Start

git clone [email protected]:cunnie/sslip.io.git
cd sslip.io/bosh-release/src/sslip.io-dns-server/
sudo go run main.go
 # sudo is required on Linux, but not on macOS, to bind to privileged port 53

In another window:

dig @localhost 192.168.0.1.sslip.io +short
 # should return "192.168.0.1"

Quick Start Tests

go get github.com/onsi/ginkgo/v2/ginkgo
go get github.com/onsi/gomega/...
sudo ~/go/bin/ginkgo -r .
 # sudo is required on Linux, but not on macOS, to bind to privileged port 53

Directory Structure

  • src/ contains the source code to the DNS server.
  • ci/ contains the Concourse continuous integration (CI) pipeline and task.
  • spec/ contains the tests for the production nameservers. To run the tests locally:
    DOMAIN=sslip.io rspec --format documentation --color spec/
  • k8s/document_root/ contains the HTML content of the sslip.io website. Please run tidy -im -w 120 k8s/document_root/index.html before submitting pull requests.
  • bosh-release/ contains the BOSH release. BOSH is the mechanism we use to deploy the servers, and the sslip.io BOSH release is a packaging of the DNS server (analogous to a .msi, .pkg, .deb or .rpm)

DNS Server

The DNS server is written in Golang and is not configurable without modifying the source:

  • it binds to port 53 (you can't change it)
  • it only binds to UDP (no TCP, sorry)
  • The SOA record is hard-coded with the exception of the MNAME (primary master name server) record, which is set to the queried hostname (e.g. dig big.apple.com @ns-aws.nono.io would return an SOA with an MNAME record of big.apple.com.
  • The NS records are hard-coded (ns-aws.sslip.io, ns-azure.sslip.io, ns-gce.sslip.io)
  • The MX records are hard-coded to the queried hostname with a preference of 0, with the exception of sslip.io itself, which has custom MX records to enable email delivery to ProtonMail
  • There are no SRV records

Acknowledgements

  • Sam Stephenson (xip.io), Roopinder Singh (nip.io), and the other DNS developers out there
  • The contributors (@normanr, @jpambrun come to mind) who improved sslip.io
  • Jenessa Petersen of Let's Encrypt who bumped the rate limits
  • Natalia Ershova of JetBrains who provided a free license for open source development
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].