Outils pour utilisateurs

Outils du site


machines:grifon:judicael-adsl
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


machines:grifon:judicael-adsl [2020/09/26 10:22] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== judicael-adsl ======
  
 +Linux judicael-adsl.grifon.fr 4.12.12-gentoo #2 SMP Thu Sep 21 19:55:43 CEST 2017 x86_64 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz GenuineIntel GNU/Linux
 +
 +Machine virtuelle \\
 +Routeur de collecte ADSL
 +
 +===== Administrateurs =====
 +
 +  * alarig
 +  * dotux
 +  * gizmo
 +
 +===== Services =====
 +
 +  * RADIUS, freeradius
 +  * L2TP, xl2tpd
 +  * PPP, ppp patché
 +  * RA, radvd
 +  * DHCPv6, kea
 +  * BGP, bird
 +
 +==== RADIUS ====
 +
 +Ce service sert à authentifier les clients PPP (est-ce que le couple user/passwd est le bon ?) et à donner les IPs que ce client est autorisé à utiliser.
 +
 +On commence par installer les paquets qui vont bien :
 +
 +<code>emerge -va net-dialup/freeradius net-dialup/freeradius-client</code>
 +
 +Ensuite, on détermine les machines qui pourront se connecter :
 +
 +<file | /etc/raddb/clients.conf>
 +client localhost {
 + ipaddr = 127.0.0.1
 + proto = *
 + secret = passwd
 + require_message_authenticator = no
 + nas_type = other # localhost isn't usually a NAS...
 + limit {
 + max_connections = 16
 + lifetime = 0
 + idle_timeout = 30
 + }
 +}
 +client localhost_ipv6 {
 + ipv6addr = ::1
 + secret = passwd
 +}
 +client phibee_auth-srv2 {
 + ipv4addr = 78.41.160.24
 + secret = passwd
 +}
 +client phibee_auth-srv1 {
 + ipv4addr = 78.41.185.40
 + secret = passwd
 +}
 +</file>
 +
 +Les clients se renseignent ainsi :
 +
 +<file | /etc/raddb/users>
 +gfa@grifon.ptel.ipadsl Cleartext-Password := "passwd"
 + Service-Type = Framed-User,
 + Framed-Protocol = PPP,
 + Framed-Routing = None,
 + Framed-IP-Address = 89.234.186.22,
 + Framed-IP-Netmask = 255.255.255.255,
 + Framed-MTU = 1480,
 + Tunnel-Medium-Type = IP,
 + Tunnel-Server-Endpoint = 89.234.186.11,
 + Tunnel-Type = L2TP,
 + Framed-IPv6-Prefix = 2a00:5884:1100:2::/64,
 + Framed-IPv6-Address = 2a00:5884:1100:2::2,
 + Framed-Interface-Id = 0:0:0:2,
 + Delegated-IPv6-Prefix = 2a00:5884:1102::/48
 +</file>
 +
 +Framed-IP-Address correspond à l’IPv4 du client, Framed-IPv6-Prefix le range d’interco et Delegated-IPv6-Prefix le préfixe que nous lui déléguons.
 +
 +Le realm change en fonction de la collecte, voici ceux que nous devons utiliser :
 +  * grifon.ptel pour Orange
 +  * grifon.ptel.ipadsl pour SFR
 +  * grifon.phibee.adsl pour Axione
 +
 +==== L2TP ====
 +
 +<code>emerge -va net-dialup/xl2tpd</code>
 +
 +Notre infra de collecte est très classique, nous nous faisons livrer au travers d’un tunnel L2TP. La communication avec le pppd se fait au travers d’un port série virtuel créé dans ''/dev/pts''.
 +
 +<file | /etc/xl2tpd/xl2tpd.conf>
 +
 +[lns default]                                                   ; Our fallthrough LNS definition
 +assign ip = no
 +local ip = 89.234.186.11                                ; * Our local IP to use
 +pppoptfile = /etc/ppp/options
 +</file>
 +
 +Attention cependant, les versions (au moins) inférieures à 1.3.6 ne supportent pas ce port série virtuel.
 +==== PPP ====
 +
 +<code>emerge -va net-dialup/ppp
 +# avec le patch plus bas et le USE radius</code>
 +
 +Cela nous sert à terminer le tunnel PPP initié par l’abonné. Ça va créer une interface ''ppp${n}'' par abonné, avec n allant de 0 à ${abonnes_connectes} - 1.
 +
 +La configuration IPv4 est directement gérée par PPP avec de l’IPCP. En IPv6 il faut envoyer les RA et réponses DHCP avec des programmes externes. On utilise les scripts post-up pour ça.
 +
 +Nous utilisons le plugin ''radattr.so'' afin de récupérer les informations RADIUS dans un fichier plat et de pouvoir configurer les daemons IPv6 « à la volée ».
 +
 +Il faut également modifier le dictionnaire RADIUS car les attributs IPv6 ne sont pas présents par défaut.
 +
 +<file | /etc/ppp/options>
 +ms-dns 89.234.186.18
 +asyncmap 0
 +auth
 +lock
 +hide-password
 +modem
 +mru 1480
 +-pap
 ++chap
 +-vj
 +mtu 1480
 +name judicael
 +lcp-echo-interval 30
 +lcp-echo-failure 4
 +noipx
 ++ipv6
 +plugin radius.so
 +plugin radattr.so
 +</file>
 +
 +<file bash | /etc/ppp/ip-up.d/00-grifon.sh>
 +#!/bin/sh
 +
 +PPP_IFACE="$1"
 +PPP_TTY="$2"
 +PPP_SPEED="$3"
 +PPP_LOCAL="$4"
 +PPP_REMOTE="$5"
 +PPP_IPPARAM="$6"
 +
 +if [ ${PPP_LOCAL} = '89.234.186.11' ]; then
 +        exit 0
 +fi
 +
 +prefix_interco=$(awk '$1 == "Framed-IPv6-Prefix" { print $2 }' /run/radattr.$PPP_IFACE)
 +prefix_deleg=$(awk '$1 == "Delegated-IPv6-Prefix" { print $2 }' /run/radattr.$PPP_IFACE)
 +
 +ip -6 addr add ${prefix_interco%/64}1/64 dev ${PPP_IFACE}
 +ip -6 route add $prefix_deleg via $PPP_REMOTE dev $PPP_IFACE
 +
 +if [ ! -d /run/vpn/ ]; then
 +        mkdir /run/vpn/
 +fi
 +
 +echo "
 +interface $PPP_IFACE
 +{
 +        AdvSendAdvert on;
 +        IgnoreIfMissing on;
 +
 +        prefix $prefix_interco {};
 +};
 +# $PPP_LOCAL $PPP_REMOTE
 +" > /run/vpn/radvd-user.${PPP_IFACE}.conf
 +cat /etc/radvd.conf.base > /etc/radvd.conf
 +cat /run/vpn/radvd-user.*.conf >> /etc/radvd.conf
 +
 +kill -HUP $(cat /run/radvd/radvd.pid)
 +
 +sed \
 +        -e "s|#IFACE#|${PPP_IFACE}|" \
 +        -e "s|#PF_INTERCO#|${prefix_interco}|" \
 +        -e "s|#INET6_INTERCO#|${prefix_interco%/64}|g" \
 +        -e "s|#PF_PD#|${prefix_deleg%/48}|" \
 +        /etc/kea/kea-dhcp6-ppp.conf > /run/vpn/kea-dhcpd6-${PPP_IFACE}.conf
 +
 +/usr/sbin/kea-dhcp6 -c/run/vpn/kea-dhcpd6-${PPP_IFACE}.conf &
 +
 +# Forcer un RA après le démarage du DHCPv6
 +kill -HUP $(cat /run/radvd/radvd.pid)
 +</file>
 +
 +<file bash | /etc/ppp/ip-down.d/00-grifon.sh>
 +#!/bin/sh
 +
 +PPP_IFACE="$1"
 +PPP_TTY="$2"
 +PPP_SPEED="$3"
 +PPP_LOCAL="$4"
 +PPP_REMOTE="$5"
 +PPP_IPPARAM="$6"
 +
 +rm -f /run/vpn/radvd-user.${PPP_IFACE}.conf
 +cat /etc/radvd.conf.base > /run/vpn/radvd-vpn.conf
 +cat /run/vpn/radvd-user.*.conf >> /run/vpn/radvd-vpn.conf
 +kill -HUP $(cat /run/radvd/radvd.pid)
 +
 +ip -6 route del $prefix dev ${PPP_IFACE}
 +
 +kill $(cat /var/lib/kea/kea-dhcpd6-${PPP_IFACE}.kea-dhcp6.pid)
 +rm /run/vpn/kea-dhcpd6-${PPP_IFACE}.conf
 +</file>
 +
 +<file | /etc/ppp/radius/dictionary>
 +[…]
 +#IPv6
 +
 +ATTRIBUTE       Framed-IPv6-Prefix      97      ipv6prefix
 +ATTRIBUTE       Framed-IPv6-Address     168     ipv6addr
 +ATTRIBUTE       Framed-Interface-Id     96      string
 +ATTRIBUTE       Delegated-IPv6-Prefix   123     ipv6prefix
 +</file>
 +
 +PPP ne supporte pas les attributs RADIUS IPv6, il faut donc le patcher pour que ça fonctionne. Le patch a déjà publié sur la ML upstream il y a un an et demi, mais n’est toujours pas intégré. Pour le moment, on se contente donc de le mettre dans ''/etc/portage/patches/net-dialup/ppp/Handle-IPv6-RADIUS-attributes.patch'' pour qu’emerge modifie la source à chaque fois qu’il faut re-compiler.
 +
 +<file diff | /etc/portage/patches/net-dialup/ppp/Handle-IPv6-RADIUS-attributes.patch>
 +From 5c0cac0eeecc32e5023d353a8420633827800e8e Mon Sep 17 00:00:00 2001
 +From: Benjamin Cama <benoar@dolka.fr>
 +Date: Sun, 11 Oct 2015 18:08:11 +0200
 +Subject: [PATCH] Handle IPv6 RADIUS attributes
 +
 +---
 + pppd/plugins/radius/avpair.c       | 26 +++++++++++++++++++++++++-
 + pppd/plugins/radius/dict.c         | 12 ++++++++++++
 + pppd/plugins/radius/radiusclient.h | 11 +++++++++++
 + 3 files changed, 48 insertions(+), 1 deletion(-)
 +
 +diff --git a/pppd/plugins/radius/avpair.c b/pppd/plugins/radius/avpair.c
 +index 716d23f..7536941 100644
 +--- a/pppd/plugins/radius/avpair.c
 ++++ b/pppd/plugins/radius/avpair.c
 +@@ -222,6 +222,9 @@ VALUE_PAIR *rc_avpair_gen (AUTH_HDR *auth)
 +                        {
 +
 +                            case PW_TYPE_STRING:
 ++                           case PW_TYPE_IFID:
 ++                           case PW_TYPE_IPV6ADDR:
 ++                           case PW_TYPE_IPV6PREFIX:
 +                                memcpy (pair->strvalue, (char *) ptr, (size_t) attrlen);
 +                                pair->strvalue[attrlen] = '\0';
 +                                pair->lvalue = attrlen;
 +@@ -692,9 +695,10 @@ int rc_avpair_parse (char *buffer, VALUE_PAIR **first_pair)
 + int rc_avpair_tostr (VALUE_PAIR *pair, char *name, int ln, char *value, int lv)
 + {
 +        DICT_VALUE     *dval;
 +-       char            buffer[32];
 ++       char            buffer[INET6_ADDRSTRLEN + 4]; // for a prefix: addr + '/' + prefixlen
 +        struct in_addr  inad;
 +        unsigned char         *ptr;
 ++       char            *str;
 +
 +        *name = *value = '\0';
 +
 +@@ -753,6 +757,26 @@ int rc_avpair_tostr (VALUE_PAIR *pair, char *name, int ln, char *value, int lv)
 +                strncpy(value, buffer, lv-1);
 +                break;
 +
 ++           case PW_TYPE_IFID:
 ++               ptr = pair->strvalue;
 ++               snprintf(buffer, sizeof (buffer), "%x:%x:%x:%x",
 ++                        (ptr[0] << 8) + ptr[1], (ptr[2] << 8) + ptr[3],
 ++                        (ptr[4] << 8) + ptr[5], (ptr[6] << 8) + ptr[7]);
 ++               strncpy(value, buffer, lv-1);
 ++               break;
 ++
 ++           case PW_TYPE_IPV6ADDR:
 ++               inet_ntop(AF_INET6, pair->strvalue, buffer, sizeof (buffer));
 ++               strncpy(value, buffer, lv-1);
 ++               break;
 ++
 ++           case PW_TYPE_IPV6PREFIX:
 ++               inet_ntop(AF_INET6, pair->strvalue + 2, buffer, sizeof (buffer));
 ++               str = buffer + strlen(buffer);
 ++               snprintf(str, sizeof (buffer) - (str - buffer), "/%d", *(pair->strvalue + 1));
 ++               strncpy(value, buffer, lv-1);
 ++               break;
 ++
 +            default:
 +                error("rc_avpair_tostr: unknown attribute type %d", pair->type);
 +                return (-1);
 +diff --git a/pppd/plugins/radius/dict.c b/pppd/plugins/radius/dict.c
 +index 72b3e70..3b2add2 100644
 +--- a/pppd/plugins/radius/dict.c
 ++++ b/pppd/plugins/radius/dict.c
 +@@ -158,6 +158,18 @@ int rc_read_dictionary (char *filename)
 +                        {
 +                                type = PW_TYPE_DATE;
 +                        }
 ++                       else if (strcmp (typestr, "ifid") == 0)
 ++                       {
 ++                               type = PW_TYPE_IFID;
 ++                       }
 ++                       else if (strcmp (typestr, "ipv6addr") == 0)
 ++                       {
 ++                               type = PW_TYPE_IPV6ADDR;
 ++                       }
 ++                       else if (strcmp (typestr, "ipv6prefix") == 0)
 ++                       {
 ++                               type = PW_TYPE_IPV6PREFIX;
 ++                       }
 +                        else
 +                        {
 +                                error("rc_read_dictionary: invalid type on line %d of dictionary %s",
 +diff --git a/pppd/plugins/radius/radiusclient.h b/pppd/plugins/radius/radiusclient.h
 +index 51b959a..ab4ef2d 100644
 +--- a/pppd/plugins/radius/radiusclient.h
 ++++ b/pppd/plugins/radius/radiusclient.h
 +@@ -77,6 +77,17 @@ typedef struct pw_auth_hdr
 + #define PW_TYPE_INTEGER                        1
 + #define PW_TYPE_IPADDR                 2
 + #define PW_TYPE_DATE                   3
 ++#define PW_TYPE_ABINARY                        4
 ++#define PW_TYPE_OCTETS                 5
 ++#define PW_TYPE_IFID                   6
 ++#define PW_TYPE_IPV6ADDR               7
 ++#define PW_TYPE_IPV6PREFIX             8
 ++#define PW_TYPE_BYTE                   9
 ++#define PW_TYPE_SHORT                  10
 ++#define PW_TYPE_ETHERNET               11
 ++#define PW_TYPE_SIGNED                 12
 ++#define PW_TYPE_COMBO_IP               13
 ++#define PW_TYPE_TLV                    14
 +
 + /* standard RADIUS codes */
 +
 +--
 +2.1.4
 +</file>
 +==== RA ====
 +
 +<code>emerge -va net-misc/radvd</code>
 +
 +radvd veut nécessairement une configuration non vide dans ''/etc/radvd.conf'' pour démarrer.
 +Ce que nous faisons, c’est que nous créons ''/etc/radvd.conf.base'' comprenant une conf qui ne fait strictement rien, mais suffisante. Ensuite, nous créons un fichier ''/run/vpn/radvd-user.ppp${n}.conf'' par abonné que nous concaténons au fichier de base et que nous écrivons dans ''/etc/radvd.conf'' (cf. le script de post-up PPP).
 +
 +Au reboot, nous écrasons le ''/etc/radvd.conf'' car rien ne nous garantit que la machine s’est arrêtée proprement et que tous les scripts de post-down se sont déroulé pour supprimer les configurations qui ne sont plus nécessaires.
 +
 +<file | /etc/radvd.conf.base>
 +interface lo {};
 +interface eth0 {
 +        AdvSendAdvert off;
 +};
 +</file>
 +
 +<file | /run/vpn/radvd-user.ppp0.conf>
 +
 +interface ppp0
 +{
 +        AdvSendAdvert on;
 +        IgnoreIfMissing on;
 +
 +        prefix 2a00:5884:1100:1::/64 {};
 +};
 +# fe80::09e0:1d8b:94af:8d16 fe80::021b:21ff:fe1a:e9c0
 +
 +</file>
 +
 +<file | /etc/radvd.conf>
 +interface lo {};
 +interface eth0 {
 +        AdvSendAdvert off;
 +};
 +
 +interface ppp0
 +{
 +        AdvSendAdvert on;
 +        IgnoreIfMissing on;
 +
 +        prefix 2a00:5884:1100:1::/64 {};
 +};
 +# fe80::09e0:1d8b:94af:8d16 fe80::021b:21ff:fe1a:e9c0
 +
 +</file>
 +==== DHCPv6 ====
 +
 +Nous utilisons kea pour le DHCPv6. Pourquoi pas le serveur classique isc-dhcp ? Simplement parce qu’il ne supporte pas le medium ppp… « ''Unsupported device type 512 for "ppp0"'' ».
 +
 +La configuration de kea est passablement merdique (c’est du JSON…). Donc plutôt que de se taper 100 lignes de template dans le script d’up, je sed une conf type que je copie dans /run/vpn et je dis à kea d’utiliser ça.
 +
 +<file | /etc/kea/kea-dhcp6-ppp.conf>
 +{
 +"Dhcp6": {
 +  "interfaces-config": {
 +    "interfaces": [ "#IFACE#" ]
 +  },
 +  "option-data": [
 +        {
 +                "name": "dns-servers",
 +                "code": 23,
 +                "space": "dhcp6",
 +                "csv-format": true,
 +                "data": "2a00:5884::7, 2a00:5884:8218::1"
 +        }
 +],
 +  "lease-database": {
 +    "type": "memfile"
 +  },
 +
 +  "expired-leases-processing": {
 +    "reclaim-timer-wait-time": 10,
 +    "flush-reclaimed-timer-wait-time": 25,
 +    "hold-reclaimed-time": 3600,
 +    "max-reclaim-leases": 100,
 +    "max-reclaim-time": 250,
 +    "unwarned-reclaim-cycles": 5
 +  },
 +
 +  "preferred-lifetime": 3000,
 +  "valid-lifetime": 4000,
 +  "renew-timer": 1000,
 +  "rebind-timer": 2000,
 +
 +  "subnet6": [
 +        {
 +                "subnet": "#PF_INTERCO#",
 +                "interface": "#IFACE#",
 +                "pools": [
 +                        { "pool": "#INET6_INTERCO#2-#INET6_INTERCO#ffff" }
 +                ],
 +        "pd-pools": [
 +                {
 +                        "prefix": "#PF_PD#",
 +                        "prefix-len": 48,
 +                        "delegated-len": 56
 +                }
 +        ]
 +        }
 +   ]
 +},
 +
 +"Logging": {
 +  "loggers": [
 +    {
 +      "name": "kea-dhcp6",
 +      "output_options": [
 +          {
 +            "output": "/var/log/kea-dhcp6.log"
 +          }
 +      ],
 +      "severity": "INFO",
 +      "debuglevel": 0
 +    },
 +  ]
 +}
 +
 +}
 +</file>
 +
 +<note important>
 +Cette configuration n’est pas compatible avec la version 1.2.0-r1, il est donc impératif de rester en version 1.1.0.
 +</note>
 +==== BGP ====
 +
 +On utilise BGP pour annoncer nos IPs RADIUS et L2TP afin qu’elles soient routées sur l’interco plutôt que par le net. Ça permet de ne payer le transit qu’une fois. \\
 +Phibee nous annonce également leurs IPs associées à chaque service, afin que les réponses passent également par le bon tunnel.
 +
 +On en profite pour annoncer les IPv4 à nos routeurs de bordures. Comme nous n’avons pas encore de bloc dédié (le plan d’adressage est complet sur le premier /24, on est en attente de nouvelles de gitoyen pour en avoir un deuxième), on ne peut pas router tout un bloc à la main.
 +
 +Phibee nous livre sur une interco /31 publique pour chaque service, chacune dans son VLAN.
 +
 +<file | /etc/bird.conf>
 +# Configure logging
 +log syslog { warning, error, fatal, bug };
 +
 +# Turn on global debugging of all protocols
 +# debug protocols all;
 +
 +# Override router ID and store ASN
 +router id 89.234.186.206;
 +
 +#####################
 +# GENERAL PROTOCOLS #
 +#####################
 +# This pseudo-protocol watches all interface up/down events.
 +protocol device {
 +        # Scan interfaces every 5 seconds
 +        scan time 5;
 +}
 +
 +protocol direct {}
 +
 +protocol kernel {
 +        persist;
 +        import none;
 +        export all;
 +}
 +
 +protocol bgp bgp_phibee_radius {
 +        local as 204092;
 +        neighbor 78.41.191.124 as 8487;
 +        export where proto = "direct1";
 +        export filter { if net ~ [ 89.234.186.10/32 ] then accept; };
 +}
 +
 +protocol bgp bgp_phibee_lns {
 +        local as 204092;
 +        neighbor 78.41.191.126 as 8487;
 +        export where proto = "direct1";
 +        export filter { if net ~ [ 89.234.186.11/32 ] then accept; };
 +}
 +
 +protocol bgp ibgp_nominoe {
 +        local as 204092;
 +        neighbor 89.234.186.203 as 204092;
 +        export where proto = "direct1";
 +
 +        next hop self;
 +}
 +
 +protocol bgp ibgp_budic {
 +        local as 204092;
 +        neighbor 89.234.186.202 as 204092;
 +        export where proto = "direct1";
 +
 +        next hop self;
 +}
 +</file>
 +===== Conf réseau =====
 +
 +La VM ne comporte qu’un port réseau public (''eth0'') et un port réseau privé (''eth1'').
 +
 +Le trafic rentre par l’interco avec phibee sur ''eth0.2001'' (L2TP) et ressort par ''eth0'' (Ethernet, VLAN natif 32).
 +
 +Les échanges RADIUS se font sur ''eth0.2000''.
 +
 +L’interface ''dummy0'' sert de loopback pour porter les IPs sur lesquelles se bind le RADIUS et le L2TP, que l’on annonce en BGP à phibee.
 +
 +La passerelle de la machine est ''89.234.186.201'' et ''2a00:5884:0:1::1'', ce qui correspond à un VRRP entre nominoe et budic.
 +
 +<file>
 +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 +    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
 +       valid_lft forever preferred_lft forever
 +    inet6 ::1/128 scope host
 +       valid_lft forever preferred_lft forever
 +2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 +    link/ether 7a:0d:49:b8:6a:85 brd ff:ff:ff:ff:ff:ff
 +    inet 89.234.186.206/29 brd 89.234.186.207 scope global eth0
 +       valid_lft forever preferred_lft forever
 +    inet6 2a00:5884:0:1:ffff:ffff:ffff:ffff/64 scope global
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::780d:49ff:feb8:6a85/64 scope link
 +       valid_lft forever preferred_lft forever
 +3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 +    link/ether be:a8:8a:55:c1:0e brd ff:ff:ff:ff:ff:ff
 +    inet 172.17.0.22/24 brd 172.17.0.255 scope global eth1
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::bca8:8aff:fe55:c10e/64 scope link
 +       valid_lft forever preferred_lft forever
 +4: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
 +    link/ether 02:8e:6a:62:b4:40 brd ff:ff:ff:ff:ff:ff
 +    inet 89.234.186.10/32 scope global dummy0
 +       valid_lft forever preferred_lft forever
 +    inet 89.234.186.11/32 scope global dummy0
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::8e:6aff:fe62:b440/64 scope link
 +       valid_lft forever preferred_lft forever
 +5: eth0.2000@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 +    link/ether 7a:0d:49:b8:6a:85 brd ff:ff:ff:ff:ff:ff
 +    inet 78.41.191.125/31 scope global eth0.2000
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::780d:49ff:feb8:6a85/64 scope link
 +       valid_lft forever preferred_lft forever
 +6: eth0.2001@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 +    link/ether 7a:0d:49:b8:6a:85 brd ff:ff:ff:ff:ff:ff
 +    inet 78.41.191.127/31 scope global eth0.2001
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::780d:49ff:feb8:6a85/64 scope link
 +       valid_lft forever preferred_lft forever
 +13: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1480 qdisc pfifo_fast state UNKNOWN group default qlen 3
 +    link/ppp
 +    inet 89.234.186.11 peer 89.234.186.21/32 scope global ppp0
 +       valid_lft forever preferred_lft forever
 +    inet6 2a00:5884:1100:1::1/64 scope global
 +       valid_lft forever preferred_lft forever
 +    inet6 fe80::9e0:1d8b:94af:8d16/10 scope link
 +       valid_lft forever preferred_lft forever
 +</file>
machines/grifon/judicael-adsl.txt · Dernière modification : 2020/09/26 10:22 de 127.0.0.1