<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Rajeshwaran M</title>
    <description>The latest articles on Forem by Rajeshwaran M (@rajeshwaranm).</description>
    <link>https://forem.com/rajeshwaranm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3208593%2Fc46fef5a-63da-462e-a6f0-7a6923e772fa.jpeg</url>
      <title>Forem: Rajeshwaran M</title>
      <link>https://forem.com/rajeshwaranm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rajeshwaranm"/>
    <language>en</language>
    <item>
      <title>Azure Site Recovery BCDR Strategy</title>
      <dc:creator>Rajeshwaran M</dc:creator>
      <pubDate>Sat, 20 Sep 2025 11:10:31 +0000</pubDate>
      <link>https://forem.com/rajeshwaranm/azure-site-recovery-bcdr-strategy-5035</link>
      <guid>https://forem.com/rajeshwaranm/azure-site-recovery-bcdr-strategy-5035</guid>
      <description>&lt;p&gt;What is Azure Site Recovery&lt;/p&gt;

&lt;p&gt;Azure Site Recovery replicates your virtual-machine workloads between Azure regions. You can also use Site Recovery to migrate VMs from other environments, such as on-premises infrastructure, to Azure. You will learn that Site Recovery does much more than just backing up and restoring infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1riag3m7b51kamth5hbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1riag3m7b51kamth5hbe.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With ASR, you can:&lt;/p&gt;

&lt;p&gt;Replicate workloads across Azure regions.&lt;/p&gt;

&lt;p&gt;Migrate on-premises VMs (VMware, Hyper-V, or physical servers) to Azure.&lt;/p&gt;

&lt;p&gt;Protect and recover Azure VMs across paired regions.&lt;/p&gt;

&lt;p&gt;ASR provides more than just backup—it delivers orchestrated failover and recovery, ensuring your critical applications remain available.&lt;/p&gt;

&lt;p&gt;Multiple data consistency options&lt;/p&gt;

&lt;p&gt;Crash Consistency&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Snapshot of all data on disk every 5 minutes.&lt;/li&gt;
&lt;li&gt;Retention up to 72 hours for application servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Application consistency&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Snapshot of data on disk + in-memory data every hour.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Retention up to 72 hours for databases.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multi VM consistency&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Consistent recovery points across multiple VMs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replication group created for all enabled VMs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shared crash &amp;amp; app consistent recovery points for all VMs in a group&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Platform Support:&lt;/p&gt;

&lt;p&gt;Windows OS: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2&lt;/p&gt;

&lt;p&gt;Linux OS: RHEL 5,6,7,8 - CentOS 5,6,7,8 - Ubuntu 14.0- 20.04 LTS&lt;br&gt;
SUSE Enterprise Server 11-15, OEL 6-8, Debian 7-9&lt;/p&gt;

&lt;p&gt;vSphere &amp;amp; vCenter: 5.5,6.0,6.5,6.7, 7.0&lt;/p&gt;

&lt;p&gt;Azure Platform: Managed Disk, Encrypted Storage, Azure Hybrid Benefit&lt;/p&gt;

&lt;p&gt;Benefits of Azure Site Recovery&lt;/p&gt;

&lt;p&gt;Business Continuity: Keeps workloads running during outages or maintenance.&lt;/p&gt;

&lt;p&gt;Cost-Effective: Reduces DR costs by leveraging Azure infrastructure.&lt;/p&gt;

&lt;p&gt;Compliance &amp;amp; Reliability: Meets regulatory requirements for disaster recovery.&lt;/p&gt;

&lt;p&gt;Scalable &amp;amp; Flexible: Supports hybrid, on-premises, and cloud-native workloads.&lt;/p&gt;

&lt;p&gt;Recovery Objectives&lt;/p&gt;

&lt;p&gt;RPO (Recovery Point Objective): Defines acceptable data loss (seconds to minutes).&lt;/p&gt;

&lt;p&gt;RTO (Recovery Time Objective): Defines how fast workloads can be recovered.&lt;/p&gt;

&lt;p&gt;Account Permissions&lt;/p&gt;

&lt;p&gt;Site Recovery uses role-based access control in Azure, which enables fine-grained access control and enables you to use several built-in Site Recovery roles&lt;/p&gt;

