roll out (private) IPv6 on George Sand

This commit is contained in:
Yohaï-Eliel BERREBY 2020-08-01 17:48:39 +02:00
parent 361fd54414
commit 3a8112bf0d
7 changed files with 61 additions and 18 deletions

View file

@ -50,8 +50,8 @@ dns_host_suffix_backup: 153
backup_dns_servers: backup_dns_servers:
- "80.67.169.12" # French Data Network (FDN) (ns0.fdn.fr) - "80.67.169.12" # French Data Network (FDN) (ns0.fdn.fr)
# Misc # Finally raised!
mtu: 1400 mtu: 1500
subnet_ids: subnet_ids:
ap: "14{{ apartment_block_id }}" ap: "14{{ apartment_block_id }}"

View file

@ -10,6 +10,8 @@
dest: /etc/radvd.conf dest: /etc/radvd.conf
mode: 0644 mode: 0644
notify: restart radvd notify: restart radvd
tags:
- radconf
- name: Install radvd - name: Install radvd
apt: apt:

View file

@ -39,7 +39,7 @@ interface ens20 {
MaxRtrAdvInterval 30; MaxRtrAdvInterval 30;
AdvRASrcAddress { AdvRASrcAddress {
{{{ ipv6_base_prefix }}:{{ subnet_ids.users_wired }}::0:{{ router_ip_suffix }}; fe80::1;
}; };
prefix {{ ipv6_base_prefix }}:{{ subnet_ids.users_wired }}::/64 { prefix {{ ipv6_base_prefix }}:{{ subnet_ids.users_wired }}::/64 {
@ -63,7 +63,7 @@ interface ens21 {
MaxRtrAdvInterval 30; MaxRtrAdvInterval 30;
AdvRASrcAddress { AdvRASrcAddress {
{{{ ipv6_base_prefix }}:{{ subnet_ids.users_wifi }}::0:{{ router_ip_suffix }}; fe80::1;
}; };
prefix {{ ipv6_base_prefix }}:{{ subnet_ids.users_wifi }}::/64 { prefix {{ ipv6_base_prefix }}:{{ subnet_ids.users_wifi }}::/64 {

View file

@ -8,7 +8,7 @@
- name: Enable IPv6 packet forwarding - name: Enable IPv6 packet forwarding
ansible.posix.sysctl: ansible.posix.sysctl:
name: net.ipv6.ip_forward name: net.ipv6.conf.all.forwarding
value: '1' value: '1'
sysctl_set: yes sysctl_set: yes

View file

@ -24,8 +24,8 @@
### Give me a role ### Give me a role
# routeur4 = routeur IPv4 # previously: routeur4 = routeur IPv4
role = ['routeur4', 'routeur6'] role = ['routeur']
### Specify each interface role ### Specify each interface role

View file

@ -7,7 +7,7 @@ global_defs {
} }
vrrp_instance VI_ROUT_{{ apartment_block }} { vrrp_instance VI_ROUT_{{ apartment_block }}_IPv4 {
{% if 'backup' in inventory_hostname %} {% if 'backup' in inventory_hostname %}
state BACKUP state BACKUP
priority 100 priority 100
@ -21,7 +21,7 @@ vrrp_instance VI_ROUT_{{ apartment_block }} {
interface ens18 interface ens18
# Shared by MASTER and BACKUP # Shared by MASTER and BACKUP
virtual_router_id {{ apartment_block_id }} virtual_router_id 4{{ apartment_block_id }}
# Timeout in seconds before failover kicks in. # Timeout in seconds before failover kicks in.
advert_int 2 advert_int 2
@ -37,7 +37,6 @@ vrrp_instance VI_ROUT_{{ apartment_block }} {
virtual_ipaddress { virtual_ipaddress {
# Routing subnet # Routing subnet
10.129.{{ apartment_block_id }}.254/16 brd 10.129.255.255 dev ens19 scope global 10.129.{{ apartment_block_id }}.254/16 brd 10.129.255.255 dev ens19 scope global
{{ ipv6_base_prefix }}:129:0::{{ apartment_block_id }}:254/64 dev ens19 scope global
# NATed subnet: wired # NATed subnet: wired
@ -48,21 +47,63 @@ vrrp_instance VI_ROUT_{{ apartment_block }} {
# Wired # Wired
10.{{ subnet_ids.users_wired }}.0.254/16 brd 10.{{ subnet_ids.users_wired }}.255.255 dev ens20 scope global 10.{{ subnet_ids.users_wired }}.0.254/16 brd 10.{{ subnet_ids.users_wired }}.255.255 dev ens20 scope global
{{ ipv6_base_prefix }}:{{ subnet_ids.users_wired }}::0:254/64 dev ens20 scope global
# Wifi # Wifi
10.{{ subnet_ids.users_wifi }}.0.254/16 brd 10.{{ subnet_ids.users_wifi }}.255.255 dev ens21 scope global 10.{{ subnet_ids.users_wifi }}.0.254/16 brd 10.{{ subnet_ids.users_wifi }}.255.255 dev ens21 scope global
{{ ipv6_base_prefix }}:{{ subnet_ids.users_wifi }}::0:254/64 dev ens21 scope global
} }
# FIXME: update for IPv6
virtual_routes { virtual_routes {
# 10.129.0.1 is Yggdrasil # 10.129.0.1 is Yggdrasil
src 10.129.{{ apartment_block_id }}.254 to 0.0.0.0/0 via 10.129.0.1 dev ens19 src 10.129.{{ apartment_block_id }}.254 to 0.0.0.0/0 via 10.129.0.1 dev ens19
# For IPv6, the master router is routeur-aurore, NOT yggdrasil,
# because yggdrasil doesn't support BGPv6 announcements.
src {{ ipv6_base_prefix }}:129::{{ apartment_block_id }}:254 to ::/0 via {{ ipv6_base_prefix }}:129::0:1 dev ens19
} }
} }
vrrp_instance VI_ROUT_{{ apartment_block }}_IPv6 {
{% if 'backup' in inventory_hostname %}
state BACKUP
priority 100
{% else %}
state MASTER
priority 150
{% endif %}
# Interface used for VRRP communication.
interface ens18
# Shared by MASTER and BACKUP
virtual_router_id 6{{ apartment_block_id }}
# Timeout in seconds before failover kicks in.
advert_int 2
# Used to authenticate VRRP communication between master and backup.
authentication {
auth_type PASS
auth_pass {{ keepalived_password }}
}
smtp_alert
virtual_ipaddress {
# Routing subnet
fe80::1/64 dev ens19 scope global
{{ ipv6_base_prefix }}:129::{{ apartment_block_id }}:254/64 dev ens19 scope global
# Wired
fe80::1/64 dev ens20 scope global
# Wifi
fe80::1/64 dev ens21 scope global
}
virtual_routes {
# For IPv6, the master router is routeur-aurore, NOT yggdrasil,
# because yggdrasil doesn't support BGPv6 announcements.
src {{ ipv6_base_prefix }}:129::{{ apartment_block_id }}:254 to ::/0 via {{ ipv6_base_prefix }}:129::0:254 dev ens19
}
}

View file

@ -36,7 +36,7 @@ server:
access-control: 10.{{ subnet_ids.ap }}.0.0/16 allow access-control: 10.{{ subnet_ids.ap }}.0.0/16 allow
access-control: 10.{{ subnet_ids.users_wired }}.0.0/16 allow access-control: 10.{{ subnet_ids.users_wired }}.0.0/16 allow
access-control: 10.{{ subnet_ids.users_wifi }}.0.0/16 allow access-control: 10.{{ subnet_ids.users_wifi }}.0.0/16 allow
access-control: {{ ipv6_base_prefix }}::/32 # Fuck it... :) access-control: {{ ipv6_base_prefix }}::/32 allow # Fuck it... :)
num-threads: {{ ansible_processor_vcpus }} num-threads: {{ ansible_processor_vcpus }}