Configuration Réseau

Cette page a pour but de décrire la configuration réseau simple et avancée de Linux. Sont expliqués les réglages utilisés pour Projet Bender en particulier.

Cette configuration correspond à la distribution Debian et peuvent varier d'une distribution à l'autre.

Configuration de la connectivité réseau

La première étapes consiste à configurer l'ip des interfaces.

Quelques commandes utiles

Les commandes utiles pour afficher les informations relatives au réseau :

  • ifconfig : affiche l'état des interfaces
  • netstats -rn : affiche la table de routage
  • host : effectue une résolution DNS en utilisant la configuration de la machine
  • hostname : affiche le nom de la machine
  • nslookup : client DNS

Configuration des interfaces

Sous Debian c'est le fichier /etc/network/interfaces qui contient la configuration des interfaces.

Voici un exemple avec le DHCP d'activé :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Exemple avec une IP fixe :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.10.2
        netmask 255.255.255.0
        gateway 192.168.10.254

Configuration de la résolution DNS

Remarque : Pour installer un serveur DNS, voir Bind.

Le fichier /etc/resolv.conf contient la configuration DNS de l'ordinateur. En DHCP il est automatiquement configuré, il est par contre nécessaire de le modifier en cas de configuration statique.

Voici un exemple :

domain bouthors.fr
nameserver 192.168.10.1
nameserver 192.168.10.2
  • domain indique les domaines de recherche DNS
  • nameserver indique les serveurs DNS

Automatiser la génération de resolv.conf en adresse statique

Grâce au paquet resolvconf il est possible de générer le fichier /etc/resolv.conf sans DHCP.

Il suffit d'ajouter les options suivantes dans /etc/network.interfaces :

# dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.10.1
        dns-search bouthors.fr

Remarque : si le système a plusieurs interfaces, cela fusionne les configurations.

Options du client DHCP

Il est possible de modifier les options du client DHCP dans le fichier /etc/dhcp3/dhclient.conf. En général cela n'est pas nécessaire.

Par exemple si vous souhaitez que le client DHCP n'écrase par la configuration DNS du PC, remplacer :

request subnet-mask, broadcast-address, time-offset, routers,
       domain-name, domain-name-servers, host-name,
       netbios-name-servers, netbios-scope, interface-mtu;

Par :

request subnet-mask, broadcast-address, time-offset, routers, interface-mtu;

Résolution DNS par fichier host

De plus le fichier /etc/hosts permet de configurer des résolutions DNS statiques propres à l'ordinateur.

Voici le contenu par défaut du fichier :

127.0.0.1       localhost
127.0.1.1       bender.bouthors.fr    bender

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
bender:/etc/dhcp3#

Firewall

Ce chapitre décrit comment utiliser iptables, le firewall de Linux. Un script facilitant sont utilisation au quotidien est également présenté.

Règles de filtrage

Le fonctionnement d'iptables est le suivant :

tables_traverse.jpg

Chaque paquet doit traverser une serie de filtres en fonction de sa source et sa destination.

De base, tous les paquets sont autorisés. Voici comment protéger un serveur simplement :

  • Forward concerne les paquets traversant un serveur en mode routeur, il faut donc le bloquer
  • Output analyse le paquet emit par le serveur directement, c'est à dire les sessions initiées par le serveur mais aussi les réponses au sessions reçues, il n'est pas nécessaire de le filtrer
  • Input filtre les demandes de connexions à destination du serveur mais aussi les réponses aux sessions émises par le serveur, c'est cette table qu'il faut construire.

Pour bloquer FORWARD, il suffit d'utiliser la commande suivante :

# iptables -P FORWARD DROP

Avant de bloquer INPUT, il est important de laisser quelques flux passer :

  • les flux provenant de lo l'interface interne :
# iptables -A INPUT -i lo -j ACCEPT
  • les flux provenant des connexions établies (les réponses aux requetes du serveur)
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Vient ensuite les flux autorisés, par exemple :

  • les flux provenant de l'interface du réseau interne
# iptables -A INPUT -i eth1 -j ACCEPT
  • les flux icmp
# iptables -A INPUT -p icmp -j ACCEPT
  • le SSH
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  • l'accès au serveur web en HTTP
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  • l'accès au serveur web en HTTPS
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Et enfin, la règle de DENY sur les autres paquets entrants :

# iptables -P INPUT DROP

Au final, la configuration est la suivante :

