Accueil Pour les confirmés Partager sa connexion internet sans routeur
Partager sa connexion internet sans routeur
Linux - Pour les confirmés
Écrit par Morgan   
Dimanche, 15 Juin 2008 23:54

Il arrive parfois de posséder un modem dont on ne peut dupliquer la connexion sans switch/hub/routeurs,...C'est le cas de bien des modems 56k voir parfois des modems ADSL.

 

Nous allons voir comment partager la connexion entre un pc relié directement à internet et un autre ordinateur necessitant l'acces au net pour BOINC par exemple.

 

 

 Prenons le cas d'un ordinateur ayant accès à internet par un modem interne 56k et un second PC. Les deux possèdant une carte réseau.

Assurez vous d'avoir 2 interfaces réseau sur votre PC mère (celui qui a l'acces direct à internet).

Dans mon cas d'un modem interne 56k, la connexion ppp0 est utilisé par celui ci, et le port eth0 libre.

Pour connaitre vos interfaces réseau, tapez en console :

ifconfig

 

 Vous aurez la liste de vos interfaces. Bien souvent, il s'agit de eth0 ou eth1 pour votre port ethernet.

 

Requis : 

Installer le paquet  dnsmasq :

sudo apt-get install dnsmasq

 

Le cable ethernet doit etre débranché avant de continuer !

 

Puis:

Ouvrez la configuration du réseau (Système→Administration→Réseau)

Cliquez sur la carte réseau avec laquelle vous voulez partager et changez les cases, dans l'ordre :

Configuration : Adresse IP statique

Adresse IP : 192.168.10.1

Masque de sous-réseau : 255.255.255.0

Passerelle : Ne rien mettre

Validez et quittez

 

Maintenant que la carte réseau est configurer, il faut configurer le dnsmasq.

- Faire une copie de ficher de configuration :

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup


 - Editez le ficher de configuration

sudo gedit /etc/dnsmasq.conf

 

Et remplacer le contenu par :

# Fichier de Configuration pour dnsmasq.
#
# pour éviter de fournir du trafic DHCP/DNS inutile du coté internet
##domain-needed
bogus-priv
# (Optionnel) Si vous avez une ip fixe,
# décommentez cette ligne.
# no-poll
# pour limiter l'écoute de requêtes DHCP du coté réseau local
interface=eth0
# nom de votre domaine pour dnsmasq
domain=inet
# activez le serveur DHCP:
dhcp-range=192.168.10.100,192.168.10.150,255.255.255.0,12h


Modifiez à la ligne 10 contenant "interface=eth0", eth0 par votre interface qui partagera la connexion. (Souvent eth0 est deja la bonne interface)

Enregistrez puis fermez.

 

Faire un script d'éxécution automatique du partage de connexion.

Créer le script /etc/init.d/iptables :

sudo gedit /etc/init.d/iptables

 

 Collez les lignes suivantes:

#!/bin/sh
#
# Script de démarrage qui lance l'interface réseau internet,
# met en place un firewall basique et un partage de connexion
#
# Inspiré du script de Mjules_at_ifrance.com
#
interface=ppp0


start() {

# init du la périphérique internet (ici derriere un modem ADSL ethernet, DHCP client)

/sbin/ifup $interface
# Dans cette partie, on met en place le firewall
#vidage des chaines
iptables -F
#destruction des chaines personnelles
iptables -X

#stratégies par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#init des tables NAT et MANGLE (pas forcément nécessaire)
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT


# Acceptation de toutes les connexions en local (un process avec l'autre)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# PORT FORWARDING:
# attention : on ne peut malheureusement pas mettre un nom de machine en destination, il faut mettre l'adresse IP.
# exemple : on veut qu'un serveur HTTP installé sur une machine du réseau local soit visible depuis l'extérieur.

###iptables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j DNAT --to-destination 192.168.10.121:80
###iptables -A FORWARD -p tcp -i $interface --dport 80 -j ACCEPT


#création d'une nouvelle règle
iptables -N MAregle

#définition de la règle : accepter les nouvelles connexions ne venant pas de l'interface internet
# et accepter toutes les connexions établies et reliées (ex: une demande de page HTML provoque l'ouverture
# d'une connexion reliée pour acheminer cette page vers l'ordinateur)

iptables -A MAregle -m state --state NEW -i! $interface -j ACCEPT
iptables -A MAregle -m state --state ESTABLISHED,RELATED -j ACCEPT


#application de la règle au partage de connexion
iptables -A INPUT -j MAregle
iptables -A FORWARD -j MAregle


# activation du forwarding dans le noyau
# mise en place du partage de connexion sur le réseau local


echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o $interface -j MASQUERADE

}

