Skip to content

CHR: Installing on VMware

This guide covers deploying RouterOS Cloud Hosted Router (CHR) on VMware ESXi (vSphere), VMware Fusion (macOS), and VMware Workstation (Windows/Linux) using the provided VMDK disk image.

  • VMware ESXi 6.5 or higher, VMware Fusion 7+, or VMware Workstation 12+
  • At least 256MB RAM and 128MB disk available for the CHR VM
  • VMDK disk image downloaded from MikroTik
  1. Visit the MikroTik download page
  2. Select the Cloud Hosted Router section
  3. Download the VMware disk image (.vmdk file)
  1. Log in to the ESXi Host Client (https://<esxi-host>/ui)
  2. Navigate to Storage → Datastores → Datastore browser
  3. Create a folder for the CHR VM (e.g., CHR)
  4. Click Upload and select the downloaded .vmdk file

Alternatively, convert to thin-provisioned format using ESXi Shell:

Terminal window
vmkfstools -i /vmfs/volumes/datastore1/CHR/chr-7.x.vmdk \
/vmfs/volumes/datastore1/CHR/chr-thin.vmdk -d thin
  1. In the ESXi Host Client, click Virtual Machines → Create / Register VM
  2. Select Create a new virtual machine and click Next
  3. Configure the VM:
SettingRecommended Value
NameCHR or descriptive name
Guest OS FamilyLinux
Guest OS VersionOther Linux (64-bit)
vCPUs2 (minimum 1)
Memory1024 MB
Hard diskRemove default disk (will add uploaded VMDK)
Network Adaptervmxnet3
  1. In the Hard disk section, click Add hard disk → Existing hard disk
  2. Browse to and select the uploaded CHR .vmdk file
  3. Set Disk Provisioning to Thin Provision
  4. Click Next → Finish

The system disk must use the IDE or LSI Logic SAS controller. SCSI controllers are supported only for secondary (data) disks.

CHR includes built-in support for VMware virtual hardware. No separate VMware Tools installation is required. The following features are available natively:

  • Time Synchronization: Enable “Synchronize guest time with host” in VM settings
  • Power Operations: Scripts execute on power on/off, suspend/resume (30-second timeout)
  • Guest Quiescing: Filesystem freeze/thaw for consistent snapshots
  • Guest Information: Networking, disk, and OS info reported to hypervisor every 30 seconds
  1. Open VMware Workstation
  2. Click File → Open a Virtual Machine
  3. Browse to and select the downloaded CHR .vmdk file
  4. VMware Workstation will create a VM configuration — accept the defaults
  5. Before starting, edit VM settings:
    • Set Memory to at least 1024MB
    • Change Network Adapter type to vmxnet3 if available (E1000 also works)
  6. Click Power On This Virtual Machine
  1. Open VMware Fusion
  2. Click File → Import… or drag the .vmdk file onto the Fusion window
  3. Follow the import wizard, selecting Linux → Other Linux 64-bit
  4. After import, click Virtual Machine → Settings
  5. Adjust Processors & Memory as needed
  6. Under Network Adapter, select vmxnet3 if shown (depends on Fusion version)
  7. Start the VM

Connect to the VM console via the VMware console. Log in with default credentials:

Username: admin
Password: (empty — press Enter)

Perform initial setup:

# Set admin password
/user set admin password=StrongPassword123!
# Verify interfaces were detected
/interface print
# Assign IP to management interface
/ip address add address=192.168.88.1/24 interface=ether1
# Add default route
/ip route add dst-address=0.0.0.0/0 gateway=192.168.88.254
# Configure DNS
/ip dns set servers=1.1.1.1,8.8.8.8
# Enable SSH
/ip service enable ssh

To pass VLAN-tagged traffic to CHR on ESXi:

  1. In the vSphere Client, navigate to the host’s Networking section
  2. Select the Virtual Switch connected to the CHR VM
  3. Edit the Port Group settings
  4. Set VLAN ID to 4095 (trunk mode — passes all VLANs)
  5. Enable Promiscuous Mode if needed for bridging use cases

Promiscuous Mode should only be enabled on isolated port groups for security reasons.

Inside RouterOS, configure VLAN filtering on the bridge:

/interface bridge add name=br-trunk vlan-filtering=yes
/interface bridge port add bridge=br-trunk interface=ether1
/interface bridge vlan add bridge=br-trunk vlan-ids=10,20 tagged=br-trunk,ether1

ESXi supports MTU up to 9000 bytes. Network interfaces added after the MTU change inherit the new MTU. Interfaces added prior may remain at 1500:

[admin@chr-vm] > /interface ethernet print
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP
0 R ether1 9000 00:0C:29:35:37:5C enabled
1 R ether2 1500 00:0C:29:35:37:66 enabled

To fix, set MTU explicitly on the affected interface:

/interface ethernet set ether2 mtu=9000

Packets Not Passing on Software Interfaces

Section titled “Packets Not Passing on Software Interfaces”

If VLAN, EoIP, or bridge interfaces stop forwarding traffic:

  1. In ESXi, edit the VM’s port group
  2. Enable Forged Transmits and MAC Address Changes in the security policy
  3. For VLAN traffic, ensure the port group VLAN ID is set to 4095 (trunk)

Verify the VMDK was uploaded correctly and the VM hardware version is compatible with ESXi. Recreate the VM if needed, ensuring the disk controller type is IDE (not SCSI) for the system disk.