diff --git a/roles/backbone-babel/tasks/main.yml b/roles/backbone-babel/tasks/main.yml
index 00bb123f758825389184790f92e1ab128c01f0c4..f94ec04d1d1a9385cddaa516e0c21829bb403b76 100644
--- a/roles/backbone-babel/tasks/main.yml
+++ b/roles/backbone-babel/tasks/main.yml
@@ -40,7 +40,17 @@
   ansible.builtin.include_tasks:
     file: loopback.yml
 
-- name: Get all lines in local machine
+- name: Create interface network config for peering interfaces
+  ansible.builtin.template:
+    src: peer.network.j2
+    dest: "/etc/systemd/network/bb-babel-{{ interface }}.network"
+  notify:
+    - reload systemd-networkd
+  loop: "{{ bb_babel_peer_interfaces|default([]) }}"
+  loop_control:
+    loop_var: interface
+
+- name: Get all wireguard lines in local machine
   ansible.builtin.set_fact:
     local_lines: "{{ bb_babel_wg_lines|dict2items|json_query(_query)|items2dict }}"
   vars:
@@ -61,4 +71,4 @@
     file: babeld.yml
   vars:
     # list remote line names for connections we are on either side (line_a or line_b) of
-    interfaces: "{{ bb_babel_wg_connections|selectattr('line_a', 'in', local_lines)|map(attribute='line_b') + bb_babel_wg_connections|selectattr('line_b', 'in', local_lines)|map(attribute='line_a') }}"
+    interfaces: "{{ bb_babel_wg_connections|selectattr('line_a', 'in', local_lines)|map(attribute='line_b') + bb_babel_wg_connections|selectattr('line_b', 'in', local_lines)|map(attribute='line_a') + bb_babel_peer_interfaces|default([]) }}"