stop() {
echo 0 >/proc/sys/net/ipv4/ip_forward
ifdown $interface
}

case "" in
start)
start
;;

stop)
stop
;;

restart)
stop && start
;;

*)

echo "Usage {xtypo_code} #!/bin/sh
#
# Script de démarrage qui lance l'interface réseau internet,
# met en place un firewall basique et un partage de connexion
#
# Inspiré du script de Mjules_at_ifrance.com
#
interface=ppp0


start() {

# init du la périphérique internet (ici derriere un modem ADSL ethernet, DHCP client)

/sbin/ifup $interface
# Dans cette partie, on met en place le firewall
#vidage des chaines
iptables -F
#destruction des chaines personnelles
iptables -X

#stratégies par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#init des tables NAT et MANGLE (pas forcément nécessaire)
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT


# Acceptation de toutes les connexions en local (un process avec l'autre)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# PORT FORWARDING:
# attention : on ne peut malheureusement pas mettre un nom de machine en destination, il faut mettre l'adresse IP.
# exemple : on veut qu'un serveur HTTP installé sur une machine du réseau local soit visible depuis l'extérieur.

###iptables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j DNAT --to-destination 192.168.10.121:80
###iptables -A FORWARD -p tcp -i $interface --dport 80 -j ACCEPT


#création d'une nouvelle règle
iptables -N MAregle

#définition de la règle : accepter les nouvelles connexions ne venant pas de l'interface internet
# et accepter toutes les connexions établies et reliées (ex: une demande de page HTML provoque l'ouverture
# d'une connexion reliée pour acheminer cette page vers l'ordinateur)

iptables -A MAregle -m state --state NEW -i! $interface -j ACCEPT
iptables -A MAregle -m state --state ESTABLISHED,RELATED -j ACCEPT


#application de la règle au partage de connexion
iptables -A INPUT -j MAregle
iptables -A FORWARD -j MAregle


# activation du forwarding dans le noyau
# mise en place du partage de connexion sur le réseau local


echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o $interface -j MASQUERADE

}

stop() {
echo 0 >/proc/sys/net/ipv4/ip_forward
ifdown $interface
}

case "$1" in
start)
start
;;

stop)
stop
;;

restart)
stop && start
;;

*)

echo "Usage $0 {start|stop|restart}"

exit 1

esac

exit 0{/xtypo_code} {start|stop|restart}"

exit 1

esac

exit 0

 

 

Modifiez la ligne 9 contenant interface=ppp0 par l'interface que vous voulez partagez (Pour ma part, mon modem 56k est sur l'interface ppp0 selon ipconfig, je n'ai donc rien a changer)

Enregistrez puis fermez.

 

Puis dans un terminal, rendez éxecutable ce fichier créé précédement :

sudo chmod +x /etc/init.d/iptables

 

Puis faites:

sudo update-rc.d iptables start 99 2 . stop 00 2 0 1 6 .

 

 

 

Et voila, votre PC "mère" est configuré. Assurez vous que l'interface réseau de  votre second ordinateur est bien en automatique (DHCP). Branchez le cable ethernet, redemarrez le PC mère puis votre second ordinateur. 

 

Tuto sur la base de wiki d'Ubuntu-fr

 

Mise à jour le Vendredi, 04 Juillet 2008 13:05