Jump to content

Team Nordex:Nordex Virtual Machines on HV-04: Difference between revisions

From HEIN+FRICKE
Kolja.fricke@heinfricke.com (talk | contribs)
Swapnil.mangalkar@heinfricke.team (talk | contribs)
Blanked the page
Tags: Blanking Visual edit
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= HF-HV04 Virtual Machine User Guide =


'''Server:''' HF-HV04 (148.113.50.80)<br/>
'''Last Updated:''' 2025-11-22
This guide explains how to access the virtualization server and create virtual machines.
== 1. Connecting to XRDP via SSH Tunnel ==
For security reasons, the XRDP remote desktop service (port 3389) is not directly accessible from the internet. You must create an SSH tunnel to access it.
=== From Linux/macOS ===
'''Step 1: Create SSH Tunnel'''
Open a terminal and run:
ssh -L 3389:localhost:3389 your-username@148.113.50.8
Replace <code>your-username</code> with your actual username (e.g., kolja, satyakam, ...).
'''What this does:'''
* <code>-L 3389:localhost:3389</code> forwards your local port 3389 to the server's port 3389
* Leave this terminal window open while using remote desktop
'''Step 2: Connect with RDP Client'''
Open your RDP client (Remmina, rdesktop, xfreerdp, etc.) and connect to:
<pre>
localhost:3389
</pre>
'''Example with xfreerdp:'''
xfreerdp /v:localhost:3389 /u:your-username
'''Example with rdesktop:'''
rdesktop localhost:3389 -u your-username
=== From Windows ===
'''Step 1: Create SSH Tunnel'''
'''Option A: Using PuTTY'''
# Open PuTTY
# In "Session" category:
#* Host Name: <code>148.113.50.80</code>
#* Port: <code>22</code>
# In "Connection → SSH → Tunnels" category:
#* Source port: <code>3389</code>
#* Destination: <code>localhost:3389</code>
#* Click "Add"
# Return to "Session" category and click "Open"
# Login with your username and password
# Leave PuTTY window open
'''Option B: Using OpenSSH (Windows 10/11)'''
Open PowerShell or Command Prompt and run:
ssh -L 3389:localhost:3389 your-username@IPADDRESS
Leave this window open while using remote desktop.
'''Step 2: Connect with Remote Desktop'''
# Open "Remote Desktop Connection" (mstsc.exe)
# Computer: <code>localhost:3389</code>
# Username: your username
# Click "Connect"
'''Important Notes:'''
* Keep the SSH connection open during your entire remote desktop session
* If you close the SSH terminal, the RDP connection will fail
* You can minimize the SSH window, but don't close it
== 2. Creating Virtual Machines with virt-manager ==
=== Prerequisites ===
* Connected to HF-HV04 via XRDP (see section 1)
* virt-manager is available in the remote desktop session
=== Storage Location for Virtual Machines ===
'''Storage Pool:''' <code>user-vm</code><br/>
'''Location:''' Dedicated storage pool on separate hard drive<br/>
'''Format:''' qcow2 (thin-provisioned)
All user VMs must store their virtual hard drives in the <code>user-vm</code> storage pool.
=== Creating a VM ===
'''Step 1: Launch virt-manager'''
From the terminal in your XRDP session:
<code>
virt-manager
</code>
'''Step 2: Connect to localhost'''
virt-manager should automatically connect to <code>QEMU/KVM User Session</code>.
'''Step 3: Create New Virtual Machine'''
# Click "Create a new virtual machine" button (top-left)
# Choose installation method:
#* '''Local install media (ISO):''' For ISO files
#* '''Network install (HTTP/FTP/NFS):''' For network installation
#* '''Import existing disk image:''' For pre-built VM images
'''Step 4: Select Installation Media'''
* '''For ISO:''' Browse to your ISO file location
** Storage pool: <code>user-vm</code>
** Or browse local filesystem
* Choose OS type and version (helps optimize VM settings)
'''Step 5: Configure Memory and CPU'''
* Memory (RAM): Allocate in MB (e.g., 2048 = 2GB)
* CPUs: Number of virtual CPUs to allocate
'''Step 6: Configure Storage'''
'''Important: Storage Location'''
# Check "Enable storage for this virtual machine"
# Click "Manage..." to choose location
# '''Select storage pool:''' <code>user-vm</code>
# Click "+" to create new volume
# Name your disk (e.g., <code>myvm.qcow2</code>)
# Choose disk size (GB)
# Format: <code>qcow2</code> (recommended - thin provisioned)
'''Step 7: Configure Network (CRITICAL)'''
'''Network Selection:'''
* '''Virtual network:''' <code>pfsense-lan</code>
* '''Network source:''' Select <code>pfsense-lan</code> from dropdown
'''MAC Address Assignment (for Static IP):'''
To get a predictable IP address via DHCP reservation, assign one of the reserved MAC addresses:
# In VM configuration, go to "NIC" section
# Click "MAC address" field
# Enter one of the reserved MAC addresses (see table below)
'''How it works:'''
* pfSense DHCP server has static mappings for these MAC addresses
* When your VM boots with one of these MACs, it will ALWAYS receive the corresponding IP
* This makes your VM's IP address predictable and stable
* Choose any available MAC/IP from the table above
'''Important Network Rules:'''
* User VMs '''MUST''' use the <code>pfsense-lan</code> virtual network
* User VMs '''CANNOT''' use bridged networking (br0) - this is blocked by security policy
* All internet access goes through the pfSense firewall (10.7.1.1)
* VMs will receive IP addresses in the 10.7.1.x range from pfSense DHCP
'''Step 8: Finalize'''
# Name your VM
# Check "Customize configuration before install" if you want to adjust settings
# Click "Finish"
=== Deleting a VM ===
'''Step 1: Shutdown the VM'''
# Right-click the VM in virt-manager
# Select "Shut Down → Shutdown" (graceful shutdown)
# Or "Shut Down → Force Off" if not responding
'''Step 2: Delete the VM'''
# Right-click the VM
# Select "Delete"
# Choose options:
#* ☑ "Delete associated storage files" (removes virtual hard drive from <code>user-vm</code> pool)
#* Click "Delete"
'''Manual Storage Cleanup (if needed):'''
If storage wasn't deleted automatically:
<code>
# List volumes in user-vm pool
virsh vol-list user-vm
# Delete specific volume
virsh vol-delete --pool user-vm myvm.qcow2
</code>
== 3. Creating Virtual Machines with Vagrant ==
Vagrant automates VM creation and management using configuration files.
=== Prerequisites ===
'''Install Vagrant and Plugins:'''
<code>
# Install vagrant
sudo apt install vagrant
# Install libvirt provider
vagrant plugin install vagrant-libvirt
# Install mutate plugin (for box conversion)
vagrant plugin install vagrant-mutate
</code>
=== Storage Location for Vagrant VMs ===
Vagrant stores VM disk images in the <code>user-vm</code> storage pool when configured properly.
=== Creating a VM with Vagrant ===
'''Step 1: Create Project Directory'''
<code>
mkdir -p ~/vagrant-projects/myvm
cd ~/vagrant-projects/myvm
</code>
'''Step 2: Create Vagrantfile'''
Create a file named <code>Vagrantfile</code>:
<syntaxhighlight lang="ruby">
Vagrant.configure("2") do |config|
  # Choose base box (example: Ubuntu 22.04)
  config.vm.box = "generic/ubuntu2204"
  # VM hostname
  config.vm.hostname = "myvm"
  # Network configuration
  config.vm.network "private_network",
    :type => "dhcp",
    :libvirt__network_name => "pfsense-lan"
  # Provider-specific settings
  config.vm.provider :libvirt do |libvirt|
    # Memory in MB
    libvirt.memory = 2048
    # Number of CPUs
    libvirt.cpus = 2
    # Disk size (optional - expands base image)
    libvirt.machine_virtual_size = 20  # GB
    # Storage pool
    libvirt.storage_pool_name = "user-vm"
  end