&lt;p&gt;Roles&lt;br&gt;
Site Recovery Contributor- Full permissions for SR operation, suitable for disaster recovery admins&lt;/p&gt;

&lt;p&gt;Site Recovery Operator- Operator has permissions to run and administer site recovery failover and failback operations, suitable for disaster recovery operators.&lt;/p&gt;

&lt;p&gt;Site Recovery Reader- To view Site Recovery operations, suitable for IT monitoring executives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98xhwz5vb8j8j9zlxsiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98xhwz5vb8j8j9zlxsiz.png" alt=" " width="771" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lab Setup:&lt;br&gt;
To set up DR, we will follow the steps below to replicate resources in the target environment.&lt;/p&gt;

&lt;p&gt;Step 1:&lt;br&gt;
Create a resource group for both the source and the target environments, as shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hkdtb6k7scxcw0mg3hl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hkdtb6k7scxcw0mg3hl.png" alt=" " width="800" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2:&lt;br&gt;
Create a Linux VM in the source environment so that we can fail it over to the target location.&lt;/p&gt;

&lt;p&gt;Step 3:&lt;br&gt;
Create a VNet and an Azure Recovery Services vault to replicate our source resources.&lt;br&gt;
Also, make sure to create a Recovery Services vault in the target Resource Group.&lt;/p&gt;

&lt;p&gt;Step 4:&lt;br&gt;
Go to the Recovery Services vault, click Enable Site Recovery as shown in the screenshot, and enable replication for the VM.&lt;/p&gt;

&lt;p&gt;When you enable replication in the target environment’s Recovery Services vault, it automatically installs the Site Recovery Mobility Service extension on the source VMs.&lt;/p&gt;

&lt;p&gt;In Azure Site Recovery (ASR), an Automation Account is used to run Recovery Plans with automated scripts during failover and failback operations.&lt;br&gt;
Key Purposes:&lt;br&gt;
Automated Recovery Actions:&lt;/p&gt;

&lt;p&gt;Execute PowerShell or Python scripts during failover&lt;br&gt;
Perform custom configuration tasks that can't be handled by ASR alone&lt;br&gt;
Automate post-failover activities like IP address changes, DNS updates, or application-specific configurations&lt;/p&gt;

&lt;p&gt;Recovery Plan Enhancement:&lt;/p&gt;

&lt;p&gt;Add manual actions and automated scripts between VM groups&lt;br&gt;
Sequence complex multi-tier application recovery&lt;br&gt;
Handle dependencies between different application components&lt;/p&gt;

&lt;p&gt;Common Automation Scenarios:&lt;/p&gt;

&lt;p&gt;Network Configuration: Update load balancer settings, firewall rules, or network security groups&lt;br&gt;
Application Configuration: Start services, update connection strings, or modify configuration files&lt;br&gt;
DNS Updates: Change DNS records to point to the new environment&lt;br&gt;
Notification: Send alerts or notifications to teams about the failover status&lt;/p&gt;

&lt;p&gt;Consistency &amp;amp; Reliability:&lt;/p&gt;

&lt;p&gt;Ensures repeatable, standardized recovery procedures&lt;br&gt;
Reduces human error during high-stress disaster situations&lt;br&gt;
Provides audit trails for compliance requirements&lt;/p&gt;

&lt;p&gt;Example Use Case:&lt;br&gt;
During a failover, ASR might recover your VMs successfully, but you still need to:&lt;/p&gt;

&lt;p&gt;Update your application's database connection string to point to the recovered database&lt;br&gt;
Restart specific services in a particular order&lt;br&gt;
Update external DNS records&lt;/p&gt;

