Différences entre versions de « Passerelle Internet »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
m (premier jet)
 
imported>SylvainBeucler
m (premier jet)
Ligne 4 : Ligne 4 :
  
  
== Nommage des cartes réseau ==
+
== Configuration IP de la passerelle ==
 +
 
 +
=== Nommage des cartes réseau ===
  
 
Pour s'y retrouver facilement, on peut renommer eth0, eth1, etc. avec des noms plus explicite.
 
Pour s'y retrouver facilement, on peut renommer eth0, eth1, etc. avec des noms plus explicite.
Ligne 15 : Ligne 17 :
  
 
TODO: il y a des fois des conflits avec udev sous Etch?
 
TODO: il y a des fois des conflits avec udev sous Etch?
 +
 +
=== Configuration des cartes réseau ===
 +
 +
La configuration est centralisée, sous Debian, dans <code>/etc/network/interfaces</code>.
 +
 +
Exemple pour le réseau local:
 +
auto eth-office
 +
iface eth-office inet static
 +
  address 192.168.1.1
 +
  netmask 255.255.255.0
 +
 +
Pour le réseau interne, cela dépend du type de connexion (PPPoE, DHCP sur le routeur, etc.)
  
 
== Routage IP ==
 
== Routage IP ==
  
La passerelle transmet les paquets qu'elle reçoit du réseau local vers l'Internet.
+
=== IP forwarding ===
 +
 
 +
La passerelle doit transmettre les paquets qu'elle reçoit du réseau local vers l'Internet.
  
 
Facile, c'est le noyau Linux qui s'en occupe. Cela se configure via <code>/etc/sysctl.conf</code>:
 
Facile, c'est le noyau Linux qui s'en occupe. Cela se configure via <code>/etc/sysctl.conf</code>:
Ligne 29 : Ligne 45 :
 
Note: précedemment configuré dans <code>/etc/network/options</code> - à migrer si c'est le cas sur une ancienne machine (cf. <code>/usr/share/doc/netbase/README.Debian</code>).
 
Note: précedemment configuré dans <code>/etc/network/options</code> - à migrer si c'est le cas sur une ancienne machine (cf. <code>/usr/share/doc/netbase/README.Debian</code>).
  
 
+
=== IP masquerading ===
== NAT ==
 
  
 
Un serveur Internet ne saura pas où envoyer une réponse à <code>192.168.1.10</code>, par exemple. Du coup, il faut modifier l'adresse IP source des paquets, et la remplacer l'adresse IP publique de la passerelle.
 
Un serveur Internet ne saura pas où envoyer une réponse à <code>192.168.1.10</code>, par exemple. Du coup, il faut modifier l'adresse IP source des paquets, et la remplacer l'adresse IP publique de la passerelle.
Ligne 38 : Ligne 53 :
 
Voir la partie ''Shared Internet access'' sur
 
Voir la partie ''Shared Internet access'' sur
 
