Просмотр исходного кода

netif network configuration

netifs
Markus Katharina Brechtel 7 лет назад
Родитель
Сommit
118f0ba70d
1 измененных файлов: 117 добавлений и 0 удалений
  1. +117
    -0
      templates/network-interfaces.j2

+ 117
- 0
templates/network-interfaces.j2 Просмотреть файл

@@ -53,5 +53,122 @@ iface {{ netif.device }} inet6 {{ ipv6.method }}
{% endfor %}
{% endif %}

{% if netifs is defined %}
{% for netif in netifs %}
{% if netifs[netif].type == "ethernet" or netifs[netif].type == "virt" %}

### netif {{netif}}
{% set dev = netifs[netif].device | default( 'enx' + netifs[netif].mac | regex_replace(':') ) %}
auto {{dev}}

{% if netifs[netif].type == "virt" and hostvars[virt_host].netifs[netifs[netif].virt_host_netif].type == "virt_pointopoint" %}

# virt_pointopoint -> {{virt_host}} {{netifs[netif].virt_host_netif}}
{% set ips_ipv4 = netifs[netif] | json_query("ips[].ip") | ipv4("address") %}
{% set ips_ipv4_first = ips_ipv4 | first %}
{% set ips_ipv4 = ips_ipv4 | difference(ips_ipv4_first) %}
{% set virt_pointopoint_ips_ipv4 = hostvars[virt_host].netifs[netifs[netif].virt_host_netif] | json_query("ips[].ip") | ipv4("address") %}
{% set virt_pointopoint_ips_ipv4_first = virt_pointopoint_ips_ipv4 | first %}
{% set virt_pointopoint_ips_ipv4 = virt_pointopoint_ips_ipv4 | difference(virt_pointopoint_ips_ipv4_first) %}
{% set ips_ipv6 = netifs[netif] | json_query("ips[].ip") | ipv6("address") %}
{% set ips_ipv6_first = ips_ipv6 | first %}
{% set ips_ipv6 = ips_ipv6 | difference(ips_ipv6_first) %}
{% set virt_pointopoint_ips_ipv6 = hostvars[virt_host].netifs[netifs[netif].virt_host_netif] | json_query("ips[].ip") | ipv6("address") %}
{% set virt_pointopoint_ips_ipv6_first = virt_pointopoint_ips_ipv6 | first %}
{% set virt_pointopoint_ips_ipv6 = virt_pointopoint_ips_ipv6 | difference(virt_pointopoint_ips_ipv6_first) %}
iface {{ dev }} inet static
address {{ ips_ipv4_first }}
netmask 32
pointopoint {{ virt_pointopoint_ips_ipv4_first }}
gateway {{ virt_pointopoint_ips_ipv4_first }}
{% for ptpip in virt_pointopoint_ips_ipv4 %}
post-up /sbin/ip -family inet route add {{ ptpip }}/32 dev {{ dev }} via {{ virt_pointopoint_ips_ipv4_first }}
pre-down /sbin/ip -family inet route del {{ ptpip }}/32 dev {{ dev }} via {{ virt_pointopoint_ips_ipv4_first }}
{% endfor %}
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv4 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv4 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined%}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% for ip in ips_ipv4 %}
iface {{ dev }} inet static
address {{ ip }}
netmask 32
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv4 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv4 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined %}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% endfor %}
iface {{ dev }} inet6 static
address {{ ips_ipv6_first }}
netmask 128
post-up /sbin/ip -family inet6 route add {{ virt_pointopoint_ips_ipv6_first }} dev {{ dev }}
post-up /sbin/ip -family inet6 route add default via {{ virt_pointopoint_ips_ipv6_first }}
pre-down /sbin/ip -family inet6 route del default via {{ virt_pointopoint_ips_ipv6_first }}
pre-down /sbin/ip -family inet6 route del {{ virt_pointopoint_ips_ipv6_first }} dev {{ dev }}
{% for ptpip in virt_pointopoint_ips_ipv6 %}
post-up /sbin/ip -family inet6 route add {{ ptpip }} dev {{ dev }} via {{ virt_pointopoint_ips_ipv6_first }}
pre-down /sbin/ip -family inet6 route del {{ ptpip }} dev {{ dev }} via {{ virt_pointopoint_ips_ipv6_first }}
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv6 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv6 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined %}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% endfor %}
{% for ip in ips_ipv6 %}
iface {{ dev }} inet6 static
address {{ ip }}
netmask 128
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv6 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv6 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined %}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% endfor %}

{% else %}

{% for ip in netifs[netif].ips %}
{% if ip.ip | ipv6 %}
# ipv6 {{ip.ip}}
iface {{ dev }} inet6 static
address {{ ip.ip | ipv6('address') }}
netmask {{ ip.ip | ipv6('prefix') }}
#gateway
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv6 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv6 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined %}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% endif %}
{% if ip.ip | ipv4 %}
# ipv4 {{ip.ip}}
iface {{ dev }} inet static
address {{ ip.ip | ipv4('address') }}
network {{ ip.ip | ipv4('network') }}
netmask {{ ip.ip | ipv4('prefix') }}
broadcast {{ ip.ip | ipv4('broadcast') }}
#gateway
{% if netifs[netif].dns_resolvers is defined and netifs[netif].dns_resolvers | ipv4 %}
dns-nameservers {{ netifs[netif].dns_resolvers | ipv4 | join(" ") }}
{% endif %}
{% if netifs[netif].dns_search is defined %}
dns-search {{ netifs[netif].dns_search | join(" ") }}
{% endif %}
{% endif %}
{% endfor %}

{% endif %}

{% endif %}
{% endfor %}
{% endif %}

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

Загрузка…
Отмена
Сохранить