&lt;p&gt;The Automation Account handles these tasks automatically through runbooks, making your disaster recovery truly automated rather than just VM recovery.&lt;br&gt;
Note: Automation Account is optional - you only need it if you require custom scripts in your Recovery Plans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54nh6qjp6fjbpf76wd7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54nh6qjp6fjbpf76wd7r.png" alt=" " width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7vl2ts4xe3wz81x1s6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7vl2ts4xe3wz81x1s6f.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enable Replication:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvofvzj6xgy5vm9cubfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvofvzj6xgy5vm9cubfk.png" alt=" " width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gwcpk1mc1e87ti9bysn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gwcpk1mc1e87ti9bysn.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5i89redadrd6o5mdg2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5i89redadrd6o5mdg2u.png" alt=" " width="764" height="817"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk18inlz9qfrhx7tjigj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk18inlz9qfrhx7tjigj.png" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpfq538kioohgx4lk10k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpfq538kioohgx4lk10k.png" alt=" " width="662" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Site Recovery has a High Churn option that you can choose to protect VMs with a high data change rate. With this, you can use a Premium Block Blob type of storage account. By default, the Normal Churn option is selected.&lt;br&gt;
Enabling the replication option takes some time, so please wait. It took 51 minutes for me&lt;/p&gt;

&lt;p&gt;Step 5:&lt;br&gt;
Run a disaster recovery drill for Azure VMs. Please follow the steps below&lt;br&gt;
In the vault &amp;gt; Replicated items, select the VM and on the Overview page, check that the VM is protected and healthy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fim3q9pkdtmu1j9m6e6n9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fim3q9pkdtmu1j9m6e6n9.png" alt=" " width="800" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double-click on the replicated Items and select Test Failover.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3swnrke9d8nftg9tncj8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3swnrke9d8nftg9tncj8.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Test Failover, you will be prompted to choose a recovery point. The Azure VM in the target region is created using data from the selected recovery point. Select the Latest one from that list as shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5f6f0l5emnv41p8i4yv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5f6f0l5emnv41p8i4yv.png" alt=" " width="775" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Monitor the test failover in notifications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tvzuzzuy133wjs68gh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tvzuzzuy133wjs68gh9.png" alt=" " width="475" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the failover finishes, the Azure VM created in the target region appears in the Azure portal under Virtual Machines. Make sure that the VM is running, sized appropriately, and connected to the network you selected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8odsvl12co5ve9ku28rq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8odsvl12co5ve9ku28rq.png" alt=" " width="484" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F936hragz9e4bdkl5y1x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F936hragz9e4bdkl5y1x1.png" alt=" " width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Step:&lt;br&gt;
&lt;strong&gt;Clean up resources&lt;/strong&gt;&lt;br&gt;
To clean up, select the Cleanup test failover button to clean up the created resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1tn9ubiqa6ibki3sxzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1tn9ubiqa6ibki3sxzf.png" alt=" " width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Put some notes, and then click OK&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtiw0u54st3mnqjttnrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtiw0u54st3mnqjttnrr.png" alt=" " width="648" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;you ran a disaster recovery drill to check that failover works as expected. Please feel free to let me know in the comments section if I have made any mistakes. Happy Learning :)&lt;/p&gt;

&lt;p&gt;Resources:&lt;br&gt;
Source Region: east-us&lt;br&gt;
Resource Group: asr-source&lt;br&gt;
Vnet: vnet-asr&lt;br&gt;
StorageAccount Cache: szk0h1vaultdrasrcache&lt;br&gt;
VM: vm1&lt;br&gt;
PublicIP: vm1-ip&lt;/p&gt;

&lt;p&gt;Target Region: west-us&lt;br&gt;
Resource Group: asr-target&lt;br&gt;
Vnet: vnet-asr-DR&lt;br&gt;
Vault: vault-DR&lt;br&gt;
Automation Account: vault-DR-spe-asr-automationaccount&lt;/p&gt;

&lt;p&gt;Reference:&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-enable-replication" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-enable-replication&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-dr-drill" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-dr-drill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-failover-failback" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/site-recovery/azure-to-azure-tutorial-failover-failback&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>devops</category>
      <category>bcdr</category>
    </item>
    <item>
      <title>Jump Server Setup</title>
      <dc:creator>Rajeshwaran M</dc:creator>
      <pubDate>Tue, 05 Aug 2025 12:38:55 +0000</pubDate>
      <link>https://forem.com/rajeshwaranm/jump-server-setup-1n74</link>
      <guid>https://forem.com/rajeshwaranm/jump-server-setup-1n74</guid>
      <description>&lt;p&gt;What is Jump Server?&lt;br&gt;
A jump server is a specially configured server that acts as a secure gateway to access other servers in a private network.&lt;/p&gt;

&lt;p&gt;Think of your internal servers are like a secure building, and the jump server is like a security checkpoint at the entrance. You can't directly enter the building from the street - you must first go through the security checkpoint, get verified, and then access the rooms inside.&lt;/p&gt;

&lt;p&gt;This guide implements a secure jump server architecture where:&lt;/p&gt;

&lt;p&gt;Jumpbox: A VM deployed in a public subnet with a public IP.&lt;/p&gt;

&lt;p&gt;Target VMs: Private Azure VMs (no public IP) in the same Virtual Network.&lt;/p&gt;

&lt;p&gt;Access: The admin connects to the jumpbox via RDP/SSH and then to the target VMs via their private IP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public Subnet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Address Prefix: 10.0.1.0/24&lt;/p&gt;

&lt;p&gt;NSG Rules: Allow RDP/SSH from your home public IP&lt;/p&gt;

&lt;p&gt;Public IP: ✅ Yes (for Jumpbox only)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Subnet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Address Prefix: 10.0.2.0/24&lt;/p&gt;

&lt;p&gt;NSG Rules: Allow access only from Jumpbox IP&lt;/p&gt;

&lt;p&gt;Public IP: ❌ No public IPs&lt;/p&gt;

&lt;p&gt;Step 1 :&lt;br&gt;
Create a Resource group as shown in the screenshot below, I'm going to call it rg-jumpbox&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n7zkzz2ean84oypn8ie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n7zkzz2ean84oypn8ie.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2 :&lt;br&gt;
Create Vnet &lt;br&gt;
Go to Azure Portal &lt;br&gt;
Search for Virtual networks → Click + Create&lt;/p&gt;

&lt;p&gt;Also, create public and private subnets while creating a VNet, as shown in the screenshot below&lt;/p&gt;

&lt;p&gt;Once both subnets are added, click Review + create → Create&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F380nwclt0vj5hs2v4vx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F380nwclt0vj5hs2v4vx3.png" alt=" " width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3:&lt;br&gt;
Create an NSG group for the public subnet and the private subnet&lt;/p&gt;

&lt;p&gt;In Azure Portal, search for Network security groups&lt;/p&gt;

&lt;p&gt;Click + Create&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfs65qwo6n97jcwsc793.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfs65qwo6n97jcwsc793.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wwhqth2oj07qz37gxaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wwhqth2oj07qz37gxaf.png" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4:&lt;/p&gt;

&lt;p&gt;Create an NSG rule to allow SSH/RDP connection only from your home IP&lt;/p&gt;

&lt;p&gt;After creating PublicSubnet-NSG, open it.&lt;/p&gt;

&lt;p&gt;Go to Inbound security rules → Click + Add&lt;/p&gt;

&lt;p&gt;Source: your public IP (check &lt;a href="https://whatismyipaddress.com" rel="noopener noreferrer"&gt;https://whatismyipaddress.com&lt;/a&gt;)&lt;br&gt;
Destination port ranges: 3389 or 22&lt;br&gt;
Protocol: TCP&lt;br&gt;
Action: Allow&lt;br&gt;
Priority: 100&lt;br&gt;
Name: Allow-Admin-RDP&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F620041r6qp51v18tudzw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F620041r6qp51v18tudzw.png" alt=" " width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Associate the NSG with the public subnet&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4j03n6okyuyznduuzxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4j03n6okyuyznduuzxa.png" alt=" " width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the same steps for the private subnet and associate the private NSG with the private subnet.&lt;/p&gt;

&lt;p&gt;Source: your Jumpbox subnet or your jumpbox VM IP&lt;br&gt;
Destination port ranges: 3389 or 22&lt;br&gt;
Protocol: TCP&lt;br&gt;
Action: Allow&lt;br&gt;
Priority: 100&lt;br&gt;
Name: Allow-Jumpbox-RDP or Allow-Jumpbox-SSH&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjeop1wm9n3li53d5dguj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjeop1wm9n3li53d5dguj.png" alt=" " width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqb0ytbnlp0peg2tlecj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqb0ytbnlp0peg2tlecj.png" alt=" " width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5: &lt;br&gt;
Create a Jump Server and a Test VM to check the RDP connection&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1977npaz4say0gmp0bpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1977npaz4say0gmp0bpy.png" alt=" " width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvror4f2o1jga305rw0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvror4f2o1jga305rw0e.png" alt=" " width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TestVM&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4cbuogo3xumr8fg1auu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4cbuogo3xumr8fg1auu.png" alt=" " width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fajx5k7vyxmbkykduymqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fajx5k7vyxmbkykduymqu.png" alt=" " width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was able to connect the Test VM from the jump server &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figsydztzdpck8rlccmw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figsydztzdpck8rlccmw3.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>s2s vpn connection check</title>
      <dc:creator>Rajeshwaran M</dc:creator>
      <pubDate>Sat, 14 Jun 2025 13:33:04 +0000</pubDate>
      <link>https://forem.com/rajeshwaranm/site-to-site-vpn-check-the-connection-using-the-jump-host-4h27</link>
      <guid>https://forem.com/rajeshwaranm/site-to-site-vpn-check-the-connection-using-the-jump-host-4h27</guid>
      <description>&lt;p&gt;Before we check the connection, we should peer the Hub and Spoke network&lt;br&gt;
Please follow the steps to enable the VNet peering between the Hub and Spoke.&lt;/p&gt;

&lt;p&gt;In hub-and-spoke network architecture, gateway transit allows spoke virtual networks to share the VPN gateway in the hub, instead of deploying VPN gateways in every spoke virtual network.&lt;/p&gt;

&lt;p&gt;Go to the Hub VNet, select the peering option&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Peering link name: Name the link. Example: spoke-to-hub&lt;/li&gt;
&lt;li&gt;Virtual network deployment model: Resource Manager&lt;/li&gt;
&lt;li&gt;I know my resource ID: Leave blank. You only need to select this if you don't have read access to the virtual network or subscription you want to peer with.&lt;/li&gt;
&lt;li&gt;Subscription: Select the subscription.&lt;/li&gt;
&lt;li&gt;Virtual Network: select the spoke VNet from the dropdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The peering connection should be configured as shown in the screenshot below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpkciairhdc3dodfjh9e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpkciairhdc3dodfjh9e.png" alt="Image description" width="756" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To check the connection between the on-prem and the hub network, we are going to deploy the Windows Jump host on the spoke VNet and deploy the Windows VM in the on-prem VNet.&lt;/p&gt;

&lt;p&gt;Step 1:&lt;br&gt;
Create a Windows Jump Host in the spoke VNet. Also, please keep in mind that, by default, Azure blocks ICMP traffic, so we need to add inbound and outbound rules to the Windows Jump Host to allow ICMP. Please refer to the NSG rule below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojjp73x86chcg05zokpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojjp73x86chcg05zokpv.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One more thing: the Windows machine firewall also blocks ICMP traffic, so you need to enable the following rule in Windows Firewall: File and Printer Sharing (Echo Request - ICMPv4-In).&lt;/p&gt;

&lt;p&gt;Also, add the remote IP address range to the scope, as shown in the screenshot below. I spent 3 days finding these settings. 🙂&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqakh7x3d3j54z1rcgs0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqakh7x3d3j54z1rcgs0c.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf383e56ao9gqcehkzg8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf383e56ao9gqcehkzg8.png" alt="Image description" width="438" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open Windows PowerShell on the Jump Host and try the tnc command to check the RDP connection to the remote network as shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1swccx2b5ypqe361y2ks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1swccx2b5ypqe361y2ks.png" alt="Image description" width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2:&lt;br&gt;
Create a Windows machine in the spoke VNet. As you may already know, by default, Azure blocks ICMP traffic, so we need to add inbound and outbound rules to the Windows VM to allow ICMP. Please refer to the NSG rule below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5wfinxkp7wfe8grtr12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5wfinxkp7wfe8grtr12.png" alt="Image description" width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, we also need to modify Windows firewall settings as we did before enabling the File and Printer Sharing (Echo Request - ICMPv4-In) rule.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wxxe1brkf9ha6byhdcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wxxe1brkf9ha6byhdcq.png" alt="Image description" width="437" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open Windows PowerShell on the Windows VM and try the tnc command to check the RDP connection to the remote network, as shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe54rb3fdfmo4ek005sn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe54rb3fdfmo4ek005sn8.png" alt="Image description" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I referred to the following Microsoft document to complete this setup. It took me a long time to figure things out—even though I had Microsoft documentation for reference, I was scratching my head trying to figure out the NSG rule and Windows Firewall. Eventually, I managed to resolve it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/vpn-gateway/tutorial-site-to-site-portal" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/vpn-gateway/tutorial-site-to-site-portal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/tutorial-create-secured-hub-and-spoke" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-network-manager/tutorial-create-secured-hub-and-spoke&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-peering-gateway-transit" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-peering-gateway-transit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If I’ve made any mistakes or incorrectly mentioned any steps, please feel free to let me know in the comments section. Happy learning! I’ll try to post another interesting project soon. See you all :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Site-to-Site VPN Connection setup on Azure</title>
      <dc:creator>Rajeshwaran M</dc:creator>
      <pubDate>Sat, 14 Jun 2025 06:04:26 +0000</pubDate>
      <link>https://forem.com/rajeshwaranm/site-to-site-vpn-connection-setup-on-azure-1dbn</link>
      <guid>https://forem.com/rajeshwaranm/site-to-site-vpn-connection-setup-on-azure-1dbn</guid>
      <description>&lt;p&gt;What is s2s VPN?&lt;br&gt;
A Site-to-Site VPN (S2S VPN) is a type of IPsec VPN connection that securely connects two networks (sites) over the public internet. &lt;br&gt;
Typically, between your on-premises network (e.g., a physical office, data center, or Proxmox-hosted Linux box) and your Azure virtual network (VNet) or other cloud network.&lt;/p&gt;

&lt;p&gt;Simple Example:&lt;br&gt;
Location             Network            IP Range&lt;br&gt;
On-prem (Office)    Router + Firewall   192.168.1.0/24&lt;br&gt;
Azure VNet          Virtual network         10.0.0.0/16&lt;/p&gt;

&lt;p&gt;With S2S VPN:&lt;/p&gt;

&lt;p&gt;A VM in Azure can talk to your on-prem file server at 192.168.1.10&lt;/p&gt;

&lt;p&gt;Your on-prem server can talk to a VM in Azure at 10.0.0.4&lt;/p&gt;

&lt;p&gt;All traffic is encrypted using IPsec/IKE protocols.&lt;/p&gt;

&lt;p&gt;In the example below, I'm going to simulate the on-premises environment in Azure. Please find below the resource details for reference&lt;/p&gt;

&lt;p&gt;Create 1 On-Prem VNet&lt;/p&gt;

&lt;p&gt;Name: onpremvnet&lt;br&gt;
Address Range: 172.0.0.0/16&lt;br&gt;
Within an on-premises VNet, create a Gateway Subnet&lt;br&gt;
Subnet Name: GatewaySubnet&lt;br&gt;
Address Range: 172.0.1.0/27&lt;/p&gt;

&lt;p&gt;Create 1 Hub VNet&lt;br&gt;
Name: hubvnet&lt;br&gt;
Address Range: 10.100.0.0/16&lt;br&gt;
Within HubVnet, create a Gateway Subnet&lt;br&gt;
Subnet Name: GatewaySubnet&lt;br&gt;
Address Range: 10.100.1.0/27&lt;/p&gt;

&lt;p&gt;Create 2 Spoke VNets&lt;br&gt;
Spoke VNet 1: 10.200.0.0/16&lt;br&gt;
Location: Central India&lt;/p&gt;

&lt;p&gt;VNet Peering&lt;br&gt;
Peer both Spoke VNets with the Hub VNet&lt;/p&gt;

&lt;p&gt;Create 2 VNet Gateways&lt;br&gt;
VNet Gateway 1: In on-premises vnet&lt;br&gt;
VNet Gateway 2: In hubvnet&lt;/p&gt;

&lt;p&gt;Create 2 Local Network Gateways&lt;br&gt;
Local Network Gateway 1: Represents Azure hub on the on-prem side&lt;br&gt;
Local Network Gateway 2: Represents on-prem on the Azure hub side&lt;/p&gt;

&lt;p&gt;Create 2 VPN Connections&lt;br&gt;
Connection 1: From onpremvnet → hubvnet&lt;br&gt;
Connection 2: From hubvnet → onpremvnet&lt;/p&gt;

&lt;p&gt;Step1:&lt;br&gt;
Create a Resource Group for hub, spoke, and on-prem as shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2psfs1839g359e0qlmo1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2psfs1839g359e0qlmo1.png" alt="Image description" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step2:&lt;br&gt;
Create a VNet corresponding to the resource group that we have already created. Please refer to the screenshot below for reference.&lt;br&gt;
Don’t forget—you need to create three VNets, each corresponding to the resource group. You can create both spoke VNETs in a single spoke resource group&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawbh0nuh175izba1mg4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawbh0nuh175izba1mg4m.png" alt="Image description" width="759" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5gbrr0fbnfklwghy35w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5gbrr0fbnfklwghy35w.png" alt="Image description" width="777" height="710"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3:&lt;br&gt;
Create a Virtual Network Gateway and a Local Network Gateway for the on-prem VNet and the hub VNet, as shown in the screenshot below.&lt;br&gt;
You can choose any VPN SKU based on your requirements. For this experiment, I’m going to use VPNGW1. Also, disable the active-active mode for the sake of the lab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmq9a0xzecaappgsmez1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmq9a0xzecaappgsmez1f.png" alt="Image description" width="752" height="903"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Local Network Gateway Creation on ONPREM&lt;/p&gt;

&lt;p&gt;The local network gateway is a specific object deployed to Azure that represents your on-premises location (the site) for routing purposes.&lt;/p&gt;

&lt;p&gt;We have created the on-prem virtual network gateway on the on-prem VNet, so you must enter its public IP address when creating the local network gateway.&lt;/p&gt;

&lt;p&gt;In the address space field, I used the full range of the hub/spoke network, so I entered 10.0.0.0/8. You can also enter specific hub network address range, such as 10.100.0.0/16. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faz337dhh1uiubawqz5b0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faz337dhh1uiubawqz5b0.png" alt="Image description" width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the Sake of the lab, leave the BGP setting as it is&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2iljwow2nfpbis7iwlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2iljwow2nfpbis7iwlj.png" alt="Image description" width="470" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please, repeat the same step for the Hub Network as well.&lt;/p&gt;

&lt;p&gt;Step 4:&lt;br&gt;
Create a connection profile between the on-prem network and the Azure hub network, and vice versa(bidirectional), and check the connection status&lt;/p&gt;

&lt;p&gt;Need to establish the connection from the hub to the on-prem network, as shown in the screenshot below. Repeat the same step for on-prem to hub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8zoyzx6y0byy0zcxfde.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8zoyzx6y0byy0zcxfde.png" alt="Image description" width="746" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhr4pwjrs0otfrm4p0tpr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhr4pwjrs0otfrm4p0tpr.png" alt="Image description" width="742" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please keep in mind that when you create a connection between the on-prem network and the hub, you need to set a shared key. Just enter a combination of letters and numbers. You’ll also need to use the same value when creating the connection on the other side.&lt;/p&gt;

&lt;p&gt;As you can see in the screenshot below, the connection has been successfully established between both networks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxknpxdw0j3m97c0ccg3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxknpxdw0j3m97c0ccg3i.png" alt="Image description" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7w1ka4x430k4yaekclbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7w1ka4x430k4yaekclbf.png" alt="Image description" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is we are going to create a Jump host in the spoke VNet to check the connection.&lt;/p&gt;

&lt;p&gt;Click the link below to complete the remaining setup&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/rajeshwaranm/site-to-site-vpn-check-the-connection-using-the-jump-host-4h27"&gt;https://dev.to/rajeshwaranm/site-to-site-vpn-check-the-connection-using-the-jump-host-4h27&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>vpn</category>
    </item>
  </channel>
</rss>
