May 132019

Oh, the sadness. Oh, the heartbreak. Never mind, stiff upper lip and all that, and remembering that I got the thing from the dump (sans disk and RAM) over a 18 months ago, it has not had a bad run.

Aaand just in case I come across a PSU and get her running again, she was:

Old OMV4 box

DELL Inspiron 545
Serial: 839DK4J
Model: DCMF
Reg Type: 09040
Printed on mobo:

So, on to something bigger and better:


lshw -short

system SYS-6016T-NTRF-GI016 (To Be Filled By O.E.M.)
bus X8DTU-F
memory 64KiB BIOS
American Megatrends AMIBIOS v02.67 # <del>; on POST

2 x E5645 @ 2.40GHz
/0/4 processor Intel(R) Xeon(R) CPU
/0/4/5 memory 384KiB L1 cache
/0/4/6 memory 1536KiB L2 cache
/0/4/7 memory 12MiB L3 cache
6 cores, 12 threads
Max # of Memory Channels 3


Twelve 240-pin DIMM sockets support:
up to 192 GB* of DDR3 Registered ECC
up to 48 GB of Unbuffered ECC/Non-ECC DDR3 1333 MHz/1066 MHz/800 MHz
12 DIMM modules.

(*Refer to Supermicro’s memory recommendation list posted on our website at See Section 2-4 in Chapter 2 for DIMM Slot Population.)

lshw -c MEMORY

description: DIMM 1333 MHz (0.8 ns)
product: HMT151R7TFR4C-H9
vendor: Hyundai
physical id: 4
serial: 80B7B92B
slot: P0_DIMM3A
size: 4GiB
width: 64 bits
clock: 1333MHz (0.8ns)

And from memory sticker…

4GB 2Rx4 PC3 – 10600R – 9 – 10 – E1
HMT151R7TFR4C-H9 T7 AE – C 1123

Sep 212018

Sooo, my TP-Link Archer C8 AC1750 Gigabit router decided to not play nice after a short power outage. Didn’t do much anyway except keep a couple of machines in a their own little subnet in which the pi-hole was located.

Replaced it with… NETGEAR GS108Tv2 8-Port Gigabit managed switch and flatten the network a little. Everything was peachy with that set up, but the pihole was still on… reconfigured that with pihole -r and all looked well except for the pi-hole could not ping outside of the LAN. Grrr! Much hair pulling until…