end
</code>
'''Network Configuration Explained:'''
<syntaxhighlight lang="ruby">
config.vm.network "private_network",
  :type => "dhcp",
  :libvirt__network_name => "pfsense-lan"
</code>
* '''<code>:type => "dhcp"</code>:''' VM gets IP automatically from pfSense (10.7.1.x range)
* '''<code>:libvirt__network_name => "pfsense-lan"</code>:''' Connects to the pfsense-lan virtual network
* '''Important:''' Do NOT use <code>"public_network"</code> - bridged networking is blocked for user VMs
'''Step 3: Start the VM'''
<code>
vagrant up
</code>
'''What happens:'''
# Downloads the base box (first time only)
# Creates VM with specified settings
# Creates disk in <code>user-vm</code> storage pool
# Connects to <code>pfsense-lan</code> network
# Starts the VM
# Provisions if configured
'''Step 4: Access the VM'''
'''SSH into VM:'''
<code>
vagrant ssh
</code>
'''Check VM status:'''
<code>
vagrant status
</code>
=== Managing Vagrant VMs ===
'''Stop VM (keeps disk):'''
<code>
vagrant halt
</code>
'''Suspend VM (saves RAM state):'''
<code>
vagrant suspend
</code>
'''Resume suspended VM:'''
<code>
vagrant resume
</code>
'''Restart VM:'''
<code>
vagrant reload
</code>
'''Restart and re-provision:'''
<code>
vagrant reload --provision
</code>
'''Show SSH config:'''
<code>
vagrant ssh-config
</code>
=== Deleting a Vagrant VM ===
'''Step 1: Destroy the VM'''
From the project directory:
<code>
vagrant destroy
</code>
Confirm with <code>y</code> when prompted.
'''What this does:'''
* Stops the VM
* Deletes the VM definition
* Deletes the virtual hard drive from <code>user-vm</code> storage pool
'''Step 2: Remove Project Directory (optional)'''
<code>
cd ..
rm -rf ~/vagrant-projects/myvm
</code>
'''Remove Downloaded Box (optional):'''
If you want to free space and won't use this box again:
<code>
# List downloaded boxes
vagrant box list
# Remove specific box
vagrant box remove generic/ubuntu2204
</code>
=== Using Reserved MAC Addresses with Vagrant ===
To assign a reserved MAC address for predictable IP, add to your Vagrantfile:
<syntaxhighlight lang="ruby">
Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.vm.hostname = "myvm"
  config.vm.network "private_network",
    :type => "dhcp",
    :libvirt__network_name => "pfsense-lan",
    :mac => "52:54:00:00:00:95"  # Will get IP 10.7.1.95
  config.vm.provider :libvirt do |libvirt|
    libvirt.memory = 2048
    libvirt.cpus = 2
    libvirt.storage_pool_name = "user-vm"
  end
