Commit Graph

36 Commits

Author SHA1 Message Date
Brian Cunnie
ddde94a4c8 4.1.0: hexadecimal notation 2025-06-23 05:10:08 -07:00
Brian Cunnie
a43dc4a057 4.0.0: nip.io 2025-06-15 16:14:05 -07:00
Brian Cunnie
e5450f579a ns-ovh-sg → ns-do-sg; +ns-gce
We replace `ns-ovh-sg` with `ns-do-sg`; this is a purely financial
decision: `ns-ovh-sg` costs $60/month, $720/year.

`ns-do-sg` (Digital Ocean), is also a Singapore-based DNS server. It's a
basic-regular-2vcpu-4GiB RAM-80GB SSD-4TiB bandwidth for $24/month,
$288/year.

That's a yearly savings of $432.

I had originally overspec'ed the Singapore server because I suspected
that there was a ton of traffic in Asia; I was wrong. It's not even 20%
the traffic of Europe or North America. I am confident the Digital Ocean
server will be able to handle it.

I also reintroduce `ns-gce` as the second server in North America, backing
up `ns-hetzner`. My hope is that `ns-hetzner` carries most of the load,
and `ns-gce` carries the rest, but not so much as to trigger Google
Cloud Platform's (GCP's) expensive bandwidth billing.

| DNS server | Queries / second |
|:-----------|-----------------:|
| ns-hetzner |          10706.4 |
| ns-ovh     |          10802.0 |
| ns-ovh-sg  |           1677.7 |
2025-05-20 20:56:47 -04:00
Brian Cunnie
f634ea9dec Build an ARM64 version for Windows
...because Windows supports ARM 64.

I plan to release RISC-V variants once the X280 demo board becomes
available.
2025-05-20 09:30:52 -07:00
Brian Cunnie
50e6d71ee4 ns-gce is dead! Long live ns-ovh-sg!
I'm worried the traffic to my GCP server will cost me a hundred dollars
in bandwidth fees. It has a volume similar to my late AWS server which,
in its last month, racked up ~$130 in bandwidth fees!

I'm also trying to balance the servers more geographically: instead of
having two servers in the US and none in Asia, I'll have one server in
the US and one in Asia (Singapore).

The OVH server in Asia is expensive — $60/month instead of $20/month for
the OVH server in Warsaw. Also there's a monthly bandwidth cap in
Singapore in addition to the 300 Mbps cap.

I went with a dedicated server, similar to the one in Warsaw, but I took
the opportunity to upgrade it (same price):

- ns-ovh:    KS-4: Intel Xeon-E3 1230 v6
- ns-ovh-sg: KS-5: Intel Xeon-E3 1270 v6

I'm hoping that by adding this server to Singapore, the traffic to the
ns-ovh, the Warsaw server, will lessen, and I won't get thos "Anti-DDoS
protection enabled for IP address 51.75.53.19" emails every few days.

Current Queries per second:

- 4,087 ns-gce
- 1,131 ns-hetzner
- 7,183 ns-ovh
2025-04-27 06:30:43 -07:00
Brian Cunnie
64cf7b6bc1 3.2.6: -ns-azure, ns-aws → "blocked" 2025-01-04 11:51:18 -08:00
Brian Cunnie
508f058a7a 3.2.5: Minor bugfixes, tweaks 2024-12-03 11:07:07 -08:00
Brian Cunnie
1da3b67af2 3.2.4: Introduce new nameserver, ns-hetzner.sslip.io 2024-11-16 17:26:04 -08:00
Brian Cunnie
c6c5435e4a 3.2.3: ns-aws is no longer an NS for sslip.io 2024-11-04 18:14:17 -08:00
Brian Cunnie
078a69f75e 3.2.2: Join the Public Suffix List 2024-10-08 18:53:08 -07:00
Brian Cunnie
d0c3927415 3.2.1: Return NS records in random order 2024-09-17 06:34:32 -07:00
Brian Cunnie
c4310ebb86 3.2.0: Introduce new nameserver, ns-ovh.sslip.io 2024-09-15 17:45:01 -07:00
Brian Cunnie
bce9e3971b 🐞 Fix broken paths caused by moving code
When we promoted the Golang code to the root of the repo, we neglected
to update the paths in the documentation, helper scripts, and pipelines.

This commit addresses that oversight by updating the paths.
2024-05-11 10:54:54 -07:00
Brian Cunnie
27d7f4bcd6 3.1.0: Shorten TTL for publicly-accessible A & AAAA records 2024-03-09 07:20:50 -08:00
Brian Cunnie
aacd566ab4 3.0.0: enable TCP binding in addition to UDP 2023-10-04 08:07:03 -07:00
Brian Cunnie
451ad0ef5f 2.7.0: remove key-value store 2023-03-13 16:46:20 -04:00
Brian Cunnie
776fe532ce 2.6.2: -quiet suppresses logs for each query 2022-11-26 13:55:38 -08:00
Brian Cunnie
262a1e0ea1 2.6.1: -addresses flag enables custom addresses 2022-11-11 10:48:37 -08:00
Brian Cunnie
f598bb52c7 Version 2.6.0: PTR records for IPv4 & IPv6 2022-07-14 18:34:40 -07:00
Brian Cunnie
50d843a16a Version 2.5.4: .acme_challenge.k-v.io isn't settable 2022-04-30 16:42:35 -07:00
Brian Cunnie
4d339cd861 Version 2.5.3: k-v.io is operational 2022-04-22 14:33:47 -07:00
Brian Cunnie
294f54a79a Version 2.5.2: DELETE on k-v.io returns no TXT records
The original behavior was to return the deleted record, which
inadvertently prolonged the lifetime (in DNS cache) of the record which
was meant to expire as soon as possible.