bender:~# iptables-save
# Generated by iptables-save v1.3.6 on Sat Jul 14 16:22:53 2007
*mangle
:PREROUTING ACCEPT [1882:245141]
:INPUT ACCEPT [1882:245141]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1271:188201]
:POSTROUTING ACCEPT [1271:188201]
COMMIT
# Completed on Sat Jul 14 16:22:53 2007
# Generated by iptables-save v1.3.6 on Sat Jul 14 16:22:53 2007
*filter
:INPUT DROP [332:115556]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1271:188201]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT
# Completed on Sat Jul 14 16:22:53 2007
# Generated by iptables-save v1.3.6 on Sat Jul 14 16:22:53 2007
*nat
:PREROUTING ACCEPT [126:14961]
:POSTROUTING ACCEPT [86:8122]
:OUTPUT ACCEPT [87:8195]
COMMIT
# Completed on Sat Jul 14 16:22:53 2007

Script de démarrage

Voici un petit script /etc/init.d/rc.firewall fait maison pour sauver/charger les règles de firewall au démarrage :

#!/bin/sh
#######################
#                     #
# Scripts de firewall #
# www.bouthors.fr     #
# Licence GNU GPLv2   #
#                     #
#######################
### BEGIN INIT INFO
# Provides:          rc.firewall
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Initialize iptables
# Description:       Load iptables configuration from /etc/firewall.conf
#
### END INIT INFO

#firewall rules :
CONF_FILE=/etc/firewall.conf
#auto save rules on halt (1 to enable)
AUTO_SAVE=0

#iptables position :
IPTABLES=/sbin/iptables
IPTABLES_save=/sbin/iptables-save
IPTABLES_load=/sbin/iptables-restore


load_conf(){
# Load the saved config file
   if [ -f $CONF_FILE ]; then
      echo "Loading firewall config $CONF_FILE"
      cat $CONF_FILE|$IPTABLES_load
   else
      echo "Error : $CONF_FILE not found"
   fi
}

save_conf(){
# Save the current config
   echo "Saving firewall config to $CONF_FILE"
   $IPTABLES_save > $CONF_FILE
}

disable(){
#delete all installed rules
   echo "Disabling firewall"
   $IPTABLES -P INPUT ACCEPT
   $IPTABLES -P OUTPUT ACCEPT
   $IPTABLES -P FORWARD ACCEPT
   $IPTABLES -t mangle -P PREROUTING ACCEPT
   $IPTABLES -t mangle -P INPUT ACCEPT
   $IPTABLES -t mangle -P FORWARD ACCEPT
   $IPTABLES -t mangle -P OUTPUT ACCEPT
   $IPTABLES -t mangle -P POSTROUTING ACCEPT
   $IPTABLES -t filter -P INPUT ACCEPT
   $IPTABLES -t filter -P FORWARD ACCEPT
   $IPTABLES -t filter -P OUTPUT ACCEPT
   $IPTABLES -t nat -P PREROUTING ACCEPT
   $IPTABLES -t nat -P POSTROUTING ACCEPT
   $IPTABLES -t nat -P OUTPUT ACCEPT
   $IPTABLES -F
   $IPTABLES -t mangle -F
   $IPTABLES -t filter -F
   $IPTABLES -t nat -F

   echo "Warning : firewall disabled"
   echo "Warning : if you save the firewall now, you will loose all your previous config"
}

stop(){
#Auto save on stop
   if [ "$AUTO_SAVE" = "1" ]; then
      echo "Firewall auto save enabled : saving rules..."
      save_conf
   else
      echo "Firewall auto save disabled : firewall rules not saved."
   fi
}

# read the optional file name
if [ "$2" != "" ]; then
   CONF_FILE="$2"
#   echo "Using config file $CONF_FILE"
fi


# Main function
case "$1" in
  start)
        load_conf
        ;;
  stop)
        stop
        ;;
  save)
        save_conf
        ;;
  load)
        load_conf
        ;;
  restart)
        stop
        load_conf
        ;;
  reload)
        load_conf
        ;;
  disable)
        disable
        ;;
  *)
        echo "Usage: /etc/init.d/rc.firewall {start|stop|reload|save|disable} [file]"
        exit 1
esac
exit 0

Pour l'installer copier le script dans /etc/init.d/rc.firewall puis tapper les commandes :

# chmod a+x /etc/init.d/rc.firewall
# update-rc.d rc.firewall defaults
 Adding system startup for /etc/init.d/rc.firewall ...
   /etc/rc0.d/K20rc.firewall -> ../init.d/rc.firewall
   /etc/rc1.d/K20rc.firewall -> ../init.d/rc.firewall
   /etc/rc6.d/K20rc.firewall -> ../init.d/rc.firewall
   /etc/rc2.d/S20rc.firewall -> ../init.d/rc.firewall
   /etc/rc3.d/S20rc.firewall -> ../init.d/rc.firewall
   /etc/rc4.d/S20rc.firewall -> ../init.d/rc.firewall
   /etc/rc5.d/S20rc.firewall -> ../init.d/rc.firewall