end
</code>
'''Your VM will now always receive IP:''' 10.7.1.95
=== Advanced Vagrant Network Configuration ===
'''Static IP Address (Alternative Method):'''
<syntaxhighlight lang="ruby">
config.vm.network "private_network",
  :ip => "10.7.1.100",
  :libvirt__network_name => "pfsense-lan"
</code>
'''Important:''' Choose IP outside pfSense DHCP range to avoid conflicts. Recommended: Use reserved MAC addresses instead.
'''Port Forwarding:'''
<syntaxhighlight lang="ruby">
# Forward host port 8080 to VM port 80
config.vm.network "forwarded_port",
  guest: 80,
  host: 8080
</code>
=== Example Vagrantfile: Web Server with Reserved IP ===
<syntaxhighlight lang="ruby">
Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.vm.hostname = "webserver"
  # Network with reserved MAC for static IP
  config.vm.network "private_network",
    :type => "dhcp",
    :libvirt__network_name => "pfsense-lan",
    :mac => "52:54:00:00:00:90"  # Gets IP 10.7.1.90
  # Provider settings
  config.vm.provider :libvirt do |libvirt|
    libvirt.memory = 1024
    libvirt.cpus = 1
    libvirt.storage_pool_name = "user-vm"
  end
  # Provision with shell script
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y nginx
    systemctl enable nginx
    systemctl start nginx
  SHELL