- Removed the instructions to create a BOSH release. We are no longer
  creating a BOSH release because we needed to colocate an etcd release
  alongside the BOSH release, and we couldn't find an etcd BOSH release.
- Updated the instructions to run a quick test against the sslip.io DNS
  server locally (sanity check) instead of deploying a VM with the BOSH
  release & testing against that.
- Updated the instructions for updating ns-azure's DNS server. ns-azure
  is no longer a BOSH-deployed VM.
2022-04-13 12:55:34 -07:00
Brian Cunnie
cd2b14b924 BOSH release: 2.5.1: block phishers with CIDRs 2022-02-26 16:41:05 -08:00
Brian Cunnie
51ed47317e BOSH release: 2.5.0: block phishers 2022-02-06 19:51:06 -08:00
Brian Cunnie
8f2890d90e BOSH release: 2.4.2: fix panic() 2022-01-22 09:41:49 -08:00
Brian Cunnie
bbf1925be4 BOSH release: 2.4.1: fewer panics
customized records w/ non-existent TXTs don't panic().
2022-01-20 08:10:03 -08:00
Brian Cunnie
c0196ed617 🐞 Don't run etcd tests without etcd
Now we check first to see if etcd is running before diving in & testing
against it.

fixes:
```
Unexpected error:
    <*fmt.wrapError | 0xc0003bc8e0>: {
        msg: "couldn't GET \"my-key\": context deadline exceeded",
        err: <context.deadlineExceededError>{},
    }
```
2022-01-20 04:39:32 -08:00
Brian Cunnie
bd63421c3f BOSH release: 2.3.0: kv.sslip.io key-value store 2021-12-04 08:16:53 -08:00
Brian Cunnie
90b94baa29 BOSH release: 2.2.4: Deprecate nono.io nameservers 2021-11-28 13:08:49 -08:00
Brian Cunnie
fda3baeaaa Add NS servers in sslip.io domain
We currently use three nameservers in the `nono.io` domain, but that's
confusing--why not have the nameservers in the `sslip.io` domain?

This commit starts the ball rolling to convert to the sslip.io. We'll
have a brief period where we have _both_ `nono.io` and `sslip.io`
nameservers.

At which point we'll add the `sslip.io` nameservers to our registrar,
Namecheap.com.

Once they've been added to our registrar, we'll wait a day or two to
propagate, and then we'll delete references to the `nono.io`
nameservers.
2021-11-27 10:50:04 -08:00
Brian Cunnie
eed67fdf4d BOSH release: 2.2.2: ip.sslip.io TXT returns IP
Our documentation was wrong; our homepage said to get the origin IP
address by querying the TXT record of the root, i.e. `dig
@ns-aws.nono.io txt . +short`; however, our code worked differently: it
returned the origin IP when the `.ip` TLD was queried.

The new behavior is that it returns the origin IP when `ip.sslip.io.` is
queried, and the documentation now reflects that behavior.

Also, that behavior is marked "experimental" to give us leeway to
change.

[fixes #11]
2021-11-01 07:24:54 -07:00
Brian Cunnie
8ce23653bb BOSH release: 2.2.1: version.sslip.io TXT
- Returns version information for DNS server
- Contains 3 strings:
  - Semantic version, e.g. "2.2.1"
  - Date of compilation
  - Latest git hash

Note: the BOSH Release will have a different compilation date &
different git hash than the released executables; the semantic version
will be the same.
2021-10-06 05:16:46 -07:00
Brian Cunnie
f1f66a0f3b dig txt version.sslip.io returns version
I needed a way of determining the version that a server was running. I
orginally considered a command-line argument, but then I thought, "Why
not create a DNS record for it? That way I can query running servers
without needing to ssh onto the machine."

The TXT record consists of three distinct strings: version, compile
date, and git hash.

```bash
dig txt version.sslip.io +short
    "2.2.1"
    "2021/10/03-15:08:54+0100"
    "6a928eb"
```
2021-10-03 15:34:52 +01:00
Brian Cunnie
406b81c340 Dockerfile, Binaries include ARM (arm64 / aarch64)
Dockerfile:
- We use `CMD` instead of `ENTRYPOINT` because it's marginally easier
  to debug.
- We include 64-bit ARM, but not 32-bit
- We had to re-order the steps so that `apk add bind-tools` came
  before copying the binary; that fixed a bug where the
  `sslip.io-dns-server` wasn't on the ARM container filesystem (but it
  was on the amd64 filesystem 🤔)

Binaries
- We now build arm64 (GOARCH) versions of FreeBSD, Linux, and macOS
  (GOOS), but not Windows. It apparently doesn't have arm64 support yet.
2021-03-08 20:29:31 -08:00
Brian Cunnie
b2396ff081 🐞 bin/make_all compiles in correct directory
We had moved the DNS server to a sub-directory to make room for a
sibling application, a small DNS server + small HTTP server.

fixes:
```
cannot find package "main.go" in any of:
	/usr/local/Cellar/go/1.15.6/libexec/src/main.go (from $GOROOT)
	/Users/cunnie/go/src/main.go (from $GOPATH)
```
2021-01-18 10:42:54 -08:00
Brian Cunnie
3578d96970 make_all: generate executables for all GOOSes
...well, maybe not _all_ GOOSes, but at least the important ones.

And git should ignore the executables so that we don't accidentally
check them in.
2020-12-01 16:08:44 -08:00