[http://arch.savannah.gnu.org/archzoom/debmaintenance@sv.gnu.org/debmaintenance--main--0--LATEST/basic-firewall.txt debmaintenance]
 
[http://arch.savannah.gnu.org/archzoom/debmaintenance@sv.gnu.org/debmaintenance--main--0--LATEST/basic-firewall.txt debmaintenance]
 
=== Mise en place du masquerading ===
 
  
 
Cf. basic-firewall.txt
 
Cf. basic-firewall.txt
Ligne 69 : Ligne 82 :
 
== Serveur DHCP ==
 
== Serveur DHCP ==
  
DHCP permet d'attribuer des adresses locales aux postes connectés au réseau, avec configuration automatique des .
+
DHCP permet d'attribuer des adresses locales aux postes connectés au réseau, avec configuration automatique de l'adresse du routeur et des serveurs DNS.
  
 +
Configuration minimale, <code>/etc/dhcp3/dhcpd.conf</code>:
 +
ddns-update-style none;
 +
log-facility local7;
 +
authoritative;
 +
 +
option domain-name "masociete.local";
 +
option domain-name-servers 192.168.1.1;
 +
#option domain-name-servers ns1.example.org, ns2.example.org;
 +
 +
subnet 192.168.1.0 netmask 255.255.255.0 {
 +
  option domain-name-servers 192.168.1.1;
 +
  option routers 192.168.1.1;
 +
 +
  # Adresses dynamiques
 +
  range 192.168.1.110 192.168.1.127;
 +
 +
  # Adresses statiques
 +
  host hplj4200n { hardware ethernet 00:01:E6:84:7F:34; fixed-address 192.168.1.21; }
 +
  host miroir    { hardware ethernet 00:11:11:90:DF:37; fixed-address 192.168.1.50; }
 +
}
 +
 +
Notez ensuite le nom de l'interface réseau locale dans <code>/etc/default/dhcp3-server</code>:
 +
INTERFACES="eth-office"
 +
 +
Penser à ouvrir les ports dans le pare-feu pour DHCP (cf. basic-firewall.txt).
  
 
== Serveur DNS ==
 
== Serveur DNS ==
 +
 +
Il ne manque plus que la résolution de nom, pour lier par exemple <code>www.cliss21.com</code> à <code>87.98.154.26</code>.
 +
 +
On va ici utiliser bind (paquet <code>bind9</code>). Configuration dans <code>/etc/bind</code>
 +
 +
Sous Debian, on ne touche qu'à
 +
 +
Penser à ouvrir le port 53 udp+tcp (cf. basic-firewall.txt).
  
 
== Alternative: Dnsmasq ==
 
== Alternative: Dnsmasq ==
  
Le paquet <code>dnsmasq</code>
+
Le paquet <code>dnsmasq</code> fournit en même temps DHCP et DNS. Il relaie les requêtes DNS en utilisant le <code>/etc/resolv.conf</code> local.
 +
 
 +
Il suffit dans la plupart des cas, mais peut s'avérer plus limité qu'une configuration avec dhcp3-server et bind (question d'habitude, quelqu'un déjà familier de bind, serveur DNS générique, aura tendance à l'utiliser partout :)).
 +
 
 +
Configuration minimale <code>/etc/dnsmasq.conf</code>:
 +
dhcp-range=192.168.1.101,192.168.1.150,12h

Version du 2 mai 2007 à 15:23

Comment partager une connexion Internet avec le reste des locaux, ou comment faire un boitier routeur manuellement.

On étudie ici la configuration à partir d'une Debian Etch.


Configuration IP de la passerelle

Nommage des cartes réseau

Pour s'y retrouver facilement, on peut renommer eth0, eth1, etc. avec des noms plus explicite.

Le paquet ifrename peut être utilisé dans ce but. Exemple de configuration dans /etc/iftab:

eth-net         mac 00:0C:57:85:FE:45
eth-office      mac 00:19:71:54:AB:83

Le changement est pris en compte au redémarrage, ou en tapant ifrename avec les interfaces concernées down (iptables eth0 down).

TODO: il y a des fois des conflits avec udev sous Etch?

Configuration des cartes réseau

La configuration est centralisée, sous Debian, dans /etc/network/interfaces.

Exemple pour le réseau local:

auto eth-office
iface eth-office inet static
  address 192.168.1.1
  netmask 255.255.255.0

Pour le réseau interne, cela dépend du type de connexion (PPPoE, DHCP sur le routeur, etc.)

Routage IP

IP forwarding

La passerelle doit transmettre les paquets qu'elle reçoit du réseau local vers l'Internet.

Facile, c'est le noyau Linux qui s'en occupe. Cela se configure via /etc/sysctl.conf:

net.ipv4.conf.default.forwarding=1

Pour prendre en compte les paramètres:

sysctl -p /etc/sysctl.conf

Pour vérifier:

sysctl -a | grep default.forwarding

Note: précedemment configuré dans /etc/network/options - à migrer si c'est le cas sur une ancienne machine (cf. /usr/share/doc/netbase/README.Debian).

IP masquerading

Un serveur Internet ne saura pas où envoyer une réponse à 192.168.1.10, par exemple. Du coup, il faut modifier l'adresse IP source des paquets, et la remplacer l'adresse IP publique de la passerelle.

Cette technique s'appelle le masquerading, et fait partie du concept plus général du NAT (network address translation). Cela se fait au niveau du pare-feu, iptables.

Voir la partie Shared Internet access sur debmaintenance

Cf. basic-firewall.txt

iptables -t nat -A POSTROUTING -o eth-inet -j MASQUERADE

Modules noyau

Le masquerading est très utilisé mais ne respecte pas le protocole IP. Il peut occasionner des soucis, par exemple pour le protocole FTP qui utilise deux connexions simultanées (contrôle et données).

Rajouter dans /etc/modules:

ip_conntrack_ftp
ip_nat_ftp

MTU

Il y a également des problèmes de taille de paquets trop gros. Sans entrer dans les détails, il s'agit du problème du MTU (maximum transfert unit).

Rajouter la ligne correspondante dans le pare-feu.

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth-inet --clamp-mss-to-pmtu

Droits

On ne fait du routage que pour le réseau interne. Pas question de router des paquets pour les extérieurs. Les paquets transmis, avant d'êtres NATés, passent par la règle FORWARD d'iptables:

iptables -A FORWARD -i eth-office -j ACCEPT
iptables -A FORWARD -i eth-inet -o eth-office -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -j REJECT


Serveur DHCP

DHCP permet d'attribuer des adresses locales aux postes connectés au réseau, avec configuration automatique de l'adresse du routeur et des serveurs DNS.

Configuration minimale, /etc/dhcp3/dhcpd.conf:

ddns-update-style none;
log-facility local7;
authoritative;
option domain-name "masociete.local";
option domain-name-servers 192.168.1.1;
#option domain-name-servers ns1.example.org, ns2.example.org;

subnet 192.168.1.0 netmask 255.255.255.0 {
 option domain-name-servers 192.168.1.1;
 option routers 192.168.1.1;
 # Adresses dynamiques
 range 192.168.1.110 192.168.1.127;
 # Adresses statiques
 host hplj4200n { hardware ethernet 00:01:E6:84:7F:34; fixed-address 192.168.1.21; }
 host miroir    { hardware ethernet 00:11:11:90:DF:37; fixed-address 192.168.1.50; }
}

Notez ensuite le nom de l'interface réseau locale dans /etc/default/dhcp3-server:

INTERFACES="eth-office"

Penser à ouvrir les ports dans le pare-feu pour DHCP (cf. basic-firewall.txt).

Serveur DNS

Il ne manque plus que la résolution de nom, pour lier par exemple www.cliss21.com à 87.98.154.26.

On va ici utiliser bind (paquet bind9). Configuration dans /etc/bind

Sous Debian, on ne touche qu'à

Penser à ouvrir le port 53 udp+tcp (cf. basic-firewall.txt).

Alternative: Dnsmasq

Le paquet dnsmasq fournit en même temps DHCP et DNS. Il relaie les requêtes DNS en utilisant le /etc/resolv.conf local.

Il suffit dans la plupart des cas, mais peut s'avérer plus limité qu'une configuration avec dhcp3-server et bind (question d'habitude, quelqu'un déjà familier de bind, serveur DNS générique, aura tendance à l'utiliser partout :)).

Configuration minimale /etc/dnsmasq.conf:

dhcp-range=192.168.1.101,192.168.1.150,12h