FAQ LinuxConsultez toutes les FAQ

Nombre d'auteurs : 56, nombre de questions : 258, dernière mise à jour : 26 juin 2020  Ajouter une question

 

Cette FAQ a été réalisée à partir des contributions des membres du forum Linux de Developpez.com et de l'équipe de rédaction. Merci à eux !

Nous sommes perpétuellement à l'écoute de vos suggestions et corrections, n'hésitez pas à nous en faire part sur le forum.


SommaireLinux en réseau (13)
précédent sommaire suivant
 

Placez les URL dans un fichier texte (nommé par exemple pg_dwd) et tapez simplement :

Code bash : Sélectionner tout
$ wget -i pg_dwd

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Sur un réseau /24 (anciennement "classe C") :

Code bash : Sélectionner tout
$ ping -b 192.168.0.255

L'adresse IP dépend de l'adresse de broadcast (diffusion) du réseau.

Si par exemple vous avez un serveur DHCP qui vous fournit automatiquement une IP :

Code bash : Sélectionner tout
$ ifconfig ethX

Cette commande vous donnera l'adresse de broadcast.

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Oui. Vous pouvez utiliser Links ou Lynx (présents dans la plupart des distributions) ou encore w3m.

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Mettez dans un script au démarrage (par exemple : /etc/rc.local)

Code bash : Sélectionner tout
1
2
3
4
5
6
7
8
#Active le forwarding dans le kernel  
echo 1 > /proc/sys/net/ipv4/ip_forward                 
# Efface les règles actuelles  
iptables -F                                            
# idem  
iptables -t nat -F                                     
# Active le routage vers ppp0 
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Mis à jour le 23 octobre 2013 ok.Idriss vic

Voici diverses méthodes pour récupérer uniquement l'adresse IP en ligne de commande, utile pour intégrer dans un script.

Si vous avez une interface Ethernet :

Code bash : Sélectionner tout
$ ifconfig eth0 | grep inet | cut -d":" -f2 | cut -d" " -f1

Si vous avez une interface PPP :

Code bash : Sélectionner tout
$ /sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/"

Pour trouver l'adresse de la passerelle :

Code bash : Sélectionner tout
1
2
$ awk '/eth0/{print $1}' /proc/net/arp  
192.168.0.101

Ou bien (toujours pour la passerelle) :

Code bash : Sélectionner tout
$ grep $(awk '/\t0003\t/{print $1}' /proc/net/route) /proc/net/arp | cut -d ' ' -f1


Ou encore :

Code bash : Sélectionner tout
$ grep $(netstat -arn |grep UG |awk '{ print $8 }' ) /proc/net/arp |awk ' {  print $1 }'

ifconfig étant déprécié, il faut dorénavant utiliser la commande ip :
Code bash : Sélectionner tout
1
2
  
ip a
le filtrage d'informations grep/sed restant valide.

Mis à jour le 23 octobre 2013 chanmix chrtophe nicolas581 ok.Idriss ovh

Depuis la machine A, nous souhaitons établir une connexion rsh vers une machine B pour un utilisateur.
Entre les deux machines, il est important d'avoir le même UID pour l'utilisateur.

1) Configurer la machine B

Dans le répertoire home du user, créer un fichier .rhosts (700 au niveau des droits) contenant :

Code : Sélectionner tout
machineA le_user
Dans /etc/hosts, rajouter la machineA :

Code : Sélectionner tout
x.x.x.x    machineA
Dans (x)inetd, décommenter ou rajouter le service rsh et rlogin :

Code : Sélectionner tout
shell  stream tcp  nowait root   /usr/sbin/tcpd       in.rshd
2) Configurer la machine A

Dans /etc/hosts, rajouter la machineB :

Code : Sélectionner tout
y.y.y.y   machineB
3) Tester la connexion

Lancer une commande depuis la machine A :

Code bash : Sélectionner tout
rsh machineB "hostname"

Si le hostname de la machine B apparaît, c'est bon.

