summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-07-10 19:58:15 +0200
committerAhmed Abdelhalim <[email protected]>2026-07-12 22:05:17 +0200
commit066c71e7863dbcf14322c36cbea649778601f7de (patch)
tree81111c57d6ca3647f31a974541cb7c67d481bba6
parentafc6aab3497d086ee8c7f00db0336a17212c56c9 (diff)
Configure preference of ip family (ipv4 > ipv6)
-rw-r--r--host_vars/desktop.local.ymlbin892 -> 918 bytes
-rw-r--r--host_vars/desktop.local.yml.example1
-rw-r--r--host_vars/laptop.local.ymlbin937 -> 963 bytes
-rw-r--r--host_vars/laptop.local.yml.example1
-rw-r--r--host_vars/macbook.local.ymlbin1258 -> 1284 bytes
-rw-r--r--host_vars/macbook.local.yml.example1
-rw-r--r--host_vars/pve.local.ymlbin466 -> 492 bytes
-rw-r--r--host_vars/pve.local.yml.example1
-rw-r--r--host_vars/rpi5.local.ymlbin3602 -> 3629 bytes
-rw-r--r--host_vars/rpi5.local.yml.example1
-rw-r--r--roles/network/defaults/main.yml1
-rw-r--r--roles/network/tasks/main.yml9
-rw-r--r--roles/network/templates/gai.conf.j210
13 files changed, 25 insertions, 0 deletions
diff --git a/host_vars/desktop.local.yml b/host_vars/desktop.local.yml
index 53939d8a..d0f802ae 100644
--- a/host_vars/desktop.local.yml
+++ b/host_vars/desktop.local.yml
Binary files differ
diff --git a/host_vars/desktop.local.yml.example b/host_vars/desktop.local.yml.example
index d24dcff2..c8dd0be1 100644
--- a/host_vars/desktop.local.yml.example
+++ b/host_vars/desktop.local.yml.example
@@ -3,6 +3,7 @@
network_ipv4_address: "10.0.0.201"
network_ipv4_gateway: "10.0.0.254"
network_ipv4_dns: "10.0.0.254"
+network_prefer_ipv4: true
# Discover network_ipv6_gateway with: ip -6 route show default | grep ra (run on any device before disabling router RA)
# network_ipv6_gateway: "fe80::0000:1111:2222:3333"
diff --git a/host_vars/laptop.local.yml b/host_vars/laptop.local.yml
index 21e21e28..9c4c8798 100644
--- a/host_vars/laptop.local.yml
+++ b/host_vars/laptop.local.yml
Binary files differ
diff --git a/host_vars/laptop.local.yml.example b/host_vars/laptop.local.yml.example
index ba9536da..726fc4b1 100644
--- a/host_vars/laptop.local.yml.example
+++ b/host_vars/laptop.local.yml.example
@@ -3,6 +3,7 @@
network_ipv4_address: "10.0.0.202"
network_ipv4_gateway: "10.0.0.1"
network_ipv4_dns: "10.0.0.1"
+network_prefer_ipv4: true
# Discover network_ipv6_gateway with: ip -6 route show default | grep ra (run on any device before disabling router RA)
# network_ipv6_gateway: "fe80::0000:1111:2222:3333"
diff --git a/host_vars/macbook.local.yml b/host_vars/macbook.local.yml
index b9a4e517..5ad4be8b 100644
--- a/host_vars/macbook.local.yml
+++ b/host_vars/macbook.local.yml
Binary files differ
diff --git a/host_vars/macbook.local.yml.example b/host_vars/macbook.local.yml.example
index c20ce1da..a4f87605 100644
--- a/host_vars/macbook.local.yml.example
+++ b/host_vars/macbook.local.yml.example
@@ -3,6 +3,7 @@
network_ipv4_address: "10.0.0.203"
network_ipv4_gateway: "10.0.0.254"
network_ipv4_dns: "10.0.0.254"
+network_prefer_ipv4: true
# Discover network_ipv6_gateway with: ip -6 route show default | grep ra (run on any device before disabling router RA)
# network_ipv6_gateway: "fe80::0000:1111:2222:3333"
diff --git a/host_vars/pve.local.yml b/host_vars/pve.local.yml
index 8f2a6a54..90730264 100644
--- a/host_vars/pve.local.yml
+++ b/host_vars/pve.local.yml
Binary files differ
diff --git a/host_vars/pve.local.yml.example b/host_vars/pve.local.yml.example
index 60b6060c..07a002a3 100644
--- a/host_vars/pve.local.yml.example
+++ b/host_vars/pve.local.yml.example
@@ -5,6 +5,7 @@ network_wifi_pass: ""
network_ipv4_address: "10.0.0.253"
network_ipv4_gateway: "10.0.0.254"
network_ipv4_dns: "10.0.0.254"
+network_prefer_ipv4: true
network_bridge_interface: "eth0"
# Discover network_ipv6_gateway with: ip -6 route show default | grep ra (run on any device before disabling router RA)
# network_ipv6_gateway: "fe80::0000:1111:2222:3333"
diff --git a/host_vars/rpi5.local.yml b/host_vars/rpi5.local.yml
index 27388c7d..83025ca6 100644
--- a/host_vars/rpi5.local.yml
+++ b/host_vars/rpi5.local.yml
Binary files differ
diff --git a/host_vars/rpi5.local.yml.example b/host_vars/rpi5.local.yml.example
index 281bc3a3..d528e4a5 100644
--- a/host_vars/rpi5.local.yml.example
+++ b/host_vars/rpi5.local.yml.example
@@ -2,6 +2,7 @@
network_interface: "eth0"
network_ipv4_address: "10.0.0.254"
network_ipv4_gateway: "10.0.0.1"
+network_prefer_ipv4: false
# Discover network_ipv6_gateway with: ip -6 route show default | grep ra (run on any device before disabling router RA)
# network_ipv6_gateway: "fe80::0000:1111:2222:3333"
diff --git a/roles/network/defaults/main.yml b/roles/network/defaults/main.yml
index 5e1076a7..9497f83f 100644
--- a/roles/network/defaults/main.yml
+++ b/roles/network/defaults/main.yml
@@ -1,3 +1,4 @@
---
network_wifi_ssid: ""
network_wifi_pass: ""
+network_prefer_ipv4: false
diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml
index 3bd85040..f8873379 100644
--- a/roles/network/tasks/main.yml
+++ b/roles/network/tasks/main.yml
@@ -59,6 +59,15 @@
changed_when: false
when: network_wifi_ssid != ""
+- name: "Configure address family preference"
+ become: true
+ ansible.builtin.template:
+ src: "gai.conf.j2"
+ dest: "/etc/gai.conf"
+ owner: "root"
+ group: "root"
+ mode: "0644"
+
- name: "Configure NetworkManager"
become: true
notify:
diff --git a/roles/network/templates/gai.conf.j2 b/roles/network/templates/gai.conf.j2
new file mode 100644
index 00000000..21c17332
--- /dev/null
+++ b/roles/network/templates/gai.conf.j2
@@ -0,0 +1,10 @@
+# Managed by Ansible — controls getaddrinfo address family preference
+{% if network_prefer_ipv4 %}
+precedence ::ffff:0:0/96 100
+{% else %}
+precedence ::1/128 50
+precedence ::/0 40
+precedence 2002::/16 30
+precedence ::/96 20
+precedence ::ffff:0:0/96 10
+{% endif %}