Grimoire-
Command
.es

GNU+Linux command memo

Memo_17 : Accès internet

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Mis à jour le 2020-02-19
Licence GPL

Depuis l’avènement du NetworkManager et de son icône dans la zone de notification des environnements de bureau, on arrive généralement facilement à ses fins en quelques clics.

Toutefois, quelques commandes peuvent encore rendre service.

1. ip : configuration raison "manuelle"

à venir… cf. man ip.

2. ifconfig : renseigne sur la config réseau (outils en voie d’abandon)

Notamment l’adresse IP et le numéro de série (Ethernet) de la carte réseau (MAC).

# ifconfig
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::cc72:8607:e3f3:35ff  prefixlen 64  scopeid 0x20<link>
        ether 18:XX:0f:XX:07:XX  txqueuelen 1000  (Ethernet)
		[…]

Cette commande dépend du paquet net-tools sur les distributions basées sur Debian.

3. /sbin/route -n : permet de connaître l’adresse de sa passerelle (box)

$ /sbin/route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlan0

Cet utilitaire est très puissant et permet bien plus de choses, mais restons-en à l’adresse de la passerelle pour l’instant.

4. ping : vérifie la présence d’une station sur le réseau

Bien que très pratique, cet utilitaire a été réservé à l’utilisateur root sur Debian de Jessie à Stretch, mais plus dans Buster. Le paquet : apt install inetutils-ping ou iputils-ping ; est requis.

# ping 192.168.1.1 (1)
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=9.83 ms
(2)
1 adresse d’un modem / routeur sur le réseau local (Freebox, Livebox, Netgear…)
2 sortie par CTRL+C
L’internet fonctionne actuellement (2018) majoritairement via le protocole IP en version 4 (IPv4). Le nombre d’adresses disponibles pour ce protocole est limité, et ne suffira pas à connecter un ordinateur plus un téléphone portable par personne. Il faudra donc mettre à jour ce protocole. Le successeur fonctionnel est IPv6. Cette mise à jour est utilisée par de grandes entreprises depuis 2011, elle est même devenue un standard en juillet 2017 (RFC 8200). Il faudra donc un jour utiliser : ping6 ; la version IPv6 de l’utilitaire.

Pour vérifier rapidement l’accès réseau, il est possible de pinguer une machine censée être toujours disponible, comme le résolveur DNS quad9.net :

$ ping 9.9.9.9

5. ssh : connexion à distance

S’assurer que le serveur SSH est bien installé sur la machine qui va proposer les fichiers, puis éditer son fichier de configuration :

# apt install openssh-server

S’assurer qu’un client SSH est disponible sur la machine qui doit récupérer les fichiers :

# apt install openssh-client

Tester que la connexion fonctionne :

$ ssh <user>@<machine-ip>  (1) (2)
<user>@<machine-ip>'s password:
<user>@<machine-name> $ (3)
1 <user> est le nom de l’utilisateur auquel se connecter sur la machine serveur, qui propose les fichiers
2 <machine-ip> est l’adresse IP du serveur sur le réseau local. Pour la connaître ifconfig ou ip addr.
3 Si le mot de passe est bon une invite de commande correspondante à la machine distance s’affiche.

Il est également possible de se connecter sans avoir à saisir un mot de passe à chaque connexionvoir : configurer une connexion SSH par clé à une machine distante.

5.1. scp : copie de fichier via SSH

S’il s’agit de transférer un simple fichier, il est alors possible de le faire en une commande :

$ scp <user>@<machine-ip>:<chemin>/<distant>/leBonFichier <répertoire>/<local>/
<user>@<machine-ip>'s password:
leBonFichier                 100%  700MB    3.8MB/s   03:04
Si les chemins de la commande scp sont inversés, un fichier local est envoyé vers la machine distante. Et si deux machines distantes sont spécifiées, le fichier sera déplacé de l’une à l’autre.

5.2. sftp : transfert de fichiers sécurisé

