diff --git a/roles/network/defaults/main.yml b/roles/network/defaults/main.yml index 4c42380cd..d405a43c9 100644 --- a/roles/network/defaults/main.yml +++ b/roles/network/defaults/main.yml @@ -53,5 +53,5 @@ dhcpd_enabled: True named_install: True named_enabled: True dnsmasq_install: True -dnsmasq_enabled: True +dnsmasq_enabled: False captive_portal_enabled: False diff --git a/roles/network/tasks/hostapd.yml b/roles/network/tasks/hostapd.yml index 6b56a675c..2d6953613 100644 --- a/roles/network/tasks/hostapd.yml +++ b/roles/network/tasks/hostapd.yml @@ -6,10 +6,9 @@ mode=0644 when: iiab_wireless_lan_iface != "none" -- name: Disable the Access Point hostapd program +- name: Disable the Access Point Hostapd program service: enabled=no name=hostapd.service - state=stopped when: iiab_wireless_lan_iface == "none" or iiab_network_mode == "Appliance" or not hostapd_enabled - name: Use custom systemd unit file to start hostapd @@ -19,26 +18,7 @@ group=root mode=0644 -- name: Ask systemd to reread the unit files for hostapd - shell: systemctl daemon-reload - -- name: Enable the Access Point hostapd program +- name: Enable the Access Point Hostapd program service: enabled=yes name=hostapd.service - state=restarted when: iiab_wireless_lan_iface != "none" and iiab_network_mode != "Appliance" and hostapd_enabled - -- name: Checking if slave is active waiting 10 seconds - shell: "sleep {{ hostapd_wait }} | brctl show | grep {{ iiab_wireless_lan_iface }}" - ignore_errors: True - changed_when: False - register: wifi_slave - when: iiab_lan_iface == "br0" and iiab_wireless_lan_iface != "none" - -- name: Restart hostapd if slave is inactive - service: name=hostapd.service - state=restarted - when: is_debuntu and iiab_lan_iface == "br0" and item|trim == "" - with_items: - - "{{ wifi_slave.stdout }}" - ignore_errors: true diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml index 39d48bcdf..4304f37b7 100644 --- a/roles/network/tasks/main.yml +++ b/roles/network/tasks/main.yml @@ -109,23 +109,17 @@ tags: - network -- include: ifcfg_mods.yml +- include: hostapd.yml + tags: + - network + +- include: ifcfg_mods.yml + when: not is_debuntu and not installing tags: - network - when: is_redhat and not installing - include: debian.yml - tags: - - network - when: is_debuntu and not is_rpi and not installing - -- include: rpi_debian.yml - tags: - - network - when: is_debuntu and is_rpi and not installing - -- include: hostapd.yml - when: not installing + when: is_debuntu and not installing tags: - network diff --git a/roles/network/tasks/restart.yml b/roles/network/tasks/restart.yml index 5619721c7..62661b19e 100644 --- a/roles/network/tasks/restart.yml +++ b/roles/network/tasks/restart.yml @@ -40,3 +40,18 @@ - name: Run iptables command: /usr/bin/iiab-gen-iptables + +- name: Checking if slave is active waiting 10 seconds + shell: "sleep {{ hostapd_wait }} | brctl show | grep {{ iiab_wireless_lan_iface }}" + ignore_errors: True + changed_when: False + register: wifi_slave + when: iiab_lan_iface == "br0" and iiab_wireless_lan_iface != "none" + +- name: Restart hostapd if slave is inactive + service: name=hostapd.service + state=restarted + when: iiab_lan_iface == "br0" and item|trim == "" + with_items: + - "{{ wifi_slave.stdout }}" + ignore_errors: true diff --git a/roles/network/templates/network/dhcpcd.conf b/roles/network/templates/network/dhcpcd.conf index 1db23cae6..a9eaf1c08 100644 --- a/roles/network/templates/network/dhcpcd.conf +++ b/roles/network/templates/network/dhcpcd.conf @@ -37,16 +37,21 @@ require dhcp_server_identifier # Generate Stable Private IPv6 Addresses instead of hardware based ones slaac private -# don't let dhcpcd mess with IIAB LAN -denyinterfaces br0 wlan0 +# IIAB +denyinterfaces {% if iiab_wireless_lan_iface != "none" %} {{ iiab_wireless_lan_iface }} {% endif %} {% if discovered_lan_iface != "none" %} {{ discovered_lan_iface }} {% endif %} {% if iiab_lan_iface != "br0" %} {{ iiab_lan_iface }} {% endif %} -# Example static IP configuration: -{% if gui_static_wan == true %} -interface {{ discovered_wan_iface }} -# strange that dhcpcd does not have a netmask option -- hardcode it FIXME -static ip_address={{ gui_static_wan_ip }}/24 -static routers={{ gui_static_wan_gateway }} -domain_name_servers= {{ gui_static_wan_nameserver }} +{% if dhcpcd_result == "enabled" and iiab_lan_iface == "br0" %} +interface {{ iiab_lan_iface }} +static ip_address={{ lan_ip }}/19 +static domain_name_servers=127.0.0.1 +{% endif %} + +# IIAB static IP configuration: +{% if wan_ip != dhcp %} +interface {{ iiab_wan_iface }} +static ip_address={{ wan_ip }}/24 +static routers={{ wan_gateway }} +domain_name_servers= {{ wan_nameserver }} {% endif %} # It is possible to fall back to a static IP if DHCP fails: diff --git a/roles/network/templates/network/dhcpcd.conf.j2 b/roles/network/templates/network/dhcpcd.conf.j2 new file mode 100644 index 000000000..4a598574e --- /dev/null +++ b/roles/network/templates/network/dhcpcd.conf.j2 @@ -0,0 +1,50 @@ +# Supplied by IIAB +# A sample configuration for dhcpcd. +# See dhcpcd.conf(5) for details. + +# Allow users of this group to interact with dhcpcd via the control socket. +#controlgroup wheel + +# Inform the DHCP server of our hostname for DDNS. +hostname + +# Use the hardware address of the interface for the Client ID. +clientid +# or +# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361. +# Some non-RFC compliant DHCP servers do not reply with this set. +# In this case, comment out duid and enable clientid above. +#duid + +# Persist interface configuration when dhcpcd exits. +persistent + +# Rapid commit support. +# Safe to enable by default because it requires the equivalent option set +# on the server to actually work. +option rapid_commit + +# A list of options to request from the DHCP server. +option domain_name_servers, domain_name, domain_search, host_name +option classless_static_routes +# Most distributions have NTP support. +option ntp_servers +# Respect the network MTU. This is applied to DHCP routes. +option interface_mtu + +# A ServerID is required by RFC2131. +require dhcp_server_identifier + +# Generate Stable Private IPv6 Addresses instead of hardware based ones +slaac private + +# supplied by IIAB + +denyinterfaces {% if gui_static_wan == true %} {{ iiab_wan_iface }} {% endif %} {% if iiab_wireless_lan_iface != "none" %} {{ iiab_wireless_lan_iface }} {% endif %} {% if discovered_lan_iface != "none" %} {{ discovered_lan_iface }} {% endif %} + +{% if dhcpcd_result == "enabled" and iiab_lan_iface == "br0" %} +interface {{ iiab_lan_iface }} +static ip_address={{ lan_ip }}/19 +static routers={{ lan_ip }} +static domain_name_servers={{ lan_ip }} +{% endif %} diff --git a/roles/network/templates/network/systemd.j2 b/roles/network/templates/network/systemd.j2 index 271a96e7a..f5d0816a2 100644 --- a/roles/network/templates/network/systemd.j2 +++ b/roles/network/templates/network/systemd.j2 @@ -1,42 +1,53 @@ +# iiab_network_mode is {{ iiab_network_mode }} +# gui_desired_network_role is {{ gui_desired_network_role }} + {% if iiab_network_mode != "Appliance" %} ################# LANCONTROLLER ################### auto br0 +{% if dhcpcd_result == "enabled" %} +iface br0 inet manual +{% else %} iface br0 inet static - bridge_ports {% if iiab_wireless_lan_iface != "none" %} {{ iiab_wireless_lan_iface }} {% endif %} {% if discovered_lan_iface != "none" %} {{ discovered_lan_iface }} {% endif %} - +{% endif %} +{% if discovered_lan_iface != "none" %} + bridge_ports {{ discovered_lan_iface }} +{% endif %} bridge_maxwait 0 +{% if dhcpcd_result != "enabled" %} address {{ lan_ip }} netmask {{ lan_netmask }} - {% if iiab_network_mode == "Gateway" %} - gateway {{ lan_ip }} - {% endif %} - dns-nameservers {{ lan_ip }} +{% endif %} + dns-nameservers 127.0.0.1 dns-search {{ iiab_domain }} {% endif %} {# end LANCONTROLLER #} {% if iiab_network_mode != "LanController" %} ################# GATEWAY or APPLIANCE ######################### +# start dhcp clients {% if dhcpcd_result == "enabled" or wan_in_interfaces == "true" %} # client or user defined {% endif %} - {% if dhcpcd_result == "enabled" and is_rpi == "true" %} #cover rpi +#auto {{ iiab_wan_iface }} +#iface {{ iiab_wan_iface }} inet manual +{% endif %} +{% if dhcpcd_result != "enabled" and wan_in_interfaces == "false" %} +#cover butt auto {{ iiab_wan_iface }} -iface {{ iiab_wan_iface }} inet manual -{% else %} # gui_static_wan_ip is set -iface {{ iiab_wan_iface }} inet manual -{% endif %} {# end of dhcp_wan #} - -{% if wan_ip != "dhcp" %} +iface {{ iiab_wan_iface }} inet dhcp +{% endif %} +# end dhcp clients +# static wan +{% if wan_ip != "dhcp" and dhcpcd_result != "enabled" and wan_in_interfaces == "false" %} auto {{ iiab_wan_iface }} iface {{ iiab_wan_iface }} inet static address {{ wan_ip }} netmask {{ wan_netmask }} gateway {{ wan_gateway }} - dns-nameservers {{ wan_nameserver }} + dns-nameservers 127.0.0.1 {{ wan_nameserver }} dns-search {{ iiab_domain }} - {% endif %} {% endif %} {# end of static_wan #} -{# end of iiab_network_mode != LanController #} + +{% endif %} {# end of iiab_network_mode != LanController #}