#

Principe d'utilisation :

  • rc.firewall save : sauve les règles en cours
  • rc.firewall start ou reload : recharge les règles sauvées
  • rc.firewall disable : laisse tout passer
  • rc.firewall stop : sauve les règles si AUTO_SAVE=1 (utilisé avant d'éteindre le PC)

AUTO_SAVE indique si les règles sont automatiquement sauvées avant d'éteindre/rebooter.

CONF_FILE=/etc/firewall.conf indique le fichier des règles par défaut.

Toutes les commandes acceptent un autre nom de fichier pour les règles, par exemple :

  • rc.firewall save /root/firewall.conf.archive
  • rc.firewall reload /root/firewall.conf.autoriser_ssh

Policy Based Routing

Linux dispose de fonctionnalité de routage très puissantes qui permettent de router autrement que par l'IP destination.

Prenons un exemple avec deux liaisons Internet via des FAI différents :

  • l'ADSL avec une ligne à faible debit (2Mbits/s) mais une latence faible et stable
  • le câble avec par contre un plus haut débit mais une latence relativement aléatoire.

Le but est de connecter et utiliser les deux liaisons simultanéments. Etant donné la différence de qualité entre les liaisons, l'objectif est de faire passer les flux interactifs par l'ADSL et les gros débit par le câble.

Le câble servira de connexion par défaut pour le serveur, certains flux seront redirigés sur l'ADSL par règle.

Installation

Avant de commencer, il faut que la commande ip soit disponible, si elle ne l'est pas installer le paquet :

  • iproute

Première étape : connecter les interfaces

La première étape consiste à relier les deux interfaces sur le serveur et faire en sorte que le serveur puisse répondre par ces deux interfaces.

Dans mon cas, eth0 est le câble connecté en DHCP, eth1 est l'ADSL connecté en IP fixe.

Voici le fichier /etc/network/interfaces :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 127.0.0.1
        dns-search www.bouthors.fr

allow-hotplug eth1
iface eth1 inet static
        address 192.168.10.2
        netmask 255.255.255.0

Ce qui nous donne :

bender:~# ifconfig
eth0      Lien encap:Ethernet  HWaddr 00:11:D8:94:86:35
          inet adr:85.68.230.27  Bcast:85.68.231.255  Masque:255.255.254.0
          adr inet6: fe80::211:d8ff:fe94:8635/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:185980 errors:0 dropped:0 overruns:0 frame:0
          TX packets:577 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:11654218 (11.1 MiB)  TX bytes:57478 (56.1 KiB)
          Interruption:233 Adresse de base:0xc000

eth1      Lien encap:Ethernet  HWaddr 00:11:D8:94:95:D5
          inet adr:192.168.10.2  Bcast:192.168.10.255  Masque:255.255.255.0
          adr inet6: fe80::211:d8ff:fe94:95d5/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1338 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1450 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:180239 (176.0 KiB)  TX bytes:181244 (176.9 KiB)
          Interruption:58

lo        Lien encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:404 errors:0 dropped:0 overruns:0 frame:0
          TX packets:404 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:42993 (41.9 KiB)  TX bytes:42993 (41.9 KiB)

bender:~# ip route
192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.2
85.68.230.0/23 dev eth0  proto kernel  scope link  src 85.68.230.27
default via 85.68.231.254 dev eth0

Seul le réseau 192.168.10.0/24 est accessible sur l'interface eth1. Si un flux internet arrive sur l'adresse 192.168.10.2, Linux répondra avec cette adresse mais en utilisant la passerelle de l'interface eth0.

Pour que internet soit également accessible il est nécessaire d'indiquer à Linux que lorsqu'il utilise l'adresse source 192.168.10.2, il doit alors utiliser la gateway 192.168.10.254.

Il faut tout d'abord configurer une nouvelle table de routage séparée pour l'ADSL :

#ip route add 192.168.10.0/24 dev eth1 table 100
#ip route add 127.0.0.0/8 dev lo table 100
#ip route add default via 192.168.10.254 table 100

La table 100 est maintenant configurée :

bender:~# ip route show table 100
192.168.10.0/24 dev eth1  scope link
127.0.0.0/8 dev lo  scope link
default via 192.168.10.254 dev eth1
bender:~#

Il suffit d'indiquer à Linux de l'utiliser pour l'adresse de l'interface eth1 :

bender:~# ip rule
0:      from all lookup 255
32766:  from all lookup main
32767:  from all lookup default

bender:~# ip rule add from 192.168.10.2 table 100

bender:~# ip rule
0:      from all lookup 255
32765:  from 192.168.10.2 lookup 100
32766:  from all lookup main
32767:  from all lookup default
bender:~#

Lorsque des flux Internet sont envoyées sur l'interface eth1, le serveur répond désormais correctement.

Deuxième étape : rediriger les flux par règle

Suite à la première étape, le serveur répond correctement aux requêtes provenant des deux interfaces. Mais il utilise toujours eth0 pour la plupart des flux.

Pour utiliser la deuxième interface, il suffit de configurer les logiciels pour utiliser eth1.

Il est également possible de forcer l'utilisation de la deuxième interface par règle. Le principe est le suivant :

  1. on marque une session avec le firewall
  2. on redirige les sessions avec le policy based routing
  3. on source NAT le flux pour qu'il utilise la bonne IP source

Le reroutage du flux ne change pas l'ip source par défaut qui utilise l'IP de eth0. C'est pourquoi nous sommes obligés de faire un NAT source.

Le marquage des flux par iptables s'effectue ainsi (exemple avec le DNS)

#iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 53 -j MARK --set-mark 0x2
#iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j MARK --set-mark 0x2

Puis la redirection avec

#ip rule add fwmark 2 table 100

Enfin le NAT des flux redirigés :

#iptables -t nat -A POSTROUTING -s ! 192.168.10.0/255.255.255.0 -o eth1 -j MASQUERADE

Automatiser la configuration au démarrage

Afin de rendre la configuration permanente, le plus simple est de créer un script appelé au démarrage.

Par exemple, créer le script /etc/rc.local.routes :

#/bin/sh
ip route add 192.168.10.0/24 dev eth1 table 100
ip route add 127.0.0.0/8 dev lo table 100
ip route add default via 192.168.10.254 table 100

ip rule add from 192.168.10.2 table 100
ip rule add fwmark 2 table 100

Et ajouter ce script à /etc/rc.local :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/etc/rc.local.routes

exit 0

Annexe : configuration complète de Bender

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 127.0.0.1
        dns-search bouthors.fr

allow-hotplug eth1
iface eth1 inet static
        address 192.168.10.2
        netmask 255.255.255.0

/etc/dhcp3/dhclient.conf

# Configuration file for /sbin/dhclient, which is included in Debian's
#       dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#       man page for more information about the syntax of this file
#       and a more comprehensive list of the parameters understood by
#       dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#       not leave anything out (like the domain name, for example), then
#       few changes must be made to this file, if any.
#

#send host-name "andare.fugue.com";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;

request subnet-mask, broadcast-address, time-offset, routers, interface-mtu;
#request subnet-mask, broadcast-address, time-offset, routers,
#       domain-name, domain-name-servers, host-name,
#       netbios-name-servers, netbios-scope, interface-mtu;

#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}

#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}

/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search bouthors.fr

/etc/rc.local.routes

#/bin/sh
ip route add 192.168.10.0/24 dev eth1 table 100
ip route add 127.0.0.0/8 dev lo table 100
ip route add default via 192.168.10.254 table 100

ip rule add from 192.168.10.2 table 100
ip rule add fwmark 2 table 100

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/etc/rc.local.routes

exit 0

/etc/firewall.conf

# Generated by iptables-save v1.3.6 on Mon Jul 30 13:24:53 2007
*nat
:PREROUTING ACCEPT [3404:930842]
:POSTROUTING ACCEPT [41:2539]
:OUTPUT ACCEPT [52:3391]
-A POSTROUTING -s ! 192.168.10.0/255.255.255.0 -o eth1 -j MASQUERADE
COMMIT
# Completed on Mon Jul 30 13:24:53 2007
# Generated by iptables-save v1.3.6 on Mon Jul 30 13:24:53 2007
*filter
:INPUT DROP [2650:834284]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [12369:1771953]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 55000:59000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4662 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4666 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6882 -j ACCEPT
COMMIT
# Completed on Mon Jul 30 13:24:53 2007
# Generated by iptables-save v1.3.6 on Mon Jul 30 13:24:53 2007
*mangle
:PREROUTING ACCEPT [16911:11516410]
:INPUT ACCEPT [16910:11516360]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12369:1771953]
:POSTROUTING ACCEPT [12369:1771953]
-A OUTPUT -p tcp -m tcp --dport 53 -j MARK --set-mark 0x2
-A OUTPUT -p udp -m udp --dport 53 -j MARK --set-mark 0x2
COMMIT
# Completed on Mon Jul 30 13:24:53 2007

Backup

  • /etc/network/interfaces
  • /etc/resolv.conf
  • /etc/hosts
  • /etc/dhcp3/dhclient.conf
  • /etc/init.d/rc.firewall
  • /etc/firewall.conf
  • /etc/rc.local.routes
  • /etc/rc.local

Links

linux/reseau.txt · Dernière modification: 2013/07/10 18:40 par matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki