<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz" -->

---
title: Building a DMVPN Test Lab with netlab « ipSpace.net blog
description: A walkthrough of building a DMVPN test lab using netlab, contributed by Anne Baretta. The solution leverages netlab's tunnel interface support (added in...
canonical: https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building a DMVPN Test Lab with netlab « ipSpace.net blog | daily.dev
og:description: A walkthrough of building a DMVPN test lab using netlab, contributed by Anne Baretta. The solution leverages netlab's tunnel interface support (added in...
og:url: https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz
og:image: https://api.daily.dev/og/posts/U7qcOcTjz.png
og:image:alt: Building a DMVPN Test Lab with netlab « ipSpace.net blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a DMVPN Test Lab with netlab « ipSpace.net blog

**[ipSpace.net Blog](https://daily.dev/sources/ipspace)** · 3 min read · 0 upvotes · 0 comments

## Summary

A walkthrough of building a DMVPN test lab using netlab, contributed by Anne Baretta. The solution leverages netlab's tunnel interface support (added in release 1.5.2), custom node attributes for DMVPN parameters (NHRP and IPsec keys), and hierarchical group definitions to separate hub and spoke configurations. Jinja2 templates handle per-device tunnel configuration, iterating over tunnel interfaces and neighbors to set NHRP authentication, NHS addresses, and tunnel destinations. The full example is available on GitHub.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.ipspace.net/2023/05/netlab-dmvpn>

## Questions this post answers

### How do I define custom node attributes in netlab 1.5.0 and later?

Starting with netlab 1.5.0, custom node attributes must be declared under system defaults. For example, to add a dictionary attribute called 'dmvpn', add 'defaults.attributes.node.dmvpn: dict' to your topology file. You can optionally define the internal key structure for stricter validation instead of just specifying the type.

_Network engineers building netlab topologies track attribute changes like these on daily.dev._

### How do I create tunnel interfaces in a netlab topology file?

Use 'type: tunnel' on a link definition in your topology's links section, then specify the members and a prefix. Netlab will create tunnel interfaces on each node with IP addressing and supported parameters like OSPF routing. Tunnel-specific parameters such as NHRP or IPsec settings must be applied via custom Jinja2 configuration templates.

_Teams automating network labs with netlab find relevant examples and release notes on daily.dev._

---

Tags: [#networking](https://daily.dev/tags/networking)

[View this post on daily.dev](https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building a DMVPN Test Lab with netlab « ipSpace.net blog","url":"https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz"},"datePublished":"2026-08-11T08:56:17.926Z","dateModified":"2026-08-11T09:33:05.660Z","description":"A walkthrough of building a DMVPN test lab using netlab, contributed by Anne Baretta. The solution leverages netlab's tunnel interface support (added in...","image":"https://media.daily.dev/image/upload/s--ZrL_HSsR--/f_auto/v1722860399/public/Placeholder%2006","thumbnailUrl":"https://media.daily.dev/image/upload/s--ZrL_HSsR--/f_auto/v1722860399/public/Placeholder%2006","isAccessibleForFree":true,"articleSection":"ipSpace.net Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ipSpace.net Blog","logo":"https://media.daily.dev/image/upload/s--xS7E82MT--/f_auto,q_auto/v1786438303/logos/ipspace?_a=BAMAMicg0","url":"https://daily.dev/sources/ipspace"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"networking","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ipSpace.net Blog","item":"https://daily.dev/sources/ipspace"},{"@type":"ListItem","position":3,"name":"Building a DMVPN Test Lab with netlab « ipSpace.net blog"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/building-a-dmvpn-test-lab-with-netlab-ipspace-net-blog-u7qcoctjz#faq","mainEntity":[{"@type":"Question","name":"How do I define custom node attributes in netlab 1.5.0 and later?","acceptedAnswer":{"@type":"Answer","text":"Starting with netlab 1.5.0, custom node attributes must be declared under system defaults. For example, to add a dictionary attribute called 'dmvpn', add 'defaults.attributes.node.dmvpn: dict' to your topology file. You can optionally define the internal key structure for stricter validation instead of just specifying the type. Network engineers building netlab topologies track attribute changes like these on daily.dev."}},{"@type":"Question","name":"How do I create tunnel interfaces in a netlab topology file?","acceptedAnswer":{"@type":"Answer","text":"Use 'type: tunnel' on a link definition in your topology's links section, then specify the members and a prefix. Netlab will create tunnel interfaces on each node with IP addressing and supported parameters like OSPF routing. Tunnel-specific parameters such as NHRP or IPsec settings must be applied via custom Jinja2 configuration templates. Teams automating network labs with netlab find relevant examples and release notes on daily.dev."}}]}
```

