diff --git a/lib/refrepo/gen/puppet/bindg5k.rb b/lib/refrepo/gen/puppet/bindg5k.rb
index d1ca04e1270640a1105bc3685c77e6bfa0b186c5..e0fd118294b28c301a16639ce3a52e5a197736fa 100644
--- a/lib/refrepo/gen/puppet/bindg5k.rb
+++ b/lib/refrepo/gen/puppet/bindg5k.rb
@@ -207,7 +207,6 @@ def get_node_records(cluster_uid, node_uid, network_adapters)
   records = []
 
   network_adapters.each { |net_uid, net_hash|
-
     next unless net_hash['ip'] || net_hash['ip6']
 
     node_id = node_uid.to_s.split(/(\d+)/)[1].to_i # node number
@@ -218,6 +217,12 @@ def get_node_records(cluster_uid, node_uid, network_adapters)
       new_record.label = "#{cluster_uid}-#{node_id}"
       new_record.label += "-#{net_uid}" unless net_hash['mounted'] && /^eth[0-9]$/.match(net_uid)
       records << new_record
+      if /^eth[0-9]$/.match(net_uid)
+        cname_record = DNS::Zone::RR::CNAME.new
+        cname_record.label = "#{cluster_uid}-#{node_id}-#{net_hash['pname']}"
+        cname_record.domainname = "#{cluster_uid}-#{node_id}-#{net_uid}"
+        records << cname_record
+      end
     end
     if net_hash['ip6']
       new_record_ipv6 = DNS::Zone::RR::AAAA.new
@@ -226,6 +231,12 @@ def get_node_records(cluster_uid, node_uid, network_adapters)
       new_record_ipv6.label += "-#{net_uid}" unless net_hash['mounted'] && /^eth[0-9]$/.match(net_uid)
       new_record_ipv6.label += '-ipv6'
       records << new_record_ipv6
+      if /^eth[0-9]$/.match(net_uid)
+        cname_record_ipv6 = DNS::Zone::RR::CNAME.new
+        cname_record_ipv6.label = "#{cluster_uid}-#{node_id}-#{net_hash['pname']}-ipv6"
+        cname_record_ipv6.domainname = "#{cluster_uid}-#{node_id}-#{net_uid}-ipv6"
+        records << cname_record_ipv6
+      end
     end
 
     if net_hash['mounted'] && /^eth[0-9]$/.match(net_uid)
@@ -268,6 +279,10 @@ def get_node_kavlan_records(_cluster_uid, node_uid, network_adapters, kavlan_ada
       new_record.address = net_hash['ip']
       new_record.label = "#{node_uid}-#{net_uid}" #sol-23-eth0-kavlan-1
       records << new_record
+      cname_record = DNS::Zone::RR::CNAME.new
+      cname_record.label = "#{node_uid}-#{net_hash['pname']}"
+      cname_record.domainname = "#{node_uid}-#{net_uid}" #sol-23-eno1-kavlan-1
+      records << cname_record
     end
     if net_hash['ip6']
       new_record_ipv6 = DNS::Zone::RR::AAAA.new
@@ -275,6 +290,10 @@ def get_node_kavlan_records(_cluster_uid, node_uid, network_adapters, kavlan_ada
       new_record_ipv6.label = "#{node_uid}-#{net_uid}" #sol-23-eth0-kavlan-1
       new_record_ipv6.label += '-ipv6'
       records << new_record_ipv6
+      cname_record_ipv6 = DNS::Zone::RR::CNAME.new
+      cname_record_ipv6.label = "#{node_uid}-#{net_hash['pname']}-ipv6"
+      cname_record_ipv6.domainname = "#{node_uid}-#{net_uid}-ipv6" #sol-23-eno1-kavlan-1
+      records << cname_record_ipv6
     end
 
     # CNAME only for primary interface kavlan
@@ -548,7 +567,13 @@ def generate_puppet_bindg5k(options)
 
         # Nodes
         node.fetch('network_adapters').each { |net|
-          network_adapters[net['device']] = {"ip" => net["ip"], "ip6" => net["ip6"], "mounted" => net["mounted"], 'alias' => net['alias']}
+          network_adapters[net['device']] = {
+            "ip"      => net["ip"],
+            "ip6"     => net["ip6"],
+            "mounted" => net["mounted"],
+            'alias'   => net['alias'],
+            'pname'   => net['name'],
+          }
         }
 
         # Mic
@@ -569,6 +594,9 @@ def generate_puppet_bindg5k(options)
                 kavlan_adapters["#{net_uid}-#{kavlan_net_uid}"]['mounted'] = node['network_adapters'].select { |n|
                   n['device'] == net_uid
                 }[0]['mounted']
+                kavlan_adapters["#{net_uid}-#{kavlan_net_uid}"]['pname'] = node['network_adapters'].select { |n|
+                  n['device'] == net_uid
+                }.first['name'] + '-' + kavlan_net_uid
                 if kavlan_kind == 'kavlan6'
                   kavlan_adapters["#{net_uid}-#{kavlan_net_uid}"]['ip6'] = ip
                 else