end
</code>
'''Result:''' Web server VM with predictable IP 10.7.1.90
== Network Configuration Summary ==
=== User VM Network Requirements ===
'''Allowed:'''
* ✅ Virtual network: <code>pfsense-lan</code>
* ✅ DHCP from pfSense (10.7.1.x range)
* ✅ Reserved MAC addresses for static DHCP (10.7.1.90-99)
* ✅ Static IP in 10.7.1.x range (outside DHCP pool)
'''Blocked:'''
* ❌ Bridged networking (br0)
* ❌ Direct internet access
* ❌ Other virtual networks
=== How It Works ===
<pre>
Your VM (10.7.1.x)
      ↓
pfsense-lan network (virbr-pfsense)
      ↓
pfSense LAN (10.7.1.1)
      ↓
pfSense WAN (148.113.26.212)
      ↓
Internet (OVH)
</pre>
'''All user VMs:'''
* Connect to <code>pfsense-lan</code> libvirt network
* Route through pfSense firewall for internet access
* Managed and filtered by pfSense (NAT, firewall rules, VPN, etc.)
=== Reserved MAC Addresses for Static IPs ===
'''How DHCP Reservations Work:'''
# pfSense DHCP server has 10 static mappings configured
# Each MAC address is mapped to a specific IP address
# When a VM with a reserved MAC requests DHCP, pfSense always assigns the same IP
# This provides stable, predictable IP addresses without manual IP configuration
'''Available Reservations:'''
{| class="wikitable"
! MAC Address !! Assigned IP !! How to Use
|-
| 52:54:00:00:00:90 || 10.7.1.90 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:91 || 10.7.1.91 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:92 || 10.7.1.92 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:93 || 10.7.1.93 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:94 || 10.7.1.94 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:95 || 10.7.1.95 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:96 || 10.7.1.96 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:97 || 10.7.1.97 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:98 || 10.7.1.98 || Assign this MAC to your VM NIC
|-
| 52:54:00:00:00:99 || 10.7.1.99 || Assign this MAC to your VM NIC
|}
'''Predicting Your VM's IP Address:'''
# '''When creating VM:''' Assign one of the reserved MAC addresses to your VM's network interface
# '''Boot the VM:''' The VM will request DHCP from pfSense
# '''pfSense checks:''' Recognizes the MAC address in its reservation table
# '''IP assigned:''' Always assigns the corresponding IP address
# '''Result:''' Your VM will have the same IP every time it boots
'''Benefits:'''
* No need to configure static IPs inside the VM
* IP survives VM rebuilds (as long as you use the same MAC)
* Easy to remember and document (e.g., "my-webserver is always 10.7.1.90")
* Simplifies firewall rules and port forwarding in pfSense
'''Coordination:'''
* Keep track of which MAC/IP you're using for each VM
* Don't assign the same MAC to multiple VMs
* Document your assignments to avoid conflicts
== Storage Pool Information ==
=== user-vm Storage Pool ===
'''Name:''' <code>user-vm</code><br/>
'''Type:''' Directory-based storage pool<br/>
'''Location:''' Dedicated hard drive (separate from system disk)<br/>
'''Format:''' qcow2 (thin-provisioned)<br/>
'''Purpose:''' Store all user virtual machine disk images
'''Usage in virt-manager:'''
* Appears in storage pool dropdown when creating/managing VMs
* Select <code>user-vm</code> pool when creating new virtual disk
'''Usage in Vagrant:'''
* Configure in Vagrantfile: <code>libvirt.storage_pool_name = "user-vm"</code>
* All Vagrant VM disks will be created in this pool
'''Verify Storage Pool:'''
<code>
# List all storage pools
virsh pool-list --all
# Show pool details
virsh pool-info user-vm
# List volumes in pool
virsh vol-list user-vm
</code>
== Troubleshooting ==
=== SSH Tunnel Issues ===
'''Problem:''' RDP connection fails with "Connection refused"
'''Solution:'''
* Check SSH tunnel is still running
* Verify port forwarding: <code>ssh -L 3389:localhost:3389 -v your-username@HF-HV04</code>
* Check XRDP service: <code>systemctl status xrdp</code> (on server)
=== VM Network Issues ===
'''Problem:''' VM has no internet access
'''Check:'''
<code>
# Inside VM - check IP address
ip addr show
# Check gateway
ip route show default
# Ping pfSense gateway
ping 10.7.1.1
# Ping external IP
ping 8.8.8.8
</code>
'''Common causes:'''
* VM not connected to <code>pfsense-lan</code> network
* pfSense firewall rules blocking traffic
* DNS not configured in VM
'''Problem:''' VM has wrong IP address
'''Solution:'''
* Verify MAC address matches reserved table
* Check pfSense DHCP reservations (Services → DHCP Server)
* Release and renew DHCP: <code>sudo dhclient -r && sudo dhclient</code>
=== Vagrant Issues ===
'''Problem:''' "No usable default provider"
'''Solution:'''
<code>
# Install libvirt provider
vagrant plugin install vagrant-libvirt
</code>
'''Problem:''' "Call to virStorageVolCreateXML failed"
'''Solution:'''
* Storage pool <code>user-vm</code> might not be active
* Check: <code>virsh pool-list --all</code>
* Start pool: <code>virsh pool-start user-vm</code>
* Disk space full: <code>df -h</code>
'''Problem:''' Wrong network in Vagrant
'''Solution:'''
* Verify Vagrantfile has: <code>:libvirt__network_name => "pfsense-lan"</code>
* NOT "default" or other network names
=== Storage Pool Issues ===
'''Problem:''' <code>user-vm</code> pool not visible
'''Solution:'''
<code>
# Check if pool exists
virsh pool-list --all
# Start the pool
virsh pool-start user-vm
# Set to autostart
virsh pool-autostart user-vm
</code>
== Quick Reference ==
=== SSH Tunnel (Quick Start) ===
'''Linux/macOS:'''
<code>
ssh -L 3389:localhost:3389 username@HF-HV04
# Then connect RDP to: localhost:3389
</code>
'''Windows (PowerShell):'''
<syntaxhighlight lang="powershell">
ssh -L 3389:localhost:3389 username@HF-HV04
# Then use Remote Desktop to: localhost:3389
</code>
=== Vagrant Quick Start with Reserved IP ===
<code>
mkdir ~/vagrant-projects/test-vm && cd ~/vagrant-projects/test-vm
cat > Vagrantfile <<'EOF'
Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.vm.network "private_network",
    :type => "dhcp",
    :libvirt__network_name => "pfsense-lan",
    :mac => "52:54:00:00:00:99"  # Gets IP 10.7.1.99
  config.vm.provider :libvirt do |lv|
    lv.memory = 1024
    lv.cpus = 1
    lv.storage_pool_name = "user-vm"
  end
