Internet sharing (Français)

État de la traduction:
Cet article est la version francophone de
Internet sharing
. Date de la dernière traduction: 2022-01-27. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Android tethering
Software access point
Bridge with netctl
Ad-hoc networking
Sharing PPP Connection
Simple stateful firewall
Router
USB 3G Modem
Cet article explique la marche à suivre pour partager une connexion Internet d'une machine à une autre.
Pré-requis
La machine fonctionnant comme le serveur devra posséder une interface réseau supplémentaire pour établir le lien (
data link layer
) avec la machine qui recevra la connexion Internet:
Pour partager Internet avec plusieurs machines un
switch
peut fournir la connexion
physique
.
Un périphérique sans fil peut également partager une conexion vers plusieurs machines, voir
Software access point
(en) en premier lieu.
Si vous partagez l'accès à une seule machine un câble croisé
(crossover cable)
peut suffir. Dans le cas de deux ordinateurs ayant des carte ethernet activant la fonctionnalité
MDI-X
, un câble normal suffit. Executez
ethtool
interface
| grep MDI
en tant que root pour en connaitre la disponibilité.
Configuration
Cette section suppose que le périphérique réseau connecté à l'ordinateur client est nommé
net0
et que le périphérique réseau connecté à Internet est
internet0
.
Astuce
Vous pouvez renommer vos interfaces à votre convenance. Voir
udev#Setting static device names
.
Toute la configuration s'effectue sur l'ordinateur serveur, sauf l'étape finale
#Attribution d'adresses IP au(x) PC client(s)
.
Adresse IP statique
Sur l'ordinateur serveur assignez une adresse statique IPv4 à l'interface connectée aux autres machines. Les 3 premiers bytes de cette adresse ne pourront pas être les mêmes que ceux d'une autre interface, à moins que chaque interface ait un netmasks strictement suppérieur à /24.
# ip link set up dev net0
# ip addr add 192.168.123.100/24 dev net0 # arbitrary address
Pour assigner une adresse statique lors du démarrage, vous pouvez utiliser un
gestionnaire de connexion réseau
.
Activer la retransmission des paquets
Pour consulter l'état actuel:
# sysctl -a | grep forward
Remarquez que des options existent pour activer la la retransmission de paquet par défaut, par interface, ainsi que des options pour IPv4/IPv6 par interface.
Pur activer la retransmission des paquets après démarrage utilisez:
# sysctl net.ipv4.ip_forward=1
Astuce
Pour activer la retransmission de paquet pour une interface en particulier utilisez
sysctl net.ipv4.conf.
interface_name
.forwarding=1
à la place.
Attention
Si votre système utilise
systemd-networkd
pour contrôler les interfaces réseau, un réglage pour chaque interface n'est pas possible en IPV4, voir
systemd.network(5)
Éditez
/etc/sysctl.d/30-ipforward.conf
pour établir les définitivement le changement après redémarrage pour toutes les interfaces:
/etc/sysctl.d/30-ipforward.conf
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
Après ceci, il est conseillé de bien vérifier que le «packet forwarding» est bien actif après reboot.
Activer le NAT
Avec iptables
Installez
le paquet
iptables
. Et utilisez
iptables
pour activer le NAT:
# iptables -t nat -A POSTROUTING -o internet0 -j MASQUERADE
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i net0 -o internet0 -j ACCEPT
Note
Bien sûr cela fonctionne également avec une connexion mobile (généralement appellée
ppp0
sur le PC "routeur").
Si vous êtes connecté via PPPoE, bloquez mss sur pmtu afin d'éviter la fragmentation :
# iptables -t mangle -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Lisez l'article
iptables
pour plus d'informations (notamment pour enregistrer la règle et l'appliquer automatiquement au démarrage). Il existe également un excellent guide sur iptables
Simple stateful firewall
.
Avec nftables
Installez
le paquet
nftables
. Pour activer le NAT avec
nftables
, vous devrez créer la chaîne
postrouting
dans une table nouvelle/existante :
# nft add table inet nat
# nft add chain inet nat postrouting '{type nat hook postrouting priority 100 ; }'.
Ensuite, vous devez masquer les adresses
net0
pour
internet0
:
# nft add rule inet nat postrouting oifname internet0 masquerade
Vous pouvez ajouter d'autres restrictions de pare-feu sur le transfert (en supposant que la table de filtres existe déjà, comme configuré dans
nftables#Server
) :
# nft add chain inet filter forward '{ type filter hook forward priority 0 ; policy drop ; }'.
# nft add rule inet filter forward ct state related,established accept
# nft add rule inet filter forward iifname net0 oifname internet0 accept
Vous pouvez trouver plus d'informations sur le NAT dans nftables dans le
Wiki nftables (en)
. Si vous voulez rendre ces changements permanents, suivez les instructions sur l'article
nftables
en anglais.
Attribution d'adresses IP au(x) PC client(s)
Si vous prévoyez d'avoir régulièrement plusieurs machines utilisant l'internet partagé par cette machine, c'est une bonne idée d'installer un serveur
DHCP
, tel que
dhcpd
ou
dnsmasq
. Configurez ensuite un client DHCP (par exemple
dhcpcd
) sur chaque PC client.
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Ce n'est pas un guide sur iptables. L'expansion de la chaîne avec
iptables -I
pourrait sauter d'autres règles importantes ; si vous avez besoin d'un interrupteur ON/OFF pour cela, utilisez une chaîne personnalisée avec un saut placé soigneusement dans la chaîne INPUT. (Discuss in
Talk:Internet sharing
)
Les connexions entrantes vers le port UDP 67 doivent être autorisées pour le serveur DHCP. Il est également nécessaire d'autoriser les connexions entrantes sur le port UDP/TCP 53 pour les requêtes DNS.
# iptables -I INPUT -p udp --dport 67 -i net0 -j ACCEPT
# iptables -I INPUT -p udp --dport 53 -s 192.168.123.0/24 -j ACCEPT
# iptables -I INPUT -p tcp --dport 53 -s 192.168.123.0/24 -j ACCEPT
Si vous ne prévoyez pas d'utiliser cette configuration régulièrement, vous pouvez ajouter manuellement une IP à chaque client.
Ajout manuel d'une IP
Au lieu d'utiliser DHCP, une adresse IP statique et une route par défaut via
192.168.123.100
peuvent également être configurées manuellement. Il existe de nombreux outils permettant de configurer le réseau en conséquence. Un exemple important d'un tel outil est
ip(8)
, consultez
Network configuration#Network management
. On peut également utiliser un fichier
.network
, consultez l'article concernant
Systemd-networkd
pour configurer une IP statique.
Configurez un serveur DNS pour chaque client, consultez l'article concernant la
résolution de noms de domaine
pour plus de détails.
Le tour est joué. Le PC client devrait maintenant avoir Internet.
Dépannage
Si vous pouvez connecter les deux PC mais que vous ne pouvez pas envoyer de données (par exemple, si le PC client fait une demande DHCP au PC serveur, que ce dernier reçoit la demande et offre une IP au client, mais que ce dernier ne l'accepte pas et s'arrête), vérifiez que vous n'avez pas d'autres règles
iptables
interférant
.
Voir aussi
le guide Xyne (avec scripts) pour lancer un sous-réseau avec DHCP et DNS
NetworkManager
peut être utilisé pour configurer un partage de connexion.