diff options
| author | Lexi Winter <lexi@le-fay.org> | 2025-06-07 13:40:00 +0100 |
|---|---|---|
| committer | Lexi Winter <lexi@le-fay.org> | 2025-06-07 13:40:00 +0100 |
| commit | cbc2f2d912f37401960801775c554ba3536ce17a (patch) | |
| tree | ea560bae1c7cb2557a2c9d108de2f1b36f67966c | |
| parent | 9661cef231fd1859f02c87d9766f2a33f998b8dd (diff) | |
| download | dns-cbc2f2d912f37401960801775c554ba3536ce17a.tar.gz dns-cbc2f2d912f37401960801775c554ba3536ce17a.tar.bz2 | |
handle IPv6 reverse better
| -rwxr-xr-x | bin/process | 46 | ||||
| -rw-r--r-- | zones/5.b.a.a.0.b.8.0.1.0.0.2.ip6.arpa.zone.erb | 54 | ||||
| -rw-r--r-- | zones/le-fay.org.zone.erb | 43 |
3 files changed, 88 insertions, 55 deletions
diff --git a/bin/process b/bin/process index e95dbb9..4effb17 100755 --- a/bin/process +++ b/bin/process @@ -3,13 +3,55 @@ require 'erb' require 'optparse' +def v6rev(input) + # Parse the input to separate address and netmask + address, netmask = input.split('/') + netmask = netmask.to_i + + # Calculate how many bits we actually have (128 - missing bits) + remaining_bits = 128 - netmask + remaining_groups = remaining_bits / 16 + + # Expand the partial address within the context of just the remaining bits + expanded_suffix = expand_ipv6_suffix(address, remaining_groups) + + # Convert to hex string and get nibbles + hex_string = expanded_suffix.gsub(':', '') + + # Split into individual nibbles and reverse for PTR format + nibbles = hex_string.chars.reverse + + # Join with dots + nibbles.join('.') +end + +def expand_ipv6_suffix(address, total_groups) + # Handle :: expansion within the context of just our suffix + if address.include?('::') + parts = address.split('::') + left_parts = parts[0].empty? ? [] : parts[0].split(':') + right_parts = parts[1].empty? ? [] : parts[1].split(':') + + # Calculate how many zero groups we need + missing_groups = total_groups - left_parts.length - right_parts.length + zero_groups = ['0000'] * missing_groups + + all_parts = left_parts + zero_groups + right_parts + else + all_parts = address.split(':') + end + + # Pad each part to 4 digits + all_parts.map { |part| part.rjust(4, '0') }.join(':') +end + # Hash to store our -D variables template_vars = {} # Parse command line options OptionParser.new do |opts| opts.banner = "Usage: #{$0} [options] <input> <output>" - + opts.on('-DVAR=VALUE', 'Define template variable') do |definition| var, value = definition.split('=', 2) if var && value @@ -19,7 +61,7 @@ OptionParser.new do |opts| exit 1 end end - + opts.on('-h', '--help', 'Show this help') do puts opts exit diff --git a/zones/5.b.a.a.0.b.8.0.1.0.0.2.ip6.arpa.zone.erb b/zones/5.b.a.a.0.b.8.0.1.0.0.2.ip6.arpa.zone.erb index c6f59a9..717763c 100644 --- a/zones/5.b.a.a.0.b.8.0.1.0.0.2.ip6.arpa.zone.erb +++ b/zones/5.b.a.a.0.b.8.0.1.0.0.2.ip6.arpa.zone.erb @@ -1,4 +1,4 @@ -; vim:set ft=eruby.bindzone sw=8 ts=8 sts=8: +; vim:set ft=eruby.bindzone sw=8 ts=8 sts=8 noet: $TTL <%= ttl %> $ORIGIN <%= zone %>. @@ -19,40 +19,36 @@ $ORIGIN <%= zone %>. TXT "v=spf1 -all" ; willow -8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0 PTR willow.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0 PTR ng0.willow.eden.le-fay.org. -0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0 PTR nat-out-v6-willow.inet.le-fay.org. -e.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.0 PTR willow.eden.le-fay.org. -2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.3 PTR ix0-3004.willow.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E PTR wg0.willow.eden.le-fay.org. +<%= v6rev('4::8/48') %> PTR willow.eden.le-fay.org. +<%= v6rev('1::1/48') %> PTR ng0.willow.eden.le-fay.org. +<%= v6rev('3004::2/48') %> PTR ix0-3004.willow.eden.le-fay.org. ; Hosts -3.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR witch.le-fay.org. -4.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR turnera.eden.le-fay.org. -5.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR hemlock.eden.le-fay.org. -0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.1.0.4.c PTR ilythia.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.1.0.4.c PTR ragweed.le-fay.org. -9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0 PTR fuchsia.eden.le-fay.org. -6.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR freebsd15.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0 PTR uk-aai-1.le-fay.org. +<%= v6rev('4::9/48') %> PTR fuchsia.eden.le-fay.org. +<%= v6rev('100::1/48') %> PTR uk-aai-1.le-fay.org. +<%= v6rev('c401::1:3/48') %> PTR witch.le-fay.org. +<%= v6rev('c401::1:4/48') %> PTR turnera.eden.le-fay.org. +<%= v6rev('c401::1:5/48') %> PTR hemlock.eden.le-fay.org. +<%= v6rev('c401::1:6/48') %> PTR freebsd15.eden.le-fay.org. +<%= v6rev('c401:1::1/48') %> PTR ragweed.le-fay.org. +<%= v6rev('c401:1::2/48') %> PTR ilythia.le-fay.org. ; Network devices -7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0 PTR core-1.inet.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR vlan401.core-1.inet.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.4.c PTR vlan402.core-1.inet.eden.le-fay.org. -1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.3 PTR te1.core-1.inet.eden.le-fay.org. -7.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR core-2.inet.eden.le-fay.org. -8.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR core-3.inet.eden.le-fay.org. -9.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR core-4.inet.eden.le-fay.org. -1.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-1.le-fay.org. -2.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-2.le-fay.org. -3.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-3.le-fay.org. -4.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-4.le-fay.org. -5.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-5.le-fay.org. -6.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.1.0.4.c PTR eden-access-6.le-fay.org. +<%= v6rev('4::7/48') %> PTR eden-core-1.le-fay.org. +<%= v6rev('c401::1/48') %> PTR vl401.eden-core-1.le-fay.org. +<%= v6rev('c402::1/48') %> PTR vl402.eden-core-1.le-fay.org. +<%= v6rev('3004::1/48') %> PTR te1.eden-core-1.le-fay.org. +<%= v6rev('c401::2:7/48') %> PTR eden-core-2.le-fay.org. +<%= v6rev('c401::2:8/48') %> PTR eden-core-3.le-fay.org. +<%= v6rev('c401::2:9/48') %> PTR eden-core-4.le-fay.org. +<%= v6rev('c401::2:1/48') %> PTR eden-access-1.le-fay.org. +<%= v6rev('c401::2:2/48') %> PTR eden-access-2.le-fay.org. +<%= v6rev('c401::2:3/48') %> PTR eden-access-3.le-fay.org. +<%= v6rev('c401::2:4/48') %> PTR eden-access-4.le-fay.org. +<%= v6rev('c401::2:5/48') %> PTR eden-access-5.le-fay.org. +<%= v6rev('c401::2:6/48') %> PTR eden-access-6.le-fay.org. ; Misc -5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.0 PTR c1.i.lfns.org.uk. 0.5.0.0.0.0.0.0.0.0.0.0.3.0.0.0.6.0.1.0 PTR eris.lethe.sikol.co.uk. 1.5.0.0.0.0.0.0.0.0.0.0.3.0.0.0.6.0.1.0 PTR charon.lethe.sikol.co.uk. 2.5.0.0.0.0.0.0.0.0.0.0.3.0.0.0.6.0.1.0 PTR tartarus.lethe.sikol.co.uk. diff --git a/zones/le-fay.org.zone.erb b/zones/le-fay.org.zone.erb index 2dca45b..a827a9f 100644 --- a/zones/le-fay.org.zone.erb +++ b/zones/le-fay.org.zone.erb @@ -136,30 +136,25 @@ ng0.willow.eden A 81.187.47.192 ; Network devices -core-1.inet.eden AAAA 2001:8b0:aab5:4::7 - A 81.187.47.197 -te1.core-1.inet.eden AAAA 2001:8b0:aab5:3004::1 - A 81.187.47.206 -vlan401.core-1.inet.eden AAAA 2001:8b0:aab5:c401::1 - A 81.2.96.161 -vlan402.core-1.inet.eden AAAA 2001:8b0:aab5:c402::1 - A 198.18.0.1 -core-2.inet.eden AAAA 2001:8b0:aab5:c401::2:7 -core-3.inet.eden AAAA 2001:8b0:aab5:c401::2:8 -core-4.inet.eden AAAA 2001:8b0:aab5:c401::2:9 -eden-core-1 AAAA 2001:8b0:aab5:4::7 - A 81.187.47.197 -eden-core-2 AAAA 2001:8b0:aab5:c401::2:7 -eden-core-3 AAAA 2001:8b0:aab5:c401::2:8 -eden-core-4 AAAA 2001:8b0:aab5:c401::2:9 -eden-access-1 AAAA 2001:8b0:aab5:c401::2:1 -eden-access-2 AAAA 2001:8b0:aab5:c401::2:2 -eden-access-3 AAAA 2001:8b0:aab5:c401::2:3 -eden-access-4 AAAA 2001:8b0:aab5:c401::2:4 -eden-access-5 AAAA 2001:8b0:aab5:c401::2:5 -eden-access-6 AAAA 2001:8b0:aab5:c401::2:6 -outlet-hemlock.iot.eden A 172.20.193.1 -outlet-rack.iot.eden A 172.20.193.2 +eden-core-1 AAAA 2001:8b0:aab5:4::7 + A 81.187.47.197 +te1.eden-core-1 AAAA 2001:8b0:aab5:3004::1 + A 81.187.47.206 +vl401.eden-core-1 AAAA 2001:8b0:aab5:c401::1 + A 81.2.96.161 +vl402.eden-core-1 AAAA 2001:8b0:aab5:c402::1 + A 198.18.0.1 +eden-core-2 AAAA 2001:8b0:aab5:c401::2:7 +eden-core-3 AAAA 2001:8b0:aab5:c401::2:8 +eden-core-4 AAAA 2001:8b0:aab5:c401::2:9 +eden-access-1 AAAA 2001:8b0:aab5:c401::2:1 +eden-access-2 AAAA 2001:8b0:aab5:c401::2:2 +eden-access-3 AAAA 2001:8b0:aab5:c401::2:3 +eden-access-4 AAAA 2001:8b0:aab5:c401::2:4 +eden-access-5 AAAA 2001:8b0:aab5:c401::2:5 +eden-access-6 AAAA 2001:8b0:aab5:c401::2:6 +outlet-hemlock.iot.eden A 172.20.193.1 +outlet-rack.iot.eden A 172.20.193.2 ; Miscellaneous vpn-in-1.eden AAAA 2001:8b0:aab5:1::1 |
