Install Ubuntu KVM

Ubuntu KVM KB ID 0001890

Problem

I’ve been looking at KVM for a couple of reasons, firstly people are looking at VMware alternatives, now there’s no ‘free version‘, and secondly the firm I work for have potentially a large KVM to VMware migration on the horizon, so I thought I’d build it on the test bench and see how best to address that migration scenario.

Note: This was written with Ubuntu version 24.04, which was current at the time of publication, if the experience has taught me anything it’s the commands and procedures may well change in future versions. If you are reading this in the distant future and something needs tweaking let me know below, so I can try to keep things up to date.

Solution : Ubuntu KVM

Update Ubuntu.

I’m assuming you’ve already got an Ubuntu server installed ready to go, the first task is to ensure its fully up to date.

[box]

sudo apt update && sudo apt upgrade -y

[/box]

    

Go and have a coffee, when complete simply reboot the server.

[box]

[ -e /var/run/reboot-required ] && sudo reboot

[/box]

Ubuntu KVM (CPU Checker)

All modern physical servers will now have the virtualisation CPU elements enabled in BIOS, It’s been many years since I had to go and enable them, but if you on an old piece of tin, or someone’s disabled them, you need to check they are available. Note: This is more a problem id you intent to run Ubuntu nested inside another hypervisor like VMware ESX, or Hyper-V where you have to manually expose the virtualisation elements to a guest VM (often called nested virtualisation).

To make sure, we install cpu-checker.

[box]

sudo apt install cpu-checker

[/box]

Then to test the CPU run the kvm-ok command and ensure it responds KVM acceleration can be used.

[box]

sudo kvm-ok

[/box]

Ubuntu Install KVM

Use the following command.

[box]

sudo apt -y install libvirt-daemon-system bridge-utils qemu-kvm libvirt-daemon

[/box]

Then install the additional components and tools we may require.

[box]

sudo apt install virtinst libosinfo-bin virt-top libguestfs-tools 

[/box]

Finally ensure all is well run virsh version and ensure the components look like the following (note some may have newer versions depending on how far in the future you are following along).

[box]

virsh version 

[/box]

     

Ubuntu KVM: Install Cockpit

Cockpit is a web based GUI where you can directly interrace with Linux, you can create run and manage your virtual machines from command line, but this is a little easier for most people.

[box]

sudo apt install cockpit 

[/box]

When complete add the machines plugin (for managing virtual machines) and podman plugin (for managing containers).

[box]

sudo apt install cockpit-{machines,podman}

[/box]

 

Then enable Cockpit to AutoStart with the host and check its status. Take note of the port it is running on (highlighted below, this is usually TCP port 9090).

[box]

sudo systemctl enable --now cockpit.socket
systemctl status cockpit.socket

[/box]

 

