Whonix is a privacy-focused operating system that aims to provide users with the highest level of privacy and security possible.

It is designed to be used in conjunction with the Tor network, a decentralized network that protects users’ online privacy by routing their internet traffic through multiple servers.

Why Proxmox and not VirtualBox as it offers out of the box?

  • Because Proxmox does not require a host operation system such as Windows, Mac, Linux. It can run on a bare metal headless host.

Why Whonix CLI and not the one with graphic interface?

  • Because there is no reason to have a GUI on a gateway that will be headless 100% of the time. It will reduce RAM and CPU overhead.

Why Whonix and not OpenWRT or Pfsense?

  • Whonix will enforce all traffic through Tor network and is conceptually designed to minimise (potentially eliminate) the risk of leaks.

BASIC STEPS

  • Download Whonix
  • Import to VirtualBox
  • Complete installation and Test
  • Export only the Gateway
  • Copy the disk to Proxmox
  • Configure Proxmox Networks (create vmbr2)
  • Manually create a VM in Proxmox
  • Convert and attach the disk to the VM
  • Attach the second network to the VM (vmbr2)
  • Configure VM’s boot sequence
  • Configure Whonix network interfaces (vmbr0)
  • Run a client VM or container (to vmbr2)

DOWNLOAD

Download the OVA (Open Virtualization Format) file from the official repository [Link].

Alternatively, the version with GUI could also be downloaded. I don’t see why not.


IMPORT TO VIRTUALBOX

This step is not mandatory but provides an opportunity to finish the installation, accept terms of services, test, and so on.

Go to VirtualBox Manager > File > Import Appliance…

Click on Next then Import.

Accept both terms, of course.

Both VMs will be deployed effortless. Start them.


COMPLETE INSTALLATION AND TEST

Log in on both. Some people may say you should do the Gateway first then the Workstation. Up to you!

The default credentials are user and changeme. As one may guess, change it as soon as you can

On the Gateway VM, select the option according to your reality. For most, the option 1 will be the one.

The completion of the setup might take several minutes.

Testing the Gateway

curl http://ip.me

The output must be an IP that is different to your real IP because it is reaching the internet through a random Exit Node of the Tor network.

This is a good time to change your password and fully update the gateway.

passwd
sudo apt update && sudo apt upgrade -y

Testing the Workstation

curl http://ip.me

Same type of result is expected. Power of both VMs.

sudo shutdown now

EXPORT WHONIX GATEWAY

Go to VirtualBox Manager > File > Export Appliance… > Select Whonix-Gateway-CLI.

Click on Next, then Export.

When completed, both Whonix VMs can be removed and files deleted.


COPY THE DISK TO PROXMOX

The OVA files is similar to a TAR or a ZIP file. Extract all the files from the newly exported OVA:

tar xvf Whonix-Gateway-CLI.ova

Open a temporary web server from the directory where the OVA was extracted to.

python3 -m http.server 8080

Alternatively, scp (SSH) can also be used to copy the file over.

On Proxmox Shell, download the disk file over. Make the necessary adjustments to the URL if needed.

wget http://10.10.10.10:8080/Whonix-Gateway-CLI-disk001.vmdk

PROXMOX NETWORKS

Go to the Proxmox Node (pve) > System > Network > Create > Linux Bridge.

Click on Apply Configuration.

Note that the new bridge does not contain a Gateway nor is attached to any physical port.


CREATE VIRTUAL MACHINE

Click on Create VM on the desired node. The process of manually creating a virtual machine in Proxmox does not need any special setup.

Since the exported VM from VirtualBox had a SATA disk type, I wanted to have the same bus and device number to prevent any mismatch.

As one can see on the summary of the VM being created, it does not require more than 512 MB of RAM and 2 CPU cores.

Click on Finish.


ATTACH THE DISK

On Proxmox Shell, from the location where the disk was previously downloaded, issue the following commands.

qm importdisk 109 Whonix-Gateway-CLI-disk001.vmdk local-lvm -format qcow2

Note: customise the VM number and the storage location accordingly.

The original VMDK file can be deleted now or kept for further usage.

Go to WhonixGateway > Hardware > select Hard Disk (sata0) > click on Detach > click on Remove > double-click on Unused Disk 0 > select SATA > click on Add.


ATTACH SECOND NETWORK

On the same Hardware configuration, click on Add > Network Device > select vmbr2 > click on Add.

This is how it will look like:


BOOT SEQUENCE

Go to Options > select Boot Order > click on Edit > check only sata0.

Click OK.


CONFIGURE NETWORK INTERFACE

Start the VM and open the Console.

If everything went well, you might see the bootloader and the VM will be up in few seconds.

sudo nano /etc/network/interfaces.d/30_non-qubes-whonix

The eth0 interface is the public side of the Whonix gateway. And the eth1 is the private side.

On the private side, no changes are required, but on the public side it needs to have hard-coded an IP that is not in use from your local network.

For some reason, Whonix does not allow DHCP. So make sure you pick ne IP that is out of the rance of your LAN’s DHCP Server leasing range.

Reboot the VM.

sudo reboot

Then test for Internet connectivity.

sudo apt update

Note: the repositories are being reached through Tor. Worked!


RUN A CLIENT ON THE SECONDARY NETWORK

Attach any client VM or CT to the secondary isolated network vmbr2 and start it.

Out-of-the-box it will not work. It is because Whonix Gateway does not provided an IP to the clients. It has to be done manually too.

Use the Console to configure the network interface. I my case, I deployed a Debian Container:

nano /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.152.152.11/18
        gateway 10.152.152.10
reboot

Test it for connectivity. All your traffic is now anonymous!


BONUS

Have you heard about Qubes OS [Link]. While Whonix + Tails are privacy focus and exclusively access the internet though Tor, while Qubes OS has a security driven focus by compartmentalization between virtual machines.

Qubes OS is a hypervisor type 1 based on Xen Project that isolates workloads for maximum security and reliability weather running production + development environments or safely analyzing malware without infecting other systems.