Mis à jour le 23 octobre 2013 Katyucha ok.Idriss

Voici dans l'ordre la liste des opérations pour diagnostiquer. Suivant leurs succès/échecs, vous pouvez ainsi en déduire votre problème.

Si vous utilisez un proxy, vérifiez que votre navigateur est bien configuré pour passer par le proxy.

Pour vous assurer que c'est votre navigateur qui pose problème, essayez :

Code bash : Sélectionner tout
$ ping www.google.com

Si le ping est bon, alors c'est le navigateur. Sinon, affichez /etc/resolv.conf :

Code bash : Sélectionner tout
$ more /etc/resolv.conf

Vérifiez que la ligne nameserver x.x.x.x contient bien l'adresse IP du serveur DNS de votre FAI. Modifiez la ligne le cas échéant et recommencez le ping www.google.com.

Si le fichier est bien renseigné, faites un :

Code bash : Sélectionner tout
$ ping 216.239.57.104

C'est l'adresse IP de Google.

Le ping est bon, alors tout va bien, vous avez bien un accès au web. Vérifiez l'adresse DNS et le fichier /etc/resolv.conf
Votre ping ne passe pas ? La connexion n'est pas établie. Vérifiez votre configuration Ethernet, adresse IP/passerelle grâce à la commande ifconfig.

Faites un ping de votre passerelle :

Code bash : Sélectionner tout
$ ping x.x.x.x

Si ce ping passe bien, mais pas le ping de 216.239.57.104, alors votre problème se trouve au niveau du routeur.

Mis à jour le 23 octobre 2013 Katyucha ok.Idriss

/etc/hosts contient une liste d'associations nom de machine - adresse IP permettant de contourner la résolution de nom classique (qui interroge les serveurs DNS) pour quelques serveurs dont on connaît l'adresse. Typiquement utilisé pour renseigner des noms de machines locales, plus facilement accessibles par leur nom qu'en tapant l'adresse complète. Le format du fichier est très simple :

Code bash : Sélectionner tout
1
2
3
127.0.0.1    localhost.localdomain    localhost 
192.168.1.11    mamachine 
192.168.1.12    monpc    lepc

En première colonne se trouve l'adresse de la machine, ensuite, en 2e colonne (séparée par un caractère espace ou une tabulation) il y a le nom correspondant, suivi éventuellement par ses alias.

/etc/host.conf définit la séquence de recherche pour la résolution de nom. En général on trouve ceci :

Code bash : Sélectionner tout
1
2
order hosts,bind 
multi on

Cela signifie que le résolveur commencera par chercher dans le fichier /etc/hosts, puis interrogera le DNS. Le multi on veut simplement dire que le résolveur renverra toutes les adresses qu'il trouve pour un nom inscrit dans le fichier hosts, et non pas seulement la première. C'est l'option par défaut sous Debian et dans d'autres distributions aussi.

Mis à jour le 23 octobre 2013 ok.Idriss ovh

Le but de l'opération est que l'utilisateur A de la machine Source se connecte comme utilisateur B de la machine Destination. L'opération est un transfert de clé publique entre votre Source et votre Destination.

Sur la Source :

En tant qu'utilisateur A, vous devez générer une paire de clés RSA privée/publique :

Code bash : Sélectionner tout
$ ssh-keygen -t rsa -b > nombre de bits de la clé < -N ""

Nous vous conseillons 4096 pour la complexité de la clé.

Deux fichiers sont apparus dans ~/.ssh :

  • id_rsa
  • id_rsa.pub


id_rsa correspond à la clé privée
id_rsa.pub correspond à l'autre clé, celle publique.

Sur la Destination :

La clé publique va être recopiée sur la Destination dans ~/.ssh/authorized_keys :
Vous avez un fichier dans le format suivant :

Code bash : Sélectionner tout
$ ssh-rsa > la clé publique< A@Source

Maintenant, depuis la machine Source en utilisateur A, il vous suffit de faire :