Connect to the Ubuntu KVM server using a web browser to port 9090 (https://{ip-address-or-host-name}:9090 and log in.

Select “Turn on administrative access” and supply your password to authenticate again.

Ubuntu KVM Creating Guest VMs

I prefer to have the ISO files that I will build my VMs from on the server itself, so I upload them into the /tmp directory on the Ubuntu host. Below I’m using WinSCP because its free and it’s simple to use,

In Cockpit navigate to virtual Machines > Create VM.

Enter the details, and the path to the ISO file you uploaded above > Create and Run.

Now if you select the server you get a nice VNC remote console which you can interact with to build and manage the server remotely.

What you will notice is at this point your VMS get an IP address from the KVM host which will NAT the traffic to the outside world, which is fine. But if you want to access these VMs FROM the outside world then you have a problem (no, routing the traffic back to the KVM server manually or adding static routes to your other devices does not work) Well it didn’t for me! So a more likely scenario is you want bridged networking, where your VMs will get an IP address on your live LAN. I’ll be showing you how to do that next

Related Articles, References, Credits, or External Links

Ubuntu Setting a Static IP

SSH: Host Identification Has Changed

Host Identification Has Changed KB ID 0001889

Problem

I’ve been doing a lot of building and destroying Linux boxes lately, and came across this problem, (while attempting to SSH into one).

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256: xxxxxxxxxxxxxxxxx
Please contact your system administrator.
Add correct host key in /Users/sysadm/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/sysadm/.ssh/known_hosts:20
RSA host key for xxxxxxxxxxx has changed and you have requested strict checking.
Host key verification failed.

Solution: Host Identification Has Changed

So essentially, there’s a record kept of all the ssh keys presented, along with their associated hosts, your PC is warning you that the key now being presented is simply different from the one that was presented last time it connected.

You can see (above) the command I used to remove the ‘cached’ key so I could proceed.

[box]

ssh-keygen -R {host}

[/box]

In my case the host is simply the IP address 192.168.100.103, yours may be the hostname or FQDN (to which you were attempting to connect)

Once purged, try to connect again and you should be prompted to accept and save the new presented SSH key.

Related Articles, References, Credits, or External Links

NA

Hyper-V Enable Nested Virtualisation

Enable Nested Virtualisation KB ID 0001888

Problem

If you want to enable virtualisation in a VM that is running inside Hyper-V (itself a hypervisor). Then you need to expose the virtualisation elements of the physical hosts processor to the nested VM.

In the case of Intel VMs that’s VTx and EPT. (For Intel based CPUs). Under VMware you would simply enable “Expose hardware assisted virtualisation to the guest OS” But in Hyper-V you do not get that option.

Solution: Enable Nested Virtualisation

Well in truth you do get that option, you’ve just got to run a bit of PowerShell on the host. Note THE VM MUST BE POWERED OFF FIRST!

[box]

Set-VMProcessor -VMName {Name-of-VM} -ExposeVirtualizationExtensions $true

[/box]

Nice and easy

Related Articles, References, Credits, or External Links

VMware Workstation – Error – ” Virtualized Intel VT-x/EPT is disabled”

Microsoft 365 Backup

Microsoft 365 Backup KB ID 0001887

Problem : Microsoft 365 Backup

Originally released 2023, Microsoft 365 Backup is now general release. Microsoft 365 Backup is a comprehensive backup and recovery solution designed to protect your critical data stored in OneDrive, SharePoint, and Exchange*. This service ensures that your data is always recoverable, providing peace of mind in the face of potential data loss scenarios like ransomware attacks, accidental deletions, or data corruption.

*Note: As of now, it does not include native backup options for Microsoft Teams. The service primarily covers only OneDrive, SharePoint, and Exchange data. However, you can set retention policies and archive Teams, which helps maintain the retention of Teams data. For comprehensive Teams backup, you might need to look into third-party solutions like Veeam, (which offers backup and restore options for Teams, including Channels, Tabs, Posts, and Files.)

Microsoft 365 Backup Key Features

Ultra-Fast Recovery

One of the standout features is its fast recovery times. Microsoft claims that mass restores can be up to 20 times faster than traditional backup methods. This means you can get your business back up and running quickly minimising downtime and disruption.

Comprehensive Coverage

Microsoft 365 Backup covers the following data

  • OneDrive: Backup and restore entire accounts or specific files.
  • SharePoint: Full site backups with the ability to restore to specific points in time.
  • Exchange: Granular item restores, including emails, contacts, and calendar items.

Security and Compliance

Security is a top priority with Microsoft 365 Backup. The service keeps your backups within the Microsoft 365 trust boundary, reducing the risk of security breaches. Additionally, it complies with major regulations like GDPR, ensuring your data is handled with the utmost care.

Microsoft 365 Backup: How It Works

Microsoft 365 Backup operates through the Microsoft 365 admin centre and is available as a standalone pay-as-you-go (PAYGO) solution. There are no additional license requirements, making it accessible and straightforward to implement.

Backup Process

  • Initiate Backup: Use the admin centre to select the data you want to back up.
  • Automated Backups: The service automatically creates backups at frequent intervals, ensuring you always have recent recovery points.
  • Storage: Backups are stored securely within the Microsoft 365 infrastructure.

Recovery Process

  • Select Recovery Point: Choose the specific point in time you want to restore from.
  • Restore Data: Initiate the restore process, and your data will be recovered quickly and efficiently.

Microsoft 365 Backup: Partner Integrations

Microsoft 365 Backup also supports integrations with third-party backup solutions through the Microsoft 365 Backup Storage platform. This allows independent software vendors (ISVs) to build applications that leverage the same high-speed recovery and security features

Getting Started

  • PAYGO Ensure you have setup “Pay as you go billing”
  • Access the Admin Center: Log in to your Microsoft 365 admin centre. (Assuming you are a global administrator or SharePoint administrator)
  • Navigate to Backup: Find the backup section (within settings) and follow the prompts to set up your backups.

  • Monitor and Manage: Use the admin centre to monitor backup status and manage recovery points.

Points to Note

  • At time of writing this will cost $0.15 (Per Gb, Per Month) in backup storage.
  • When restoring SharePoint site(s) ensure sites are not locked in a read-only state.
  • Default retention period is 1 year (RPO  = Exchange every 10 mins for 1 Year, SharePoint/OneDrive = every 10 mins for last 14 days then Every week for weeks 2 to 52).
  • Exchange full mailbox or granular item restores are available.

Related Articles, References, Credits, or External Links

Microsoft Announces General Availability of Microsoft 365 Backup and Microsoft 365 Backup Storage

Take Ownership and Grant ‘Full Control’ Recursively

Take Ownership KB ID 0001200 

Problem

I had a bunch of old user profile folders I needed to delete today, When setup properly even the domain administrator can’t get in there and delete them;

You need permission to perform this action.

You don’t currently have persmission to access this folder

If it’s just one folder then simply take ownership, grant yourself rights and delete it! But I had a lot of folders so I needed a more robust (read less work) solution.

Solution: Take Ownership

Take Ownership of all Folders/Sub-Folders, and Files

Open an administrative command window, and execute the following command;

[box]

takeown /a /r /d Y /f C:\"Path-To-Folder"

[/box]

Grant ‘Full Control’ Rights to all Folders/Sub-Folders, and Files

Just because you are the owner, that does not mean you have any rights to the folders and files, to grant full control to the administrators group.

[box]

icacls C:\"Path-To-Folder" /grant administrators:F /t

[/box]

You can then delete the folder and its contents recursively with the following command.

[box]

Remove-Item -Path "Path-To-Folder" -Force -Recurse

[/box]

Related Articles, References, Credits, or External Links

Can’t Delete a File or Folder or Take Ownership

Rename a Domain Controller

Rename a Domain Controller KB ID 0001886

Problem

I’ve done a few migrating to {version} domain controller articles, and today I got asked,

How can you rename the “Server Name” back to the old one after migration ?e.g. from “Lan-2025” to “Lan-2019”

So, as the VMs from the last article were still running on the test bench, I ran though it to demonstrate.

Solution: Rename a Domain Controller

If you would like to add a new Windows Server 2025 domain controller to an existing domain here is the procedure.

Note: if you are not changing the domain controller name to a previous one, and simply want to rename a DC to something else, skip to THIS SECTION.

Rename a Domain Controller: Remove Stale DNS records

Never assume that demoting, and removing the old DCs does a great job of tidying up DNS it does not. So before we rename out new DC to the old DC name let’s make sure there’s nothing ‘hanging about’ that needs to be cleaned up. You can of course go hunting for them manually and remove them, but why when we have PowerShell. Typically a simple domain will have a” _msdcs.domain-name.domain-extension” and a “domain-name.domain-extension” forward lookup domain. (Your DNS server might have many forward lookup zones so run through them sequentially.

I’m stating with my _msdcs.test.net forward lookup zone, First I’m reading in ALL the DNS records for that domain.

[box]

$alldnsrecords = Get-DnsServerResourceRecord -ZoneName “_msdcs.test.netVIEW THE RESULTS BY SIMPLY CALLING THAT BACK

$alldnsrecords
[/box]

In my example there are not many records and I can see there’s none for the old DC name LAN-2019.test.net or for its IP address 192.168.110.10 so I’m skipping to the next step. Yours may have, if so you can delete them with the following commands;

[box]

$deadDC = $alldnsrecords | Where-Object {$_.RecordData.IPv4Address -eq “192.168.110.10” -or $_.RecordData.NameServer -eq “LAN-2019.test.net.” -or $_.RecordData.DomainName -eq “LAN-2019.test.net.”}

$deadDC | Remove-DnsServerResourceRecord -ZoneName “_msdcs.test.net

[/box]

Let’s do the same for my normal domain forward lookup zone test.net.

[box]

$alldnsrecords = Get-DnsServerResourceRecord -ZoneName “test.net

[/box]

As you can see (below) there a a few old records here for the LAN2019.test.net server, and a few for its old IP address (192.168.110.10) WARNING: I’m making the assumption your DCs have static IP addresses and those IP addresses ARE NOT in a DHCP scope, or some clown HAS NOT issued the old IP to another server!

Let’s filter those records so we just see the ones we are interested in.

[box]

$deadDC = $alldnsrecords | Where-Object {$_.RecordData.IPv4Address -eq “192.168.110.10” -or $_.RecordData.NameServer -eq “LAN-2019.test.net.” -or $_.RecordData.DomainName -eq “LAN-2019.test.net.”}

[/box]

And we can remove them with. (WARNING add -whatif to the end of the command if you are nervous and want to check what will happen before proceeding, if you are happy rerun the command without the -whatif switch).

[box]

$deadDC | Remove-DnsServerResourceRecord -ZoneName “test.net

[/box]

Rename a Domain Controller: Remove Stale Reverse DNS Records

Reverse DNS lookup zones typically are a lot easier to just do manually.

Rename a Domain Controller: Domain Cleanup

There should not be any need to do a metadata cleanup if the demotion and removal went smoothly, but there will probably be some junk left behind. I’ve demoted the old DC and removed it from the domain, but the computer object still remains (in a disabled state) let’s remove that.

    

Also often there’s an orphaned object in sites and services for the old DC, let’s remove that.

Rename a Domain Controller

Finally! The process is simple, we add a secondary name to the Domain controller (the old DC name), then we make that second name the primary name, reboot the server, and remove the unwanted server name. To add a new secondary name open an administrative PowerShell Window and use the following syntax.

[box]

netdom computername LAN-2025.test.net /add:LAN-2019.test.net

THEN TO VIEW THE RESULTS

netdom computername LAN-2025.test.net /enumerate

[/box]

Change the OLD DC name to be the primary with the following command, which will need to reboot the server, so then execute a Restart-Computer.

[box]

netdom computername LAN-2025.test.net /makeprimary:LAN-2019.test.net

Restart-Computer

[/box]

REMEMBER at this point the old and new server names have swapped, so your commands will now assume that (in this case) LAN-2019.test.net is the name of the DC you are on. Once the server has rebooted.

[box]

netdom computername LAN-2019.test.net /enumerate

CHECK THE NEW NAME IS LISTED FIRST, THEN REMOVE THE UNWANTED NAME

netdom computername LAN-2019.test.net /remove:LAN-2025.test.net

FINALLY CHECK AGAIN

netdom computername LAN-2019.test.net /enumerate

[/box]

Related Articles, References, Credits, or External Links

NA

VMware – Cannot Cut, Copy, or Paste to VM’s

KB ID 0000515

Problem

Ever since ESX 4.1 this feature has been disabled and you have been unable to paste to VM, VMware say in their own documentation:

Source (Page 215 – ESX Configuration Guide ESX 4.1 vCenter Server 4.1).

To turn this feature back ON you have a few choices.

Please be aware: We are talking about copy and pasting TEXT to and from a guest VM NOT files and folders.

Solution

ESX Option 1 (Enable Copy and Paste to VM an individual Guest machine)

Using vSphere 8 or Above

Firstly, you need to shut the virtual machine down > Right Click it > Edit Settings >  Advanced > Add the following TWO attributes and values.

Add in the following two;
Attribute: isolation.tools.copy.disable, Value: false
Attribute: isolation.tools.paste.disable, Value: false

Click OK >  Power the VM back on.

Using HML5 Web Client (Enable Copy and Paste to VM)

Firstly, you need to shut the virtual machine down > Right Click it > Edit Settings > VM Options > Advanced  > Scroll down.

 

Edit configuration > Add configuration params;

Add in the following two parameters then click OK

Name: isolation.tools.copy.disable, Value: false
Name: isolation.tools.paste.disable, Value: false

Using Flash Web Client.

Firstly, you need to shut the virtual machine down > Right Click it > Edit Settings > VMware Option Tab > Advanced > Edit configuration > Add in the following;

Name: isolation.tools.copy.disable, Value: false
Name: isolation.tools.paste.disable, Value: false

 

OK > OK > Power on VM

Using VMware Client (Enable Copy and Paste to VM)

1. Firstly, you need to shut the virtual machine down > Right Click it > Edit Settings > Option Tab > Advanced > General > Configuration Parameters.

2. Select “Add Row” and add the following two options:

[box]isolation.tools.copy.disable

isolation.tools.paste.disable [/box]

Set both these values to FALSE > OK > OK > Power the VM back on again.

Note: Even without these values set, if a VM is vMotioned to an ESX host that has the copy.paste options set in it’s config file (see below) then these features are automatically enabled.

Option 2 (Enable Copy and Paste to VM on an individual Guest machine)

1. You can also achieve the same as above by directly editing the .vmx file for the virtual machine, Add the following two values as shown below:

[box]isolation.tools.copy.disable=”FALSE”

isolation.tools.paste.disable=”FALSE” [/box]

Note: Even without these values set, if a VM is vMotioned to an ESX host that has the copy.paste options set in it’s config file (see below) then these features are automatically enabled.

Option 3 (Enable Copy and Paste on the ESX host for all the VM’s on that host)

Note: This procedure will be removed/reset after an ESX upgrade. (You will need to carry out this procedure again post upgrade).

1. Connect to your ESX server, either directly on the console, or via SSH. and execute the following command:

[box]vi /etc/vmware/config[/box]

 

2. Press i to insert text and paste in the following two lines:

[box]isolation.tools.copy.disable=”FALSE”

isolation.tools.paste.disable=”FALSE” [/box]

Press Escape > then type :wq to save the changes.

Additional Steps for Linux / Ubuntu to allow Copy and Paste to VM

1. Assuming you have the VMware tools installed in your Linux guest VM, if not execute the following command:

[box]sudo apt-get install open-vm-toolbox[/box]

To enable copy paste on the guest execute the following command:

[box]vmware-toolbox &[/box]

One the VMware tools properties page pops up you will be able to copy and paste.

Enabling Copy and Paste in VMware Workstation

Out of the box, this functionality is switched on. However if you lose it then open the virtual machines settings > Options tab > Guest Isolation > Enable the Copy and paste option.

Related Articles, References, Credits, or External Links

NA

Recover Browser Passwords

Recover Browser Passwords KB ID 0001885

Problem

I use quite a lot of browsers, I use Microsoft Edge for work, Firefox for personal browsing, Opera when I need VPN protected browsing, and occasionally I also use Safari and Chrome.

All modern browsers will store usernames and password for you, but when you get a new device or start using a new browser, you may need to go and recover browser passwords (and possibly usernames) from your other browsers.

Disclaimer :I’m not a numpty, these are not my real usernames and passwords folks!

Recover Chrome Usernames and Passwords
Recover Firefox Usernames and Passwords
Recover Microsoft Edge Usernames and Passwords
Recover Opera Usernames and Passwords
Recover Safari Usernames and Passwords

Solution: Recover Browser Passwords (Chrome)

Settings > Autofill and Passwords > Google Password Manager.

Either browse the whole list, or search for the site you are looking for and select it.

You may need to authenticate (for obvious reasons) > Press Reveal, copy the username and password

Solution: Recover Browser Passwords (Firefox)

Type about:logins in the address bar > Search for the site you want to recover the credentials for > Select the site  >Reveal > Copy the username and password.

Solution: Recover Browser Passwords (Microsoft Edge)

Settings > Passwords.

Either browse the whole list, or search for the site you are looking for and select it.

Reveal > copy the username and password.

Solution: Recover Browser Passwords (Opera)

Settings > Search for passwords > Password Manger.

Locate and select the site you wish to recover credentials for and select it.

Reveal > copy the username and password.

Solution: Recover Browser Passwords (Safari)

Safari > Settings > Passwords > Authenticate.

Either browse the whole list, or search for the site you are looking for and select it.

Hover over the password to reveal > copy the username and password.

 

Those are the browsers I use, feel free to post methods for other bowsers below

Related Articles, References, Credits, or External Links

NA

Migrate to Server 2025 Domain Controller

Server 2025 Domain Controller KB ID 0001884

Problem

If you would like to add a new Windows Server 2025 domain controller to an existing domain here is the procedure.

Solution: Server 2025 Domain Controller

Server 2025 Pre Requisites

2025 Hardware Requirements

  • Processor: 1.4 GHz 64-bit processor (or faster) with support for security features.
  • RAM: Minimum of 512 MB (2 GB for Server with Desktop Experience installation).
  • Disk Space: Minimum of 32 GB or more, depending on the server installation options.
  • Network Adapter: Ethernet adapter capable of at least gigabit throughput.

Software Requirements

  • Operating System: Windows Server 2025 (evaluation version or full licensed version).
  • Static IP Address: Assign a static IP address to the server before promoting it to a domain controller.
  • DNS: The server should point to itself for DNS or to another DNS server that is already part of the Active Directory.

User Permissions

  • You must be a member of the Administrators group on the server where you are installing the AD DS role.

Minimum Required Functional Levels for Windows Server 2025

Note: These are estimated based on the previous versions of Window Server.

Forest Functional Level:

  • The minimum forest functional level required for Windows Server 2025 is expected to be Windows Server 2016.
  • This means all domain controllers within the forest must be running at least Windows Server 2016.

Domain Functional Level:

  • The minimum domain functional level required for Windows Server 2025 is expected to be Windows Server 2016.
  • This ensures that all domain controllers within the domain are running at least Windows Server 2016.

Additionally: Ensure your third party applications also support Windows Server 2025, e.g. AV, MDR, Endpoint protection, and backup solutions.

Server 2025 Domain Controller AD Services Role Installation

At this point I’m assuming your 2025 server is fully updated and added to the domain as a member server. Server Manager > Manage > Add Roles and Features.

You can tick ‘Skip by default’ if you wish > Next >  Next > Next > Tick ‘Active Directory Domain Services’ > Add Features (as shown) > Next.

Next >  Next > Next > Install > When complete click ‘Close’.

Server 2025 Domain Controller: Promote to DC

Once the role is installed, you need to actually promote the server so that it is a domain controller > From within Server Manager you will see you now have a waring triangle at the top of the screen, click it and you will get the option to ‘promote this server to a domain controller‘.

It will automatically assume that you want to promote it to be a Dc in the domain that you are in, ensure that the credentials used have the appropriate rights > Next > Check the Site is correct And enter a new DSRM password > Next > At the warning about ‘A delegation for this DNS server cannot be created…“*

Note: In case you are worried about this error, see the following article for peace of mind.
Windows – A Delegation For This DNS Server Cannot Be Created

Next > Next > Next,

Next > Next > Once the pre-requisite checks have passed > Install.

If you look in Active Directory Users and Computers > In the Domain Controller OU there, will be your new Domain Controller.

That’s the new Server 2025 Domain Controller successfully added as a new domain controller. Rember at this point if you are retiring any old Domain Controllers take a look at the following list of things to thing about.

Retiring a Domain Controller Checklist

  • DNS: Is the retiring domain controller specified in one of your DHCP scopes or been manually specified on servers/endpoints. Offenders are network printers, VMware ESX servers (or vCenters), Non Windows devices, Hardware appliances.
  • DHCP: Is the retiring domain controller Hosing a DHCP scope? Or involved in a HA DHCP scope, If so this will need migrating.
  • LDAP/Kerberos/AAA: Are there any devices that look to the IP/Name of the retiring domain controller that are providing authentication services e.g. RSA Appliances, Firewalls authenticating remote access, Door entry or security systems that lookup AD users. Note This includes IAS/NPS
  • MFA: Do you have an MFA system that required Active Directory? If so does that need migrating.
  • Email: Modens Microsoft Exchange does not care (as long as DNS works.) But older versions needed to look at a specific domain controller, and any third part email applications may need to do the same.
  • Third Party Applications: This is a bit of a catch all but in most cases, (especially in SMB environments) Other programs/applications/services sometimes get installed on domain controllers make sure you know what apps are on the old DC before retiring e.g. Printer auditing software, third party password and AD Management tools, Management consoles for other solutions, Agent software for monitoring AD users.
  • Backups: These days less of an issue, but if you backup solution had an Active Directory element, ensure that post migration id continues to function normally.

For the demotion and role removal procedure, please see the video (above).

Related Articles, References, Credits, or External Links

Migrate DHCP Scope

Windows: Migrate DHCP HA

Migrate NPS Server