Si votre réseau privé contient des informations vitales, repensez y à deux fois avant d'utiliser IP Masquerade. Cela constitue une passerelle pour vous, pour atteindre Internet, mais la réciproque est vraie et quelqu'un sur Internet pourrait pénétrer sur votre réseau privé.
Si votre distribution de Linux a déjà les fonctionnalités necessaires et les modules de compilés (la majorité des noyaux modulaires auront ce dont vous avez besoin) mentionnés ci-dessous, alors vous n'avez pas à recompiler le noyau. La lecture de cette section est quand meme largement recommandée car elle contient aussi d'autres informations très utiles.
/usr/src/
avec la commande :
tar xvzf linux-2.2.x.tar.gz -C /usr/src
, ou x est la version du
noyau. linux
)
Dites YES aux options suivantes :
* Prompt for development and/or incomplete code/drivers
CONFIG_EXPERIMENTAL
- Ceci vous permettra de selectionner le code experimental IP Masquerade.
* Enable loadable module support
CONFIG_MODULES
- Vous permet de charger les modules ipmasq tel ip_masq_ftp.o
* Networking support
CONFIG_NET
* Network firewalls
CONFIG_FIREWALL
* TCP/IP networking
CONFIG_INET
* IP: forwarding/gatewaying
CONFIG_IP_FORWARD
* IP: firewalling
CONFIG_IP_FIREWALL
* IP: masquerading
CONFIG_IP_MASQUERADE
* IP: ipportfw masq support
CONFIG_IP_MASQUERADE_IPPORTFW
- Recommandé
* IP: ipautofw masquerade support
CONFIG_IP_MASQUERADE_IPAUTOFW
- Optionnel
* IP: ICMP masquerading
CONFIG_IP_MASQUERADE_ICMP
- Support pour masquerader les paquets ICMP, recommandé
* IP: always defragment
CONFIG_IP_ALWAYS_DEFRAG
- Chaudement recommandé
* Dummy net driver support
CONFIG_DUMMY
- Recommandé
* IP: ip fwmark masq-forwarding support
CONFIG_IP_MASQUERADE_MFW
- Optionnel
NOTE : Voici juste les composants qu'il faut pour que l'IP Masquerade marche, selectionnez les options spécifiques dont vous avez besoin pour votre systeme.
make modules; make modules_install
/etc/rc.d/rc.local
(ou le fichier que vous trouvez plus approprié)
pour charger les modules résidants dans /lib/modules/2.2.x/ipv4/
automatiquement à chaque redémarrage.
.
.
.
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
(Et d'autres modules tels ip_masq_cuseeme, ip_masq_vdolive
Si vous avez appliqués les patchs)
.
.
.
IMPORTANT: IP forwarding est désactivé par défaut pour les noyaux 2.2.x,
alors, assurez vous de bien l'avoir activé en faisant : echo "1" >
/proc/sys/net/ipv4/ip_forwarding
Pour les utilisateurs de RedHat, vous pouvez essayer de changer
FORWARD_IPV4=false
en FORWARD_IPV4=true
dans
/etc/sysconfig/network
/usr/src/
avec la commande tar xvzf linux-2.0.x.tar.gz -C /usr/src
, où x est le
numéro de révision du noyau.linux
)Répondre YES à :
* Prompt for development and/or incomplete code/drivers
CONFIG_EXPERIMENTAL
- Cela vous permettra de pouvoir sélectionner IP Masquerade,
qui est expérimental.
* Enable loadable module support
CONFIG_MODULES
- Permet le chargement des modules.
* Networking support
CONFIG_NET
* Network firewalls
CONFIG_FIREWALL
* TCP/IP networking
CONFIG_INET
* IP: forwarding/gatewaying
CONFIG_IP_FORWARD
* IP: firewalling
CONFIG_IP_FIREWALL
* IP: masquerading (EXPERIMENTAL)
CONFIG_IP_MASQUERADE
- bien que cela soit expérimental, il *FAUT* l'intégrer
* IP: ipautofw masquerade support (EXPERIMENTAL)
CONFIG_IP_MASQUERADE_IPAUTOFW
-recommended
* IP: ICMP masquerading
CONFIG_IP_MASQUERADE_ICMP
- support for masquerading ICMP packets, optionnel.
* IP: always defragment
CONFIG_IP_ALWAYS_DEFRAG
- très recommendé
* Dummy net driver support
CONFIG_DUMMY
- recommendé
NB : Ce sont juste les composants dont vous avez besoin pour l'IP Masquerade. Ajoutez toute autre option nécessaire pour votre configuration personnelle.
make modules; make modules_install
/etc/rc.d/rc.local
(ou dans le fichier approprié), pour charger automatiquement les modules
nécessaires dans /lib/modules/2.0.x/ipv4/
, après chaque reboot :
.
.
.
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp.o
/sbin/modprobe ip_masq_raudio.o
/sbin/modprobe ip_masq_irc.o
(et tout autre module, comme ip_masq_cuseeme, ip_masq_vdolive si vous avez appliqué les patches)
.
.
.
IMPORTANT: IP forwarding est désactivé par défaut depuis le noyau 2.0.34
alors, assurez vous de bien l'avoir activé en faisant : echo "1" >
/proc/sys/net/ipv4/ip_forwarding
Pour les utilisateurs de RedHat, vous pouvez essayer de changer
FORWARD_IPV4=false
en FORWARD_IPV4=true
dans
/etc/sysconfig/network
Puisque toutes les AUTRES machines n'ont pas d'adresse IP officielle, il faut leur en allouer de manière intelligente.
Selon la FAQ d'IP Masquerade :
Il existe un RFC (#1597, qui doit etre obsolete maintenant) qui indique quelles adresses IP assigner à un réseau non connecté. Il existe 3 plages réservées spécialement à cet effet. Une de celles que j'utilise est un sous réseau de classe C, faisant partie de la plage allant de 192.168.1.n à 192.168.255.n.
Selon le RFC 1597~:
Section 3~: Adressage de réseaux privés
L' "Internet Assigned Numbers Authority" (IANA) a réservé les 3 plages
suivantes pour leur utilisation par des réseaux privés~:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Nous ferons référence à la première en tant que la "plage de 24 bits", la
deuxième comme "plage de 20 bits" et la troisième comme "plage de 16 bits".
Notez que la première plage n'est rien d'autre qu'un réseau de classe A, la
deuxième un ensemble de 16 réseaux de classe B contigus, et la troisième un
ensemble de 255 réseaux de classe C contigus.
Ainsi, si vous utilisez un réseau de classe C, vous devrez utiliser les adresses IP 192.168.1.1, 1.92.168.1.2, 1.92.168.1.3, ..., 192.168.1.x
192.168.1.1 est habituellement la machine passerelle, qui est ici votre machine Linux se connectant à Internet. Remarquez que 192.168.1.0 et 192.168.1.255 sont respectivement les adresses de réseau et de broadcast, qui sont réservées. Evitez d'utiliser ces adresses sur vos machines.
En plus d'affecter les adresses IP pour chaque machine, vous devrez indiquer la bonne passerelle. En général, c'est plutôt simple. Vous entrez juste l'adresse de votre machine Linux (généralement 192.168.1.1) en tant qu'adresse de passerelle.
Pour le DNS, vous pouvez utiliser n'importe quel DNS utilisable. Le plus simple est d'utiliser celui qu'utilise votre machine Linux. Vous pouvez aussi, si vous le désirez, ajouter des suffixes d'ordre de recherche DNS.
Une fois configurées ces adresses IP, n'oubliez pas de relancer les programmes concernés, ou de rebooter vos machines.
Les instructions de configuration qui suivent supposent que vous utilisez un réseau de classe C, et que votre machine Linux a pour adresse 192.168.1.1. Notez que 192.168.1.0 et 192.168.1.255 sont réservées.
/etc/resolv.conf
). Vous pouvez éventuellement ajouter les suffixes de
domaine adéquats.Ping
uez la machine Linux pour tester la connexion réseau : Démarrer /
Executer, tapez: ping 192.168.1.1
ping
uer
l'extérieur).HOSTS
dans le répertoire de
Windows, pour que vous puissiez utiliser les noms d'hôtes des autres machines
de votre réseau local. Il y a un exemple nommé HOSTS.SAM
dans le
répertoire Windows.
Ping
ez la machine Linux pour tester la connexion réseau : Fichier /
Exécuter, taper : ping 192.168.1.1
ping
er le monde
extérieur.
[1]Novell NE2000 Adapter
. Entrez l'adresse
IP 192.168.1.x (1 < x < 255), positionnez le masque de sous réseau sur
255.255.255.0 et la passerelle par défaut à 192.168.1.1.Ping
ez la machine Linux pour tester la connexion réseau : Fichier /
Exécuter, taper : ping 192.168.1.1
ping
er le monde
extérieur).
/etc/sysconfig/network-scripts/ifcfg-eth0
, ou simplement le
faire par l'intermédiaire du Control Panel. /etc/resolv.conf
./etc/networks
, selon votre configuration.ping
:
ping 192.168.1.1
. ping
er l'extérieur.
nwpd 0x60 10
0x300
, si votre carte utilise l'IRQ 10 et l'adresse d'entrée/sortie
0x300.pkunzip tel2308b.zip
config.tel
.myip=192.168.1.x
(1 < x < 255), et
netmask=255.255.255.0
.hardware=packet, interrupt=10,
ioaddr=60
.
name=default
host=le_nom_de_votre_hote_linux hostip=192.168.1.1 gateway=1
name=dns.domain.com~; hostip=123.123.123.123; nameserver=1
NB: remplacez les champs par les informations qu'utilise votre machine
Linux.config.tel
.telnet 192.168.1.1
.
ping
er l'hôte Linux pour tester la
connexion réseau. Si vous avez le programme freeware MacTCP Watcher,
cliquez sur le bouton Ping et entrez l'adresse de votre hôte Linux
(192.168.1.1) dans la boîte de dialogue qui apparait. (C'est uniquement une
connexion locale, vous ne pouvez pas encore ping
er l'extérieur).
Hosts
dans votre
dossier système, pour pouvoir utiliser les noms d'hôte des machines de votre
réseau local. Le fichier devrait déjà exister dans votre dossier système, et
contenir quelques exemples commentés, que vous n'avez qu'à modifier pour
correspondre à vos besoins.
Ping
ez la machine Linux pour tester la connexion réseau. Si vous avez le
programme freeware MacTCP Watcher, cliquez sur le bouton
Ping, et entrez l'adresse de votre machine Linux (192.168.1.1) dnas
la boite de dialogue qui apparait. (C'est une connexion locale, vous ne pouvez
pas encore ping
er l'extérieur).Hosts
dans votre dossier Système, pour
pouvoir utiliser les noms d'hotes de votre réseau local. Le fichier peut
exister ou non dans votre dossier Système. Si c'est le cas, il devrait
contenir des exemples (en commentaires) que vous pouvez modifier selon vos
souhaits. Sinon, vous pouvez obtenir une copie d'un système utilisant MacTCP,
ou juste créer le votre (cela ressemble fortement au fichier
/etc/hosts
sur un système Unix, qui est décrit dans la RFC 952). Une
fois le fichier créé, ouvrez le Tableau de bord TCP/IP, cliquez sur
le bouton Sélectionner le fichier Hosts..., et ouvrez le fichier
Hosts
.
c:\nwclient\startnet.bat
(voici une copie du mien) :
SET NWLANGUAGE=ENGLISH LH LSL.COM LH KTC2000.COM LH IPXODI.COM LH tcpip LH VLM.EXE F:
c:\nwclient\net.cfg
(changez le Link drivers
,
NE2000 dans mon cas) :
Link Driver KTC2000 Protocol IPX 0 ETHERNET_802.3 Frame ETHERNET_802.3 Frame Ethernet_II FRAME Ethernet_802.2 NetWare DOS Requester FIRST NETWORK DRIVE = F USE DEFAULTS = OFF VLM = CONN.VLM VLM = IPXNCP.VLM VLM = TRAN.VLM VLM = SECURITY.VLM VLM = NDS.VLM VLM = BIND.VLM VLM = NWP.VLM VLM = FIO.VLM VLM = GENERAL.VLM VLM = REDIR.VLM VLM = PRINT.VLM VLM = NETX.VLM Link Support Buffers 8 1500 MemPool 4096 Protocol TCPIP PATH SCRIPT C:\NET\SCRIPT PATH PROFILE C:\NET\PROFILE PATH LWP_CFG C:\NET\HSTACC PATH TCP_CFG C:\NET\TCP ip_address xxx.xxx.xxx.xxx ip_router xxx.xxx.xxx.xxx
c:\bin\resolv.cfg
:
SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9
ping
er votre hôte Linux pour tester la
configuration réseau. Taper 'ping 192.168.1.1"
dans une boîte de commande
OS/2. Si vous recevez les paquets IP, tout fonctionne correctement.
Ces systèmes devraient suivre la meme logique d'installation. Lisez les sections précédentes. Si vous êtes intéressés par l'écriture de la documentation sur n'importe quel système, comme OS/2, ou une variété quelconque de système Unix, envoyez s'il vous plait des instructions détaillées à ambrose@writeme.com (Note du traducteur : en anglais bien sûr).
A ce point du document, vous devriez avoir votre noyau et les autres packages installés, ainsi que les modules nécessaires chargés. De plus, les adresses IP, la passerelle, et le DNS devraient être installés sur les AUTRES ordinateurs.
Maintenant, la seule chose à faire est d'utiliser l'outil de firewalling IP (ipfwadm) pour faire suivre les paquets appropriés à la machine qui convient :
** Ceci peut être fait de diverses façons. Les suggestions et exemples suivants fonctionnent pour moi, mais il se peut que vous ayez d'autres idées. Je vous renvoie à la section 4.4 et aux pages de manuel de ipchains(2.2.x) / ipfwadm(2.0.x) pour plus de détails. **
** Cette section fournis UNIQUEMENT le minimum de règles pour avoir un l'IP Masquerade opérationnel, les problemes de sécurités ne sont pas considérés. Il est fortement recommandé que vous passiez quelque temps pour appliquer quelques règles de firewalling appropriées pour augmenter la sécurité. **
ipfwadm n'est plus l'outil à utiliser pour manipuler les règles ipmasq pour les noyaux 2.2.x, utilisez ipchains.
ipchains -P forward DENY
ipchains -A forward -s yyy.yyy.yyy.yyy/x -j MASQ
Où x est le nombre correspondant a la classe de votre sous réseau, et yyy.yyy.yyy.yyy est l'adresse de votre réseau.
netmask | x | Subnet
~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
255.0.0.0 | 8 | Class A
255.255.0.0 | 16 | Class B
255.255.255.0 | 24 | Class C
255.255.255.255 | 32 | Point-to-point
Vous pouvez aussi utiliser le format yyy.yyy.yyy.yyy/xxx.xxx.xxx.xxx, où xxx.xxx.xxx.xxx spécifie votre masque de sous réseau tel 255.255.255.0
Par exemple dans mon réseau de classe C, j'entrais ;
ipchains -P forward DENY
ipchains -A forward -s 192.168.1.0/24 -j MASQ
ou
ipchains -P forward DENY
ipchains -A forward -s 192.168.1.0/255.255.255.0 -j MASQ
Vous pouvez aussi le faire machine par machine. Par exemple, si je veux que 192.168.1.2 et 192.168.1.8 aient accès à Internet, mais pas les autres machines, j'aurais mis :
ipchains -P forward DENY
ipchains -A forward -s 192.168.1.2/32 -j MASQ
ipchains -A forward -s 192.168.1.8/32 -j MASQ
Il ne faut jamais que votre règle par défaut soit le masquerading, sinon n'importe qui pouvant manipuler ses tables de routage pourra utiliser votre machine Linux pour masquer son identité !
De même, vous pouvez ajouter ces lignes a votre /etc/rc.local
, ou au
fichier rc que vous préférez, ou le faire manuellement à chaque fois que vous
en avez besoin.
Pour plus de détails sur ipchain, référez vous au Linux IPCHAINS HOWTO
ipfwadm -F -p deny
ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0
ou
ipfwadm -F -p deny
ipfwadm -F -a masquerade -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0
Où x est le nombre correspondant à la classe de votre sous reseau, et yyy.yyy.yyy.yyy est l'adresse de votre réseau.
Masque de sous réseau | x | Sous réseau
~~~~~~~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
255.0.0.0 | 8 | Classe A
255.255.0.0 | 16 | Classe B
255.255.255.0 | 24 | Classe C
255.255.255.255 | 32 | Point-to-point (PPP)
Vous pouvez aussi utiliser le format yyy.yyy.yyy.yyy/xxx.xxx.xxx.xxx, où xxx.xxx.xxx.xxx spécifie votre masque de sous réseau tel 255.255.255.0
Par exemple dans mon réseau de classe C, j'entrais ;
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
Puisque les paquets de demande de bootp arrivent sans adresse IP valide alors que le client ne connait rien de lui, les personnes utilisant un serveur bootp comme machine de masquerading/firewall devront utiliser la commande suivante avant la commande deny :
ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp
Vous pouvez également faire cela machine par machine. Par exemple, si je veux que 192.168.1.2 et 192.168.1.8 aient accès à Internet, mais pas les autres machines, j'utiliserai :
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0
ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0
Une erreur fréquente est d'utiliser comme première règle la commande :
ipfwadm -F -p masquerade
Il ne faut jamais que votre règle par défaut soit le masquerading, sinon n'importe qui pouvant manipuler ses tables de routage pourra utiliser votre machine Linux pour masquer son identité !
Une fois encore, vous pouvez ajouter ces lignes à vos fichiers
/etc/rc.local
, ou le faire manuellement à chaque fois que vous avez
besoin de l'IP Masquerading.
Veuillez lire la section 4.4 pour des instructions détaillées sur Ipfwadm.
Il est maintenant temps de tester notre travail. Assurez vous que la connexion de votre hôte Linux à Internet est correcte.
Vous pouvez par exemple essayer de parcourir quelques sites Web (sur Internet !!!) depuis vos AUTRES machines, et voir ce que vous obtenez. Je recommande d'utiliser une adresse IP plutôt qu'un nom DNS lors de votre premier essai, puisque votre réglage pour le DNS peut être incorrect.
Par exemple, vous pouvez accéder au site Web du Linux Documentation Project à http://metalab.unc.edu/mdw/linux.html en entrant http://152.19.254.81/mdw/linux.html
Si vous voyez la page du LDP, félicitations ! Ca marche ! Vous pouvez alors essayer avec un autre hôte, puis ping, telnet, ssh, ftp, Real Audio, True Speech, etc...
Pour l'instant je n'ai eu aucun problème avec ces réglages, et c'est totalement grâce aux personnes qui ont passé du temps à faire fonctionner cette superbe fonctionnalité de Linux.