Came across Revo Uninstaller which seems to be very useful tool to make sure that all files and registry keys are actually removed from windows when you uninstall a program.
https://www.revouninstaller.com/revo-uninstaller-free-download/
Windows Uninstaller tool
Posted in Blog
ZFS on Proxmox thin-provisoned VMs disks
I’ve been a huge fan of promox since version 1.0 – they later implemented native support of my favorite filesystem ZFS and if you are an early adopter like me your proxmox /etc/pve/storage.cfg file may not have some settings like sparse that the new installations configure by default.
Checking if ZFS VM disk is thin-provisoned
Use the following command to see the zfs properties we care about:
zfs get volblocksize,volsize,refreservation,used gdata/pve/base-152-disk-0
Expected output
NAME PROPERTY VALUE SOURCE
gdata/pve/base-152-disk-0 volblocksize 8K default
gdata/pve/base-152-disk-0 volsize 64G local
gdata/pve/base-152-disk-0 refreservation none local
gdata/pve/base-152-disk-0 used 7.31G -
The property refreservation=none tells us this disk is thin-provisioned. Meaning ZFS won’t guarantee and account for the VM ‘max disk size’ in the zpool usage metrics. This may be helpful if you want to overprovision a VM disk to say 1TB but rarely use that much and you don’t want zpool list to claim you have 1TB phantom disk usage.
What does a non thin-provisioned ZFS VM disk look like?
The volsize=64G and refreservation=64G would be set on the example above.
Posted in Blog
ASRock Rack X470D4U build notes
My notes and resources on X470D4U. This motherboard needs special tweaks in order to have the DDR4 memory settings and timings work.
There are also many ‘quirks’ with this board, when modifying DDR4 overclocking settings the board tends to fail to POST. Removing the CMOS battery and unplugging should do the trick at resetting – but sometimes this is not enough. The workaround is using IPMI to do a ‘bios update’ without preserving bios settings. This usually makes my system be able to POST again.
Memory tweaking
Windows 10 (due to tools)
* Thaiphoon Burner (to get ram info – but didn’t work for me.)
* ZenTimings (visualization for voltages from Ryzen platform – actually detects individual dims)
* AMD Ryzen Master Utility (AMD own tool)
* HWInfo64
* CPU-Z
Tuning resources / videos:
Video explains detecting memory, using Ryzen Calculator for manual settings input of motherboard.
BIOS walk through for this board. In German.
Some of these tools like Thaiphoon mail fail to work if you don’t have the AMD Chipset drivers installed. Download them, install, reboot, retry. Use the all-in-one detect tool to take care of it (lazy method) although I did all this it did not work for me. Still get the “SPD EEPROM” error. Let me know if you find a solution.
A good guide on memory OC. Another great explanation in detail.
BIOS Post codes
https://forum.level1techs.com/t/list-of-dr-debug-bios-codes/114364
AMD specific gotcha
This comment on reddit can explain why a bios flash is the only way to recovery from bad memory OC settings. Includes terminology too.
mostly the same, but…
DRAM Voltage = MEM VDDIO
SOC Voltage = VDDCR SOC
VDDG CCD Voltage = not available in RM
VDDG IOD Voltage = CLDO VDDG
cLDO VDDP Voltage = CLDO VDDP
MEM VTT is simply half of MEM VDDIO and usually there is no need to change that. And you can find it on the Advanced page of DRAM calc.
There is a chance to brick the BIOS by setting wrong values in RM (because they aren’t stored in cmos and can’t be cleared easily). If you don’t have USB flash or dual BIOS then don’t touch it, use BIOS menu.
Posted in Blog
Finding the cheapest Virtual Private Server (VPS) providers (<$10 per year)
Sometimes we want to test software or do remote monitoring and testing that you may not want to pay a premium to do, or maybe you just want to do it as a hobby. In this post I will share some tips on where to find dirt-cheap providers of virtual servers (VPS).
I strongly advise against placing any production or critical workflows on any of these; use for testing or fun.
Continue readingHow to setup dual-stack IPv4 IPv6 Azure VM without a load-balancer
I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward I wanted a virtual server that had a static IPv4 and IPv6 public addresses so that I can monitor my home network and other websites.
You would think this would be pretty easy, a few clicks and done? That wasn’t my experience on Azure and setting this up isn’t easy nor straightforward. Below is how to get it done, if this helps you – you can buy me a coffee or beer.
Continue readingPosted in Blog, Cloud, Linux, Technology, Troubleshooting, Virtualization
Tagged azure, cloud, dual stack, ipv6, networking, virtual server, virtualization, vm, vmnet
Bootable USB disk from .iso image
If you’re looking to create a bootable USB drive to install multiple operating systems or other images you should take a look into Ventoy.
Ventoy is an open source tool that allows you to format the USB disk and drop any .iso image into the USB drive – magically making any .iso be bootable without having to reformat the USB disk multiple times when you want to image different things.
Posted in Blog
Windows 10 IPv6 commands cheatsheet
An aggregate quicklist of commands for use in IPv6 on Windows 10. This is nowhere near exhaustive nor is it intended to be authoritative at all; just a collection of commands I want to save for quick reference.
# Find out the INTERFACE-ID or "ZONE ID" to send outgoing packets thru
netsh interface ipv6 show interface
ping fe80::2080:218b:b6e7:8f35%4 (sends out ping via ID 4)
Linux IPv6 command cheatsheet
This post is intended to be a quick note to self on linux IPv6 commands, for quick reference when needed.
# Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e
ip -6 route
route -A inet6 (apt-get install net-tools) # equivalent to netstat -rn -A inet6
netstat -A inet6 -rn
netstat -r
ip -6 route show table 51820
ip -6 neigh
ip -6 neigh show proxy
# DHCPv6 release / renew
dhclient -6 -r ens18
dhclient -6 ens18
# Flush IPv6 neighbors cache
ip -family inet6 neigh flush any
# Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e
# Request a router advertisement (apt-get install -y ndisc6)
rdisc6 eth0
# Perform a Neighbor Solicitation (arp IPv4 equivalent) (apt-get install -y ndisc6)
ndisc6 2001:db8::42 eth0
# ping multicast address to have all link-local hosts to respond.
ping ff02::1%eth0
Good articles about IPv6:
- IPv6 range blocks
- IPv6 unicast, anycast, multicast – well known addresses.
Troubleshooting tools:
- IPv6 ping from multiple locations.
Bonus section ‘ufw’ firewall
Check status of firewall and enable or disable.
# ufw status
# ufw enable
# ufw disable
View firewall rules and number to delete a specific rule.
# ufw status verbose
# ufw status numbered
Delete a firewall rule (from number of last cmd)
# ufw delete 12
Rules needed to allow IPv6 routing via wireguard to endpoint (no iptables forwarding would be needed on IPv6 as the other peer carries the public IP – they also should implement a firewall before using the below command!)
# ufw route allow in on eth0 out on wghub to 2602:xxx:730b:xxx:cafe::12
IPv4 firewall and routing rule to open Plex Media Server port 32400 and internal IPv4 space of wireguard peer.
# ufw allow in on eth0 out on wghub to 10.100.100.11 port 32400
# ufw route allow in on eth0 out on wghub to 10.100.100.11 port 32400
Add rule and get logs for matches of that rule:
# ufw allow log proto any from any to 192.168.1.x
View logs:
# tail -f /var/log/ufw.log
Extra bonus iptables NAT forwarding
On VPS (public endpoint) forward IPv4 traffic on tcp/32400 to wireguard peer. (recall IPv6 doesn’t need a rule)
# iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 32400 -j DNAT –to 10.100.100.11:32400
Test your port forwards
For IPv6 I use:
http://www.ipv6scanner.com/cgi-bin/main.py
TCPdump IPv6 ICMPv6 filtering
A quick note / command snippet for filtering ICMPv6 packets when troubleshooting IPv6 autoconfiguration.
# tcpdump -i eth0 -v '(icmp6 && ip6[40] == 134) or (icmp6 && ip6[40] == 133) or (icmp6 && ip6[40] == 135) or (icmp6 && ip6[40] == 136)'
The most common ICMPv6 types are:
- unreachable: 1
- too-big: 2
- time-exceeded: 3
- echo-request: 128
- echo-reply: 129
- router-solicitation: 133
- router-advertisement: 134
- neighbor-solicitation: 135
- neighbor-advertisement: 136
Posted in Blog
IPv6 LAN Network Address Translation (NAT) on OPNSENSE
Legacy IPv4 network space is exhausted, and new internet service providers like T-mobile 5G home internet run an IPv6 only network.
Sometimes you can’t use the IPv6 addresses due to your ISP not being mature enough to provide IPv6 prefix delegation in combination with the lack of advanced features on the T-mobile 5G home router like ‘bridge mode’ you may be stuck with a double NAT situation.
In 2021, I would say that implementing IPv6 on your network is almost mandatory. Major service providers like Netflix, Google, Cloudflare and others operate dual-stack networks.
I’ll admit that my home network running OPNsense firewall has had IPv6 disabled to avoid complexities since only 30% of the internet uses IPv6 today. However, I decided that its time to try to fix this since I wanted all my devices on my network to be able to pass IPv6 readiness tests like http://ipv6-test.com and http://test-ipv6.com.
Internet Service Provider (ISP) addresses
Router: Nokia 5G Fastmile (T-mobile home internet)
Provides all direct-connected devices with a NAT IPv4 addresses in the range of 192.168.12.0/24.
IPv6 addresses are from the public unicast T-mobile segment assigned to your router, however T-mobile IPv6 network does heavy inbound packet filtering. You won’t be able to ping or access your public unicast IPv6 addresses from anywhere (sucks right?)
To configure a dual-stack local area network in OPNSENSE, assume you have a ‘fresh install’ which already has IPv6 enabled on the system.
- Configure your WAN interface to obtain DHCPv6 addresses.
- Configure your LAN interface to Static IPv6
- assign static IPv6 of fdde:5453:540e:ff12::1
- Configure your LAN DHCPv6 service to this range
- range start: fdde:5453:540e:ff12::2
- range end: fdde:5453:540e:ff12:ffff:ffff:ffff:ffff
- Configure Firewall > NAT > Outbound
- set to ‘hybrid’
- Add manual rule
- interface WAN
- Version IPv6
- protocol any
- source LAN
- destination any
- translation target WAN address
- Configure Services > Router Advertisement LAN
- From ‘disabled’ to ‘Assisted’
- Save all settings and ensure all services are restarted.
Your clients on LAN should now get a local IPv6 address from DHCPv6, the outbound NAT rule should allow you to pass the IPv6 tests and communicate with IPv6 internet hosts via the single IPv6 WAN address that the T-mobile home router gives out.
I’m hoping that T-mobile becomes a more mature ISP in the future, while speeds are great there are several shortcomings to relying on 5G Home internet service for home use. These problems don’t exist in Comcast and AT&T Fiber:
– IPv6 Prefix Delegation (PD) so you can subnet all your networks.
– Packet filtering that you can’t disable or manage yourself. On AT&T fiber and comcast you can host your own remotely accessible VPN server. Not on T-mobile so beware if that’s your use case.
Posted in Blog
Tagged 5g home internet, ipv6 prefix delegation, nokia router, packet filtering, tmobile