Code bash : Sélectionner tout
$ ssh B@Destination

Il est aussi possible de copier la clé avec la commande ssh-copy-id :
Code bash : Sélectionner tout
$ ssh-copy-id B@Destination

Mis à jour le 6 décembre 2013 Katyucha LittleWhite ok.Idriss

Linux accepte la création d'interfaces réseaux virtuels de manière simple, il suffit de configurer une carte eth0:1. Exemple :

Code bash : Sélectionner tout
$ /sbin/ifconfig eth0:1 192.6.1.23 broadcast 192.6.1.255 netmask 255.255.255.0

Ceci autant de fois que l'on désire d'interfaces différentes.

Mis à jour le 23 octobre 2013 MarcG ok.Idriss

Outre les outils graphiques qui peuvent être inclus dans votre distribution, la désactivation et l'activation d'une interface réseau se font respectivement par les commandes ifdown et ifup, en passant en argument le nom de l'interface.

L'interface pour un modem se nomme ppp0, pour une carte réseau eth0. Ainsi, pour réinitialiser la connexion du modem, cela donne :

Code bash : Sélectionner tout
1
2
$ /sbin/ifdown ppp0 
$ /sbin/ifup ppp0

Pour connaître quelles sont les interfaces réseau sur votre machine, y compris les inactives :

Code bash : Sélectionner tout
$ /sbin/ifconfig -a
ou :
Code bash : Sélectionner tout
$ ip -a
avec la nouvelle nomenclature iproute2.

Mis à jour le 23 octobre 2013 chrtophe Nightfall ok.Idriss

Avant toute chose, plantons le décor : nous avons un réseau local, un firewall, et l'internet.