Si une connexion SSH est disponible, alors il est possible d’utiliser le protocole FTP (et ses commandes get et put, en passant par cette connexion :

$ sftp <user>@<machine-ip>
<user>@<machine-ip>'s password:
sftp>

5.3. sshfs : montage local d’un système de fichier distant

Mais il est encore possible d’installer le paquet sshfs et de monter directement le dossier accessible de la machine distance dans le système de fichier de sa machine locale, et accéder ainsi aux fichiers distants simplement via son gestionnaire de fichier graphique, ou la commande cp du terminal.

# apt install sshfs
$ mkdir stargate
$ sshfs <user>@<machine-ip>:<chemin>/ stargate
$ ls stargate
leBonFichier (1)
1 Le fichier est apparu dans le dossier (en supposant qu’il soit présent sur la machine distante.

Pour démonter le répertoire en question :

$ fusermount -u stargate

6. ftp : transfert de fichiers sur un réseau local (sans chiffrement)

Les paquets recommandés sont vsftpd ou lftp.

L’installation de vsftpd crée le répertoire /home/ftp ou /srv/ftp. C’est là que devront être copiés les fichiers à proposer au reste du réseau.

Pour activer rapidement le serveur dans un environnement de confiance (réseau domestique), éditer /etc/vsftpd.conf :

anonymous_enable=YES (la ligne doit être valide, pas de #...)

Et s’assurer que le fichier /etc/passwd pointe l’utilisateur ftp vers le bon répertoire, celui créé à l’installation du paquet :

ftp:x:108:65534::/home/ftp:/bin/false

Enfin, dans le fichier /etc/hosts on donne la correspondance entre adresses IP et nom de machine, y compris la machine locale.

192.168.x.y   <nomStation>

6.1. Commandes basiques et récupération de fichier

<nomStation> est à remplacer par le nom de la station distante ou son adresse IP.

$ ftp <nomStation>
> Name (<nomStation>:user): anonymous (1)
> Password : (2)
> (3)
> help (4)
> help <uneCommande> (5)
> get <nomFichier> (6)
> ! <commandeLocale> (7)
> ! ls (8)
> ! (9)
> [CTRL + D] (10)
> bye (11)
1 entrer "anonymous" puis touche Entrée
2 simplement touche Entrée pour choisir un mot de passe vide
3 À partir de maintenant les commandes affectent la station distante
4 liste les commandes disponibles
5 donne des info. sur la commande <uneCommande>
6 transfert le fichier (distant) dans le répertoire de la station locale
7 pour passer une command locale
8 liste les fichiers présent dans le répertoire local
9 sans commande, on revient en local
10 repasse sur le distant, fin de l’appartée locale
11 fin à la session ftp, retour à l’invite de commande locale… (saisir CTRL+D à nouveau à la place de bye aurait eu le même effet)

6.2. Ajout de fichiers au répertoire des fichiers disponibles

L’écriture dans le répertoire de vsftpd est réservée à l’administrateur (root).

Pour autoriser l’écriture par un utilisateur particulier :

  1. Déterminer le groupe du répertoire …​/ftp (en général nogroup ou ftp) via la commande : ls -l

  2. Ajouter l’utilisateur particulier dans ce groupe : # adduser <nomUtilisateur> <nomGroup>

  3. Donner le droit en écriture aux membres du groupe en question : # chmod g+w …​/ftp

  4. L’utlisateur doit alors ouvrir une nouvelle session (pour que ses groupes soient mis à jour)

  5. Pour vérifier que cela s’est bien passé, lister les groupes de l’utilisateur en question : $ groups

7. bwm-ng : mesure de débits (entrant et sortant)

Dépend du paquet éponyme : bwm-ng.

$  bwm-ng -I wlan1,eth0

Sortie par q.

8. Problèmes liés au WiFi

Ça reste plus compliqué que le filaire…

8.1. Quelles caractéristiques pour cette interface ?

# dmesg | grep -i 'wireless'

Avec un peu de chance, on peut avoir le nom du module qu’il faut dans la réponse…

Si c’est une clé usb

$ lsusb

8.2. Pour voir ce qui se passe quand le WiFi se lance

# dmesg |grep -i 'wlan'

8.3. nmcli : le NetworkManager en ligne de commande

L’interface en ligne de commande du NetworkManager permet d’activer toutes ses fonctions (sur le principe, je n’ai pas vérifier exactement ;-p).

Notons ici la commande pour activer le WiFi :

$ nmcli radio wifi on

Pour lister les réseau WiFi disponibles :

$ nmcli dev wifi list
IN-USE  SSID                 MODE   CHAN  RATE      SIGNAL  BARS  SECURITY
*       FFDN.org_0676970253  Infra  1     270 Mo/s  77      ▂▄▆_  WPA2

Pour se connecter à un réseau WiFi donné :

$ nmcli --ask dev wifi connect FDN.fr_0676970253

Pour indiquer qu’une interface réseau doit chercher à se connecter automatiquement au démarrage :

$ nmcli device set p2p0 autoconnect yes

8.4. Verrou logiciel : rfkill

Vérifier que le WiFi n’est pas hors service pour cause de commutateur matériel ou logiciel :

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
18: hci0: Bluetooth
	Soft blocked: yes
	Hard blocked: no

Nécessite l’installation du paquet rfkill.

# rfkill unblock 0

Débloque le commutateur logiciel de la carte numérotée 0 lors de la commande précédente.

# rfkill unblock all

Débloque les commutateurs logiciels de toutes les interface réseau sans fil (WiFi, Bluetooth…).

8.5. Plus de WiFi en sortie de veille ?

Il est possible que décharger le module du noyau concernant le WiFi pour le recharger tout neuf fasse revenir la connectivité.

Pour cela, il faut trouver le module incriminé :

# lsmod |grep -i 'wifi'
rtlwifi                71765  1 rtl8192cu

Pour avoir plus d’info sur ce module :

# systool -v -m rtl8192cu

Nécessite l’installation du paquet sysfsutils.

# modinfo rtlwifi
# modinfo rtl8192cu

Puis décharger et recharger le module en question :

# rmmod --force rtlwifi
# modprobe rtlwifi

Cette astuce fonctionne également avec le module de la souris (ou touchpad) nommé psmouse dans de nombreux cas et elan_i3c pour une machine Asus ux305ca.

8.6. Autres commandes

8.6.1. iwlist

Lister les réseaux disponibles et leurs caractéristiques, y compris concernant la connexion courante :

# iwlist scan

8.6.2. Complément

Il est des cas, où il faut intervenir directement sur le module avec la commande modprobe pour donner certaines directives au module; voire créer un fichier dans /etc/modprobe.d/nomModule.conf.

Voir Memo_20 pour la commande modprobe.