# OpenBSD virtualization OpenBSD 6.7

# Setup

```/etc/rc.conf.local```

```bash
apmd_flags="-A"
dhcpd_flags=vether0
vmd_flags=
ntpd_flags="-s"
```

## /etc/hostname.vether0

```bash
inet 192.168.30.1 255.255.255.0 NONE
```


## /etc/dhcpd.conf

```bash
# Network:        192.168.11.0/255.255.255.0
# Domain name:    vmm.local
# Name servers:   192.168.11.1
# Default router: 192.168.11.1
# Addresses:      192.168.30.100 - 192.168.30.200

shared-network VMM-LOCAL {
    subnet 192.168.30.0 netmask 255.255.255.0 {
        range 192.168.30.100 192.168.30.200;

        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.30.255;
        option routers 192.168.30.1;
        option domain-name-servers 192.168.11.1;

#        host vm1 {
#            hardware ethernet 00:20:91:00:00:01;
#            fixed-address vm1.vmm.local;
#        }
    }
}
```

## /etc/sysctl.conf

```bash
net.inet.ip.forwarding=1
```

## /etc/pf.conf

```bash
set skip on lo

block return    # block stateless traffic
pass            # establish keep-state

# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010

ext_if="em0"
int_if="{ vether0 tap0 }"
set block-policy drop
set loginterface egress
match in all scrub (no-df random-id max-mss 1440)
match out on egress inet from !(egress:network) to any nat-to (egress:0)
pass out quick inet
pass in on $int_if inet
pass in on egress inet proto tcp from any to (egress) port 22
```

## /etc/vm.conf

```bash
switch "local" {

   add vether0
   add tap0

}

vm "vm1.vm" {
    memory 512M
    kernel "/bsd.rd"
    disk "/vmm/vm1.img"
    interface {
        switch "local"
        lladdr 00:20:91:00:00:01
    }
}
```

# Commands

```bash
vmmctl status
```

```bash
vmctl console 1
cu /dev/ttyp0
```

```bash
vmctl create /vmm/vm1.img -s 500M
vmctl start -c -b /bsd.rd -m 512M -i 1 -d /vmm/vm1.img
```

```bash
# X11 Forwarding
ssh -Y vm programmname
```