Code : Sélectionner tout
LAN <====> Firewall <====> Internet
  • On ne maîtrise pas les machines du réseau local (donc on ne peut pas désinstaller Skype)
  • Le firewall est déjà configuré de façon assez restrictive. Le trafic autorisé est donc très restreint (HTTP et HTTPS au moins, plus une poignée de trucs en plus comme le NTP, l'IRC, etc.)
  • Comme le firewall laisse passer le HTTPS : Skype passe (d'ailleurs le HTTP suffirait s'il n'y a pas de filtre applicatif HTTP). Nous désirons cependant bloquer Skype du LAN vers internet.


Après quelques recherches, j'ai noté quelques aspects du protocole Skype qui semblent intéressants :

Au tout début du protocole, Skype tente de se connecter à un super nœud. Un super nœud c'est, en substance, un utilisateur normal qui a été élu pour tenir la fonction de super nœud en vertu de sa bande passante et de son uptime au-dessus du lot. Un super nœud attend les connexions sur un port préférentiel qu'il définit arbitrairement et aléatoirement, mais également sur les ports 80 et 443.
Comme les super nœuds sont des utilisateurs normaux, Skype n'embarque pas de liste de super nœuds "en dur" dans l'exécutable, c'est une liste dynamique et on ne peut donc bien entendu pas bloquer toutes les IP des super nœuds en dur sur le firewall. Chaque entrée de la liste est constituée d'un couple : adresse IP du super nœud et port préférentiel du super nœud (ce port étant choisi aléatoirement par le super nœud).

Skype tente donc de se connecter de la façon suivante à un super nœud (dès qu'une connexion est établie, les étapes suivantes ne sont, bien entendu, pas tentées) :

  • tentative de connexion en UDP aux super nœuds sur leur port préférentiel ;
  • tentative de connexion en TCP aux super nœuds sur leur port préférentiel ;
  • tentative de connexion en TCP aux super nœuds sur le port 80 (HTTP) ;
  • tentative de connexion en TCP aux super nœuds sur le port 443 (HTTPS).


Généralement donc, sur un réseau firewallé, Skype commence à jouer les passe-muraille à partir de l'étape 3.

Une fois connecté à un super nœud, le protocole de connexion continue, mais cette suite ne nous intéressera pas puisque nous allons tenter d’empêcher toute connexion à un super nœud (ce qui fait abandonner à Skype la tentative de connexion et remplit donc notre cahier des charges : Skype est bloqué !)

Si vous avez bien suivi, vous avez déjà deviné comment nous proposons de bloquer Skype.

Le principe : lorsque Skype tente de connecter des super nœuds en UDP sur leur port préférentiel, cela se repère aisément au niveau du firewall (les ports étant "exotiques" il y a bien peu de chances qu'ils soient autorisés à sortir) et on va donc, grâce au module récent d'iptables, mémoriser les IP des super nœuds. Ensuite l'idée est simple : toujours grâce au module "récent" d'iptables, on DROP tous les paquets (TCP et UDP, sur tous les ports, ou au moins 80 et 443) en provenance de ces super nœuds pendant 10 minutes. De cette façon Skype ne parvient jamais à connecter un Super Nœud (puisque nous bloquons les SYN retour) et il abandonne les tentatives de connexions.

Bien entendu, cette méthode a quelques "désagréments" :

  • si, par malheur, un interlocuteur extérieur autorisé se trouve être un super nœud que quelqu'un du réseau local tente de contacter, il risque de ne plus être accessible depuis le réseau local ;
  • si un individu mal intentionné sur le réseau local est au courant du fonctionnement de ce filtrage il lui est plus qu'aisé de couper toute communication entre les serveurs de son choix et le réseau local (joli DoS encore une fois, au moins pour les ports 80 et 443).


En résumé : cette méthode est utilisable pour des réseaux où la sureté de fonctionnement n'est pas critique (tout à fait au hasard on va dire : sur le réseau local d'une résidence étudiante par exemple ^_^ ).

Maintenant place au code :

Code bash : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash 
  
#.................Début du script de firewall 
#.................flush des tables principalement 
  
#premiere regle a mettre : on drop tout ce qui vient d'une ip identifiee comme super noeud. 
iptables -A FORWARD -m recent --rcheck --name skype_super_noeuds --second 600 -j LOG 
iptables -A FORWARD -m recent --rcheck --name skype_super_noeuds --second 600 -j DROP 
  
#.................suite du script de firewall, 
#.................éventuel nat, 
#.................tout les jumps en ACCEPT y compris sur ESTABLISHED 
#.................etc 
  
#en fin de script on memorise les ip des super noeuds grace a la tentative d'udp sur port bizarre 
iptables -A FORWARD -p udp -m recent --name skype_super_noeuds --rdest --set 
#on memorise toutes les autres tentatives bizarre,  
#en effet j'ai cru remarquer que pour certains Super Noeud skype tente directement en tcp sans passer par la case udp... 
iptables -A FORWARD -p tcp -m recent --name skype_super_noeuds --rdest --set

Étant donné que Skype peut aussi passer les proxy applicatifs via httpS (port 443) et comme nous ne voulons pas bloquer HTTPS, nous n'avons trouvé qu'une solution qui ne nous a pas franchement satisfaits et que nous n'avons d'ailleurs pas testée ; à savoir : bloquer les accès HTTPS sur IP n'ayant pas de résolution DNS au niveau du proxy... d'où la solution de remplacement que nous proposons et qui se passe de proxy applicatif (plutôt gourmand en CPU).

Mis à jour le 23 octobre 2013 ok.Idriss Ozwald

Afficher les interfaces réseaux :
net-tools : ifconfig -a
iproute2: ip -a

Activer une interface :
net-tools : ifup <interface>ou ifconfig up <interface>
iproute2: ip link set <interface> up

Désactiver une interface :
net-tools : ifdown <interface>ou ifconfig down <interface>
iproute2: ip link set <interface> down

Ajouter/supprimer une adresse réseau :
net-tools : ifconfig <interface> add/del <adresse IP>
iproute2: ip addr add/del <adresse IP> dev <interface>

Mis à jour le 26 juin 2020 chrtophe

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2020 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.