diff options
| author | Ahmed Abdelhalim <[email protected]> | 2026-07-08 01:20:23 +0200 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2026-07-08 01:20:23 +0200 |
| commit | bf24bfa9368f496361dcebb6e26138358d4b4ddf (patch) | |
| tree | 548d6421659016173ba4c8d11146c17c66315fda | |
| parent | d3cb7d3f393a1a0088e2da57da500c93a0220459 (diff) | |
Revert 524d62e changes on gateway role
| -rw-r--r-- | roles/gateway/README.md | 21 | ||||
| -rw-r--r-- | roles/gateway/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/gateway/tasks/main.yml | 36 | ||||
| -rw-r--r-- | roles/gateway/templates/radvd.conf.j2 | 15 |
4 files changed, 5 insertions, 73 deletions
diff --git a/roles/gateway/README.md b/roles/gateway/README.md index d57ce6ff..cfbe49d3 100644 --- a/roles/gateway/README.md +++ b/roles/gateway/README.md @@ -23,28 +23,17 @@ IPv6 gateway is enabled by setting both `network_ipv6_address` and `gateway_loca ```yaml network_ipv6_address: "2a02:xxxx:xxxx:xxxx::254/64" # Pi's IPv6 address -gateway_local_ipv6_subnet: "2a02:xxxx:xxxx:xxxx::/64" # LAN IPv6 subnet (advertised via radvd) +gateway_local_ipv6_subnet: "2a02:xxxx:xxxx:xxxx::/64" # LAN IPv6 subnet ``` -When `network_ipv6_address` is defined, the role: -- Enables IPv6 forwarding (`net.ipv6.conf.all.forwarding=1`) -- Sets `accept_ra=2` on `gateway_router_interface` so Pi keeps receiving RAs from the router while forwarding -- Configures and starts `radvd` — Pi sends Router Advertisements to the LAN advertising itself as the IPv6 default gateway with `AdvDefaultPreference high` -- Announces Pi-hole (Pi's IPv6) as RDNSS so all devices use it for DNS over IPv6 - -This mirrors the IPv4 setup: all LAN devices (including phones) auto-configure Pi as their IPv6 gateway via SLAAC. No static configuration needed on clients. - -To disable IPv6 entirely, remove `network_ipv6_address` and `gateway_local_ipv6_subnet` from `host_vars`. The role will: -- Omit `accept_ra` sysctl -- Skip IPv6 iptables masquerade rules -- Stop and disable radvd, remove its config +To disable IPv6 entirely, remove both variables from `host_vars`. The role will: +- Omit `accept_ra` sysctl (no IPv6 interface key written) +- Skip IPv6 iptables masquerade rules (`gateway_local_ipv6_subnet` defaults to `""`) - Leave `net.ipv6.conf.all.forwarding=0` **Note:** `accept_ra` is set per-interface (`gateway_router_interface`) only when IPv6 is enabled. This prevents rogue RA acceptance on WireGuard and LAN interfaces. -**FritzBox:** Set RA priority to **Low** (Home Network → Network → IPv6 → Router advertisement → priority) so Pi's `high` priority RA wins. Pi becomes the sole IPv6 default gateway for all LAN devices. - ## Network Architecture ```txt @@ -81,7 +70,7 @@ Client Devices (192.168.1.0/24) ## Requirements - **WireGuard Interfaces**: Must follow `wg*` naming pattern (`wg0`, `wg-us1`, etc.) -- **Client Configuration**: IPv4 devices use Pi as gateway via Pi-hole DHCP; IPv6 devices auto-configure via radvd RAs +- **Client Configuration**: Devices must use Pi as default gateway (192.168.1.254) - **IP Forwarding**: Kernel IP forwarding must be enabled (`net.ipv4.ip_forward=1`) - **WireGuard Config**: Use default routing (`Table=auto` or unset, NOT `Table=off`) diff --git a/roles/gateway/handlers/main.yml b/roles/gateway/handlers/main.yml index 2220f965..35cc489c 100644 --- a/roles/gateway/handlers/main.yml +++ b/roles/gateway/handlers/main.yml @@ -15,9 +15,3 @@ ansible.builtin.command: cmd: "udevadm control --reload-rules" changed_when: false - -- name: "Restart radvd" - become: true - ansible.builtin.systemd_service: - name: "radvd.service" - state: "restarted" diff --git a/roles/gateway/tasks/main.yml b/roles/gateway/tasks/main.yml index 6684bb9a..661630f7 100644 --- a/roles/gateway/tasks/main.yml +++ b/roles/gateway/tasks/main.yml @@ -6,7 +6,6 @@ - "iptables" - "iproute2" - "udev" - - "radvd" state: "present" - name: "Configure IP forwarding" @@ -68,38 +67,3 @@ name: "gateway-init.service" enabled: "{{ gateway_enabled }}" daemon_reload: true - -- name: "Configure radvd for IPv6 gateway" - become: true - when: network_ipv6_address is defined - block: - - name: "Configure radvd" - ansible.builtin.template: - src: "radvd.conf.j2" - dest: "/etc/radvd.conf" - owner: "root" - group: "root" - mode: "0644" - notify: "Restart radvd" - - - name: "Enable radvd service" - ansible.builtin.systemd_service: - name: "radvd.service" - enabled: true - state: "started" - daemon_reload: true - -- name: "Disable radvd (no IPv6)" - become: true - when: network_ipv6_address is not defined - block: - - name: "Disable radvd service" - ansible.builtin.systemd_service: - name: "radvd.service" - enabled: false - state: "stopped" - - - name: "Remove radvd config" - ansible.builtin.file: - path: "/etc/radvd.conf" - state: "absent" diff --git a/roles/gateway/templates/radvd.conf.j2 b/roles/gateway/templates/radvd.conf.j2 deleted file mode 100644 index 9aac075d..00000000 --- a/roles/gateway/templates/radvd.conf.j2 +++ /dev/null @@ -1,15 +0,0 @@ -interface {{ gateway_router_interface }} { - AdvSendAdvert on; - AdvManagedFlag off; - AdvOtherConfigFlag on; - AdvDefaultPreference high; - - prefix {{ gateway_local_ipv6_subnet }} { - AdvOnLink on; - AdvAutonomous on; - AdvRouterAddr on; - }; - - RDNSS {{ network_ipv6_address.split('/')[0] }} { - }; -}; |