pi@pihole:~ $ ping
PING ( 56(84) bytes of data.
From icmp_seq=1 Destination Host Unreachable
[11]+  Stopped                 ping
pi@pihole:~ $ clear

pi@pihole:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         UG    202    0        0 eth0
default         UG    303    0        0 wlan0
default         UG    304    0        0 wlan1   U     202    0        0 eth0   U     303    0        0 wlan0   U     304    0        0 wlan1

pi@pihole:~ $ sudo route del -net gw metric 202 dev eth0
pi@pihole:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         UG    303    0        0 wlan0
default         UG    304    0        0 wlan1   U     202    0        0 eth0   U     303    0        0 wlan0   U     304    0        0 wlan1
pi@pihole:~ $ ping
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=1 ttl=59 time=20.9 ms
64 bytes from icmp_seq=2 ttl=59 time=21.3 ms


Lord knows when I purchased the Archer, but it was a good few years ago, and I sure as eggs didn’t spent that much on it. What gives?

Jun 162018

Getting pretty annoyed with keeping track of which browser on which machine has which add blockers installed, so it’s time for a more holistic approach. Enter, stage left, the Pi-hole. In short it:

…acts as a forwarding DNS server, which means if it doesn’t know where a domain is, it has to forward your query to another server that does. When you install Pi-hole, it knows where the ad-serving domains are (because you tell it), so it doesn’t forward those requests.

With a Rapsberry Pi 3 model b and a 64GB micro SD card, a set-up that is beefier than it needs to be, but who knows what the Pi will be used for in the future…

#1 Get Raspbian, and format micro SD card— after much jiggling with the unlock tab on the adapter and delicately repeatedly inserting-half-inserting into 2012 Macbook Pro’s gunked-up card reader port…

$ wget

$ unzip -a

$ diskutil list
/dev/disk3 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *62.0 GB    disk3
   1:               Windows_NTFS                         62.0 GB    disk3s1

$ sudo diskutil eraseDisk FAT32 RASPBIAN MBRFormat /dev/disk3
Finished erase on disk3

$ df -h
/dev/disk3s1    62Gi  1.5Mi   62Gi     1%       0                   0  100%   /Volumes/RASPBIAN

$ sudo diskutil unmount /dev/disk3s1
Volume RASPBIAN on disk3s1 unmounted

$ sudo dd if=/Users/yearluk/Downloads/2018-04-18-raspbian-stretch.img of=/dev/disk3 bs=4m

#2 First boot on the Pi, change hostname, and run the installer…

$ sudo apt update
$ sudo apt upgrade
$ sudo nano /etc/hostname
$ curl -sSL | bash

#3 Select eth0 as the interface, and (Cloudflare) and (Google) as the upstream DNS providers.

Default Gateway:

Log queries and select web-gui option.

admin password xxxxxxx

install log at /etc/pihole/install.log

web gui

As easy as Pi 🙂

Set up SSH and VNC access (just a couple of checkboxes in Raspberian’s GUI), enable wi-fi (DCHP–

Expand blacklists…

curl -s | pihole -g
curl -s | pihole -g
curl -s | pihole -g
curl -s | pihole -g
curl -s | pihole -g
curl -s | pihole -g
curl -s | pihole -g

Unbound and setting up resolving/recursive DNS (rather than merely forwarding)

What’s the difference? With forwarding, if a name has not been previously associated with an IP (ie. ached on the pi-hole), the request is sent upstream and the result cahed.

Aaand in recursive… request is sent to ROOT servers for resolving say, “.us”, and thence to TLD name servers. Domain lookup will go to AUTHORATATIVE servers handling “yearl” (and subdomains), and all will be relayed and chached locally. So, a few more steps? Why do this? Neither Cloudflare nor Google (or whatever my upstream DNS would have been) will know where I am going. So, err privacy. Why not do this? It will take longer for the first resolution of a name.

Install the recursive DNS resolver:

sudo apt install unbound

Update list of primary root servers:

wget -O root.hints
sudo mv root.hints /var/lib/unbound/

Configure unbound:

sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
    verbosity: 1
    port: 5353
    do-ip4: yes
    do-udp: yes
    do-tcp: yes

<h1>May be set to yes if you have IPv6 connectivity</h1>

<pre><code>do-ip6: no

# Use this only when you downloaded the list of primary root servers!
root-hints: "/var/lib/unbound/root.hints"

# Trust glue only if it is within the servers authority
harden-glue: yes

# Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS
harden-dnssec-stripped: yes

# Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes
# see for further details
use-caps-for-id: no

# Reduce EDNS reassembly buffer size.
# Suggested by the unbound man page to reduce fragmentation reassembly problems
edns-buffer-size: 1472

# TTL bounds for cache
cache-min-ttl: 3600
cache-max-ttl: 86400

# Perform prefetching of close to expired message cache entries
# This only applies to domains that have been frequently queried
prefetch: yes

# One thread should be sufficient, can be increased on beefy machines
num-threads: 1

# Ensure kernel buffer is large enough to not loose messages in traffic spikes
so-rcvbuf: 1m

# Ensure privacy of local IP ranges

And start unbound and validate:

sudo service unbound start
dig @ -p 5353
; &lt;&lt;>> DiG 9.10.3-P4-Raspbian &lt;&lt;>> @ -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 26331
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

; EDNS: version: 0, flags:; udp: 1472
;          IN  A

;; ANSWER SECTION:       3585    IN  A       3585    IN  A

dig @ -p 5353

And then set custom upstram DNS in the pi-hole webgui to “”

Some basic Pi (Debian Stretch base) stuff…

Basic Pi config:

$ sudo raspi-config

Move over, ifconfig!

$ hostname -I

$ ip -4 addr show | grep global
    inet brd scope global eth0
    inet brd scope global wlan0

$ cat /etc/resolv.conf
# Generated by resolvconf

What’re my interfaces default gateways?

$ ip route | grep default | awk '{print $3}'

Can configure a static IP via /etc/network/interfaces or /etc/dhcpcd.conf Might do this when moving the Pi from the subnet to the router “guarding”

$ sudo route add default gw eth0
$ sudo /etc/init.d/networking restart

EDIT (2018-06-19): Pi-hole was running quite nicely over wi-fi (assigned to, went to put it on the LAN and after removing SD card to placement of the Pi board inso some case the SD card decided to go fuck up. Anyhoo repeated above steps with a new (32GB) SD card, and all appears to be peachy-creamy.

Apr 192018

#1 plug laptop into eth0

#2 Edgerouter X defaults to as did the TG589vac, but that doesn’t matter as it is now just a modem

#3 get on same net segment… statically configure laptop to
IP (’cause Douglas Adams, obvs)

#4 Browser to, default login usr and pswd: ‘ubnt’ / ‘ubnt’


OOH WHAT A PRETTY INTERFACE. Kinda overwhelming actually. Enable SSH, enable DNS forwarding on all interfaces. Should be good to go right? Wrong!

$ ping
PING ( 56 data bytes
64 bytes from icmp_seq=0 ttl=59 time=15.007 ms
64 bytes from icmp_seq=1 ttl=59 time=15.275 ms

$ ping
ping: cannot resolve Unknown host

Oh noes.

$ ssh -p 2222 -l ubnt

ubnt@ubnt:~$ show dns forwarding nameservers
 Nameservers configured for DNS forwarding
&#45;---------------------------------------------- available via 'system' available via 'system' available via 'ppp pppoe0' available via 'ppp pppoe0'

ubnt@ubnt:~$ ping
PING ( 56(84) bytes of data.
64 bytes from icmp_req=1 ttl=60 time=18.4 ms
64 bytes from icmp_req=2 ttl=60 time=14.6 ms

ubnt@ubnt:~$ ping
PING ( 56(84) bytes of data.
64 bytes from ( icmp_req=1 ttl=57 time=15.3 ms
64 bytes from ( icmp_req=2 ttl=57 time=15.3 ms

uubnt@ubnt#set service dns forwarding system
uubnt@ubnt# commit
ubnt@ubnt# save
Saving configuration to '/config/config.boot'...
ubnt@ubnt# exit


Now for the rest of the network… but it’s sooo nice outside. There’s this orange thing in the sky, apparently

Apr 192018

Like >90% of folk, I’ve typically used whatever POS modem/router/switch/WAP combo that my ISP supplied me with. These all-in-ones are pretty convenient, but there is something just not right about bundling so many features into a single unit… it basically means that whilst is can do all these things it does not do any one thing particularly well.

Wireless range, for example, is particularly bad (even on the 2.4MHz band). Time for a change. I’ve finally had enough.

#1 get your router’s loin credentials to the service. My ISP had these hard-coded and were not supplied to me. It was a royal waste of 40 minutes trying to explain that I was not trying to login to the TG589vac itself, but instead to use that which allows login to the ISPs edge router… need this to pass on to the replacement router (Ubiquiti’s Edgerouter X) otherwise… no Internetz!

#2 logging in to the TG589vac as “admin” gives one rather limited options, and certainly none for resetting the router. It’s not in the consumer documentation, but log in as “engineer” and use the value next to “Access Key” on the bottom of the device.

#3 Gateway >> Setup Your Gateway >> change “routed type” to bridge

#4 if VSDL retain VLAN 101; if ADSL set ATM VP to 0 and ATM VC to 38

#5 Cross fingers and reboot

#6 Congratulations you now have no Internet access; the TG589vac is now just a modem!

#7 need to get into the device again… that’s an ethernet cable into port #4, so obvs do not connect your new router to this port.

For giggles as “engineer” you get to see that your ISP has probably enabled TR-069 / CWMP. The what now? That’s the L7 protocol that kept your device up-to-date with firmware and such… or is/was a means for them to have get another means to sniff your packets. If you disabled it as soon as you initially got your device, TURN IT BACK ON BEFORE YOU CALL your ISP’s tech support (see #1). Mine got real pissy when I called on an unrelated issue and they could not get in and poke around.

Feb 082012

It can take a wee while after getting “sage” to hit 1500. Lots of pretty mundane traceroute6-ing, ping-ing and such, but I stuck through it:

IPv6 Certification Badge for sjy2


Really I should have scripted something to chron submit the result entries when the command result was obviously valid, but by the time I had found a reliable list of valid ipv6 addrs that were alive and correctly reporting it was too late for me to bother… and besides I sort of enjoyed the daily catharsis of taking five minutes to submit.

I’d usually stretch it out for ten or fifteen minutes when he kids were being particularly narky… sorry Mrs Sjy2!

Of course it’s of no practical use to me; but Hurricane Electric‘s IPv6 certification certainly has raised ipv6 awareness, I’d say. Actually, I lied there… one tangible benefit was free dinner and cocktails aboard the USS Hornet. My eldest and I took a relative. We had a blast.

Jan 312012

Going to be changing ipv4 addresses a lot over the next little while, so I’ve decided to try a different v4-6 brokering arrangement.’s tunnelbroker has been rock solid and I’ve been using it on and off since ’08, but I think it time to try something else.

The ideal would be a self-monitoring client that identifies local ipv4 changes here (kind like a dynDNS client might), and renegotiate an ipv6 endpoint to tunnel through based on that change.’s configureation is a little more static than that, and there is no API that I can see that I can hook into to write that client myself. I sure as hell am not going the ‘scrape screens’ route for this.

First up is sixxxs. Looks like they have a client (AICCU) that might do the trick. Here goes.

A lot of the below is lifted from No apologies from me for that. Just wanted it in a concise space for future reference.

$ tar -zxf aiccu_current.tar.gz
$ cd aiccu
$ make clean
$ make
$ sudo make install
$ chmod 600 /etc/aiccu.conf
$ cd /usr/sbin
$ sudo aiccu start
$ ifconfig -a


gif0: flags=8051 mtu 1280 tunnel inet --&gt; inet6 fe80::222:41ff:fe35:cf82%gif0 prefixlen 64 scopeid 0x2 inet6 2001:4830:1100:1c8::2 --&gt; 2001:4830:1100:1c8::1 prefixlen 128
Jun 182011

Guru technical test — not done yet, despite being sage!
covers technical knowledge of IPv6 routing and IPv6 related protocols.

When using auto-configuration, what is used from the host to configure the last 64bits of the IPv6 address?
Random number generator is used
Nothing on the host is used
The IPv4 address on the ethernet interface
The MAC address of the ethernet interface
The loopback interface IPv4 address
Question 2
A MAC address is only 48bits. So when using auto-configuration, what is used to fill in the missing 16bits?
Nothing, a MAC is really 64bits
Question 3
On many routers, which one of the following commands is used to configure an IPv6 address on an interface?
ip address 2001:A:B:C::1/64
ipv6 address 2001:A:B:C:1
ipv6 address 2001:A:B:C::1/64
ipv6 address 2001:A:B:C:1/64
Question 4
What is the length of an IPv6 packet header?
40 bytes
128 bits
16 bytes
32 bits
Question 5
Which of the following organizations assigns IPv6 addresses?
All of the above
Question 6
What protocol number is used for 6in4 IPv4 packets?
Question 7
Which of the following is the 6to4 IPv6 prefix?
Question 8
Which of the following well-known prefixes is used for Teredo?
Question 9
Which of the following is an IPv4-mapped IPv6 address?
Question 10
On operating systems that support it, IPv4-mapped IPv6 addresses are used to:
make it so that you have to write separate code for IPv6 socket calls and IPv4 socket calls
map IPv4 addresses to an IPv6 address to make it so that IPv6 socket system calls can be used with both IPv4 or IPv6 addresses
map IPv6 addresses to IPv4
Question 11
Which of the following is an IPv4-compatible IPv6 address?
Question 12
IPv4-compatible IPv6 addresses are deprecated in RFC 4291.
Question 13
Should you ever see packets with IPv4-mapped IPv6 addresses on the wire (outside of a host)?
Question 14
Which version of OSPF supports IPv6?
Question 15
Which of the following can be used by an IPv6 host to learn the address of a default gateway?
stateless autoconfiguration
neighbor introduction protocol
neighbor discovery protocol
international autoconfiguration
Question 16
Which of the following can be used by a host to learn its own IPv6 address?
neighbor discovery protocol
international autoconfiguration
neighbor introduction protocol
stateless autoconfiguration
Question 17
If you translate IPv4 packets to IPv6 or IPv6 packets to IPv4, this is called:
completely compatible with all protocols
not possible
Question 18
On many routers, what command shows IPv6 routes?
show ipv6 ospf summary
show ipv6 route
show ipv6 bgp summary
Question 19
On many routers, what command shows IPv6 BGP sessions?
show ipv6 ospf summary
show ipv6 bgp route
show ipv6 bgp summary
Question 20
On many routers, what command shows IPv6 BGP routes?
sh ipv6 ospf
sh ipv6 bgp
Jun 182011

Covers technical knowledge of well known IPv6 prefixes and expands on your understanding of IPv6 related Linux and Windows commands.

1. What command shows IPv6 addresses configured on ethernet interfaces under UNIX (Linux, FreeBSD, etc.)?
ip -a
ifconfig /all
ip link show
ifconfig X

2. What command shows IPv6 addresses configured on ethernet interfaces under Microsoft Windows?
netsh interface show
ifconfig /all
ipconfig X

3. Under FreeBSD, what does the generic tunneling interface start with?
gif X

4. Under Linux, what kernel module needs to be loaded to support IPv6 networking?
ipv6 X

5. Are routers allowed to fragment IPv6 packets?
No X

6. How many bytes are in an IPv6 address?
16 X

7. How many /48 subnets are available in a /32 prefix?
256 XX
128 XX
65536 X

8. Which protocol is used for manually configured tunnels?
6in4 X

9. Which of the following is the IPv6 documentation prefix?
::/8 XX
2002::/16 XX
2001:db8::/32 X

10. Which of the following is the IPv6 link-local prefix?
fe80::/10 X

11. Which of the following is the IPv6 multicast prefix?
ff00::/8 X

12. Which of the following is the IPv6 ULA (unique local addresses) prefix?
fc00::/7 X

13. Which of the following is a subnet of 2001:db8::/32?
2001:db8:7fa5::/48 X

14. On Linux, how would you traceroute to the IPv6 address of
traceroute6 X

15. On Windows Vista, how would you traceroute to the IPv6 address of
tracert X

16. On Linux, what is the IPv6 ping command?
ping6 x

17. Which command forces the UNIX command ssh to use IPv6 to connect to (useful for domains with both A and AAAA records)?
ssh -4
ssh -6 X

18. You would force the UNIX command ssh to use IPv4 (useful if it had both A and AAAA records) to connect to using which command?
ssh -6
ssh -4 X

19. Which command forces the UNIX command wget to use IPv6 to make a HTTP GET request to (useful for domains with both A and AAAA records)?
wget -4
wget -6 X

20. Which command forces the UNIX command wget to use IPv4 to make a HTTP GET request to (useful for domains with both A and AAAA records)?
wget -4 X
wget -6

21. Which command forces the UNIX command mtr to use IPv6 to traceroute to (useful for domains with both A and AAAA records)?
mtr -4
mtr -6 X

22. Which command forces the UNIX command mtr to use IPv4 to traceroute to (useful for domains with both A and AAAA records)?
mtr -4 X
mtr -6
Jun 182011

Covers technical knowledge of DNS and general IPv6 topics.

1. On Redhat, CentOS, and Fedora Core systems that don't accept ::/0 as the IPv6 default route, which of the following should you use instead?
2000::/3 X

2. When configuring forward DNS entries for use with an IPv6 address, what record type do you use?

3. When configuring reverse DNS with BIND for addresses in the IPv6 allocation 2001:A:B:C::/64, what is the correct format for the zone? X

4.What is the IPv6 default route?
::/0 X

5. What is the IPv6 localhost address?
::1/128 X

6. Which of the following is a link-local address?
::1 XX
fe80::20c:dbff:fefb:232b X

7. Which of the following URLs specifies a literal IPv6 address correctly?
http://[2001:470:0:64::2] X

8. Which of the following URLs specifies a literal IPv6 address and port number correctly?
https://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443 X

9. If you run native IPv4 and IPv6 at the same time this is called:
Dual stack X

10. How do you use the dig command to get the IPv6 address record for domain
dig 6
dig A
dig AAAA X

11. How do you use the dig command to get the PTR record for the IPv6 address 2001:470:0:76::2?
dig 2001:470:0:76::2
dig 2001:470:0:76::2 PTR
dig -x 2001:470:0:76::2 X