end
EOF
vagrant up
vagrant ssh
</code>
'''Your VM will have IP:''' 10.7.1.99
=== virt-manager Quick Network Setup ===
# Virtual network: '''pfsense-lan'''
# NIC MAC address: '''52:54:00:00:00:XX''' (choose from table)
# Storage pool: '''user-vm'''
== Support ==
For issues or questions:
* Check logs: <code>journalctl -u xrdp -f</code> (XRDP)
* Check logs: <code>journalctl -u libvirtd -f</code> (libvirt)
* Check VM console in virt-manager for boot issues
* Verify network: <code>virsh net-list --all</code>
* Verify storage: <code>virsh pool-list --all</code>
== Reserved IP Address Assignment Table ==
Use this table to track which VMs are using which reserved IPs:
{| class="wikitable"
! MAC Address !! IP Address !! VM Name !! Owner !! Purpose !! Notes
|-
| 52:54:00:00:00:90 || 10.7.1.90 || || || ||
|-
| 52:54:00:00:00:91 || 10.7.1.91 || || || ||
|-
| 52:54:00:00:00:92 || 10.7.1.92 || || || ||
|-
| 52:54:00:00:00:93 || 10.7.1.93 || || || ||
|-
| 52:54:00:00:00:94 || 10.7.1.94 || || || ||
|-
| 52:54:00:00:00:95 || 10.7.1.95 || || || ||
|-
| 52:54:00:00:00:96 || 10.7.1.96 || || || ||
|-
| 52:54:00:00:00:97 || 10.7.1.97 || || || ||
|-
| 52:54:00:00:00:98 || 10.7.1.98 || || || ||
|-
| 52:54:00:00:00:99 || 10.7.1.99 || || || ||
|}
== Connecting to the 10.7.1.0/24 network ==
From Pune office, the network is routed and you can reach out to your vm by using it's ip.
From Home Office, you can use your openVPN client to connect to the network.
use this configfile:
<pre>
dev tun
persist-tun
persist-key
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
data-ciphers-fallback AES-256-CBC
auth SHA256
tls-client
client
resolv-retry infinite
remote 148.113.26.212 1194 udp4
nobind
auth-user-pass
remote-cert-tls server
explicit-exit-notify
<ca>
-----BEGIN CERTIFICATE-----
MIIDMzCCAhugAwIBAgIIOQA2nMrG8e8wDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UE
AxMLaW50ZXJuYWwtY2EwHhcNMjUxMTIxMDk1MDI5WhcNMzUxMTE5MDk1MDI5WjAW
MRQwEgYDVQQDEwtpbnRlcm5hbC1jYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAJRl5chLFhhttaQ+SIb8WsL2JCSfehhfOKBXVvq6sl8ybQBmH6y7QQEi
ijdZW1tnqce8xhDfBlbNe/haTRYi6Hr9Hme5VmtKunmCUydzj2oSz070NpEvirDf
UPWmgW9RviPkX+3MLBw4GKTIKimWkPa6SFovSN9k0mHjxQ583EsVkb95MImHbAXl
9A1I1ITlqDqKq9yWV0EjWm7piatNo6ZdqDc0NUhYhAhS7BzmCPe7DZZMRAgO/QxR
vR4G4vKV4RPsszVQZ3RsqLxif5lBNPQ2SjrGF4Cq8J3pEKfufl+Rjb5xaQLlOFM5
Dl4P70kV9ynFwT2Fff9wGi8t5FMVDDUCAwEAAaOBhDCBgTAdBgNVHQ4EFgQUnADh
dcajDF+zAIXLJKEUi8dbhQYwRQYDVR0jBD4wPIAUnADhdcajDF+zAIXLJKEUi8db
hQahGqQYMBYxFDASBgNVBAMTC2ludGVybmFsLWNhggg5ADacysbx7zAMBgNVHRME
BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAb6wXZ5d7uW6Z
BkZxfDECJe9EM3IkxFK1UPtlbu4wIpAK94K0nC6JhPzysNwYD9x09cy19ts8Al7M
QxySy9yQ7tlBkoD4lM0VrZstbTKU2RMUEZ6NS72azS0lvt6FPSZEBNR65e08KNwZ
TUl2N8xRZ6jaRbSkNr+mR9sUMOnCY/dWtzPHSu3yG/USWiunK04YUID8qars4VCH
ZOFuiyVlPnU/b+1Gb7ZbSRmJoQVLkNUINaUDKS3ywxTVqwcRRVQyNA18hJ5LbxiF
pxfdSqUF4ATYXes9ASJ641sKaw2/VPvJQpDyJ4wqvMQN7rL840Si1ezb3Zm9h17C
NtvlkpvVtg==
-----END CERTIFICATE-----
</ca>
setenv CLIENT_CERT 0
key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
89eee22bd6b6d2631cfb42217b86992b
69df8c59c3de0cd0ce062f3d31464988
2520dd98f5510f4da8a5d41ac43a5f46
f4ec4c8d9cc9cdcd0aeffa2538c161b9
00b1c0f806fb62e52a8c76c71e2bf617
896076f9fe12f2a2727d1c539da883b1
2bc90b424bc296f67a15ec3030d872d9
2c5798f75ae2668f4ff6276cefbd1bc7
ebeee682b8d6d9b398001f2559ec3411
cbe55ddcfaf01c35c119cb0e425aa3ea
8aac56bf8dc302d8f8c53f8d24de0cfc
508900d4603aa2a98b7413cc066177ec
6a91d278aca525ef1cec4c212448ecdc
8a01525388f69b899b11c26212e50db6
d14c10210ae1dcc2171621fd982facb4
0e57d658a6c27619b873dd9eebbfeb9b
-----END OpenVPN Static key V1-----
</tls-auth>
</pre>

Latest revision as of 09:23, 1 December 2025