diff --git a/tests/e2e/dualstack/Vagrantfile b/tests/e2e/dualstack/Vagrantfile
index 7c0f30f84bb017c9286aab4981c70708c8b53e1d..633729a800c9d8fc61227961e76d2877e5165110 100644
--- a/tests/e2e/dualstack/Vagrantfile
+++ b/tests/e2e/dualstack/Vagrantfile
@@ -16,6 +16,7 @@ def provision(vm, roles, role_num, node_num)
   vm.hostname = "#{roles[0]}-#{role_num}"
   node_ip4 = "#{NETWORK4_PREFIX}.#{100+node_num}"
   node_ip6 = "#{NETWORK6_PREFIX}::#{10+node_num}"
+  node_ip6_gw = "#{NETWORK6_PREFIX}::1"
   # Only works with libvirt, which allows IPv4 + IPv6 on a single network/interface
   vm.network "private_network", 
     :ip => node_ip4,
@@ -32,7 +33,7 @@ def provision(vm, roles, role_num, node_num)
   
   defaultOSConfigure(vm)
 
-  vm.provision "IPv6 Setup", type: "shell", path: scripts_location +"/ipv6.sh", args: [node_ip4, node_ip6, vm.box.to_s]
+  vm.provision "IPv6 Setup", type: "shell", path: scripts_location +"/ipv6.sh", args: [node_ip4, node_ip6, node_ip6_gw, vm.box.to_s]
   install_type = getInstallType(vm, RELEASE_VERSION, GITHUB_BRANCH)
 
   vm.provision "Ping Check", type: "shell", inline: "ping -c 2 k3s.io"
diff --git a/tests/e2e/dualstack/dualstack_test.go b/tests/e2e/dualstack/dualstack_test.go
index a03401046c50fa0c0f2eda5af15f4016f077a8bf..3908497fbb316f5747c0a0d92a313fafd076c111 100644
--- a/tests/e2e/dualstack/dualstack_test.go
+++ b/tests/e2e/dualstack/dualstack_test.go
@@ -117,7 +117,7 @@ var _ = Describe("Verify DualStack Configuration", Ordered, func() {
 		Expect(err).NotTo(HaveOccurred())
 		for _, node := range nodeIPs {
 			Expect(node.ipv4).Should(ContainSubstring("10.10.10"))
-			Expect(node.ipv6).Should(ContainSubstring("a11:decf:c0ff"))
+			Expect(node.ipv6).Should(ContainSubstring("fd11:decf:c0ff"))
 		}
 	})
 	It("Verifies that each pod has IPv4 and IPv6", func() {
@@ -125,7 +125,7 @@ var _ = Describe("Verify DualStack Configuration", Ordered, func() {
 		Expect(err).NotTo(HaveOccurred())
 		for _, pod := range podIPs {
 			Expect(pod.ipv4).Should(Or(ContainSubstring("10.10.10"), ContainSubstring("10.42.")), pod.name)
-			Expect(pod.ipv6).Should(Or(ContainSubstring("a11:decf:c0ff"), ContainSubstring("2001:cafe:42")), pod.name)
+			Expect(pod.ipv6).Should(Or(ContainSubstring("fd11:decf:c0ff"), ContainSubstring("2001:cafe:42")), pod.name)
 		}
 	})
 
diff --git a/tests/e2e/scripts/ipv6.sh b/tests/e2e/scripts/ipv6.sh
index 5dbf6b4c536f9e03396f3eac0c535d14a2533bc1..aa3fdd46ba855b49990a403fa83c14b9fda21ded 100644
--- a/tests/e2e/scripts/ipv6.sh
+++ b/tests/e2e/scripts/ipv6.sh
@@ -1,7 +1,8 @@
 #!/bin/bash
 ip4_addr=$1
 ip6_addr=$2
-os=$3
+ip6_addr_gw=$3
+os=$4
 
 sysctl -w net.ipv6.conf.all.disable_ipv6=0
 sysctl -w net.ipv6.conf.eth1.accept_dad=0
@@ -19,4 +20,5 @@ elif [ -z "${os##*alpine*}" ]; then
 else
   ip -6 addr add "$ip6_addr"/64 dev eth1
 fi
-ip addr show dev eth1
\ No newline at end of file
+ip addr show dev eth1
+ip -6 r add default via "$ip6_addr_gw"