Installing and Running vJunos-Switch on Proxmox

TL:DR Juniper have been kind enough to release vJunos-Switch as a free product.

If you’re here then you probably want to skip to the chase of finding out how to run this on a Proxmox Server, so let’s get started in installing and running vJunos-switch on Proxmox.


Download the .qcow2 image from

Note: change the file name where appropriate below if a newer version is available.

1) SSH into your Proxmox server.

2) Create a qcow directory in /var/lib/vz/template

mkdir /var/lib/vz/template/qcow

3) Upload the .qcow2 image to /var/lib/vz/template/qcow (sFTP/SCP)

4) Create the VM config file, you’ll need to find the next available VM ID on the host. For me that was 120 but you should check.

touch /etc/pve/qemu-server/120.conf

5) Assign the .qcow2 image to the VM, you’ll need to adjust local-zfs to whatever datastore you wish.

cd /var/lib/vz/template/qcow/
qm importdisk 120 vjunos-switch-23.1R1.8.qcow2 local-zfs


6) Replace the config of the previously-created 120.conf

nano /etc/pve/qemu-server/120.conf



args: -smbios type=1,product=VM-VEX -chardev socket,id=serial0,port=7890,host=,server=on,wait=off,telnet=on -device isa-serial,chardev=serial0
boot: order=virtio0
cores: 4
cpu: host
memory: 8192
meta: creation-qemu=7.2.0,ctime=1682364130
name: vjunos-switch-2
net0: virtio=FA:BB:50:F5:DD:C1,bridge=vmbr0,firewall=1
net1: virtio=3E:4E:80:80:15:45,bridge=vmbr0,firewall=1
net2: virtio=66:E9:23:49:6F:C6,bridge=vmbr0,firewall=1
net3: virtio=FE:B6:81:8F:85:EE,bridge=vmbr0,firewall=1
net4: virtio=46:22:4C:F2:AB:50,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsihw: virtio-scsi-single
smbios1: uuid=b60b0b27-593c-42fd-a2ac-a8702cb0415e
sockets: 1
vga: none
virtio0: local-zfs:vm-120-disk-0,iothread=1,size=32524M
vmgenid: 0b30be1d-92b6-443c-a416-725dbcfa14d5

7) Power up the VM, and then telnet to localhost port Start VM and, from the Proxmox Host, telnet to localhost on 7890

It’ll take a couple minutes for Junos to fully boot and there will be some inevitable messages that look like errors, but you should eventually get to the cli prompt.




For more misc Juniper blog posts, see here

Clear your switches properly! Failed “system archival” transfers are kept on the device even after running a zeroize.

Just a very quick one here as I recently came across some unknown configs in our archival backup server after configuring some refurbished switches for “system archival” and committing.

I found config backup files had been transferred which belonged to the previous owner!

The switches were zeroized prior to provisioning them on our network.

When using the system archival feature in Juniper and the transfer fails, the config is left in /var/transfer/config, files in here remain even after a “request system zeroize”. Once the switch is configured for system archival again then all files in that directory are pushed to the configured destination.

So, before selling or discarding any Juniper equipment, remember to check /var/transfer/config if System Archival has ever been used within your configuration.

Monitoring Virtual Chassis VCP Ports via SNMP with Juniper QFX (and EX!)

For some strange reason, the vcp-snmp-statistics statement is hidden on the Juniper QFX platform – (if anybody knows why, please do tell!). This means  your individual virtual chassis VCP port statistics aren’t exposed in it’s entirety, which is pretty awful as monitoring VCP port errors are vital in virtual-chassis setups.

ben@qfx0# set virtual-chassis vcp-sn
syntax error.
ben@qfx0# set virtual-chassis vcp-sn
syntax error.ben@qfx0# set virtual-chassis vcp-sn?
No valid completions
ben@qfx0# set virtual-chassis vcp-snmp-statistics


After committing changes, you should see the following in the logs, and likewise see more ports listed in your monitoring software of choice i.e. LibreNMS, Solarwinds, Zabbix etc.

Dec 27 10:59:12  qfx0 vccpd[1797]: Member 0, interface vcp-255/0/53 came up
Dec 27 10:59:12  qfx0 vccpd[1797]: Member 0, interface vcp-255/0/52 came up