[suspend] route supplémentaire efffacée après sortie de veille (Résolu)

Applications, problèmes de configuration réseau
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

[suspend] route supplémentaire efffacée après sortie de veille (Résolu)

Message par sukolyn »

Bonjour,

après la sortie de veille (systemctl suspend), la route additionnelle configurée dans /etc/netctl/ethernet-dhcp*, ou manuellement (ip route add 10.0.0.0/28 via 192.168.1.21 dev enp2s0) est effacée :

Code : Tout sélectionner

# ip route show
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 
10.0.0.0/28 via 192.168.1.12 dev enp2s0 
192.168.1.0/24 via 192.168.1.1 dev enp2s0 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 
je vous montre :

Code : Tout sélectionner

# date; ip route show; echo "================="; systemctl suspend; echo "=================="; for i in {1..10}; do date; ip route show; sleep 1; echo "======================"; done
lun. nov. 20 10:40:45 CET 2017
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 
10.0.0.0/28 via 192.168.1.12 dev enp2s0 
192.168.1.0/24 via 192.168.1.1 dev enp2s0 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 
=================
==================
lun. nov. 20 10:40:45 CET 2017
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 
10.0.0.0/28 via 192.168.1.12 dev enp2s0 
192.168.1.0/24 via 192.168.1.1 dev enp2s0 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 
======================
lun. nov. 20 10:42:46 CET 2017 # <= là, je sors de veille
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 linkdown 
10.0.0.0/28 via 192.168.1.12 dev enp2s0 linkdown 
192.168.1.0/24 via 192.168.1.1 dev enp2s0 linkdown 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 linkdown 
======================
lun. nov. 20 10:42:47 CET 2017 #<= quelque chose redémarre, aucun réseau n'est défini (?)
======================
lun. nov. 20 10:42:48 CET 2017
======================
lun. nov. 20 10:42:49 CET 2017
======================
lun. nov. 20 10:42:50 CET 2017
======================
lun. nov. 20 10:42:51 CET 2017
======================
lun. nov. 20 10:42:52 CET 2017
======================
lun. nov. 20 10:42:53 CET 2017 #<= la route additionnelle a disparu :(
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 
======================
lun. nov. 20 10:42:54 CET 2017
default via 192.168.1.1 dev enp2s0 src 192.168.1.65 metric 202 
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.65 metric 202 
======================
# 
je fais quelque chose de travers ?
comment puis-je corriger ce problème ?

*

Code : Tout sélectionner

Description='A basic dhcp ethernet connection'
Interface=enp2s0
Connection=ethernet
IP=dhcp
Routes=('192.168.1.0/24 via 192.168.1.1' '10.0.0.0/28 via 192.168.1.12')
Dernière modification par sukolyn le dim. 03 déc. 2017, 17:49, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [suspend] route supplémentaire efffacée après sortie de veille

Message par benjarobin »

Bonjour,
J'ai un peu du mal à comprendre l'utilité de la première route ('192.168.1.0/24 via 192.168.1.1'), tout ce qui est dans le même sous réseau doit être directement accessible.
Sinon peux tu donner la sortie (il faut installer tree) de : tree /etc/systemd/system
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [suspend] route supplémentaire efffacée après sortie de veille

Message par sukolyn »

je pensais bien faire en indiquant toutes les routes possibles.
et quand j'ai effacé cette première route (192.168.1.0/24), Arch n'a pas démarré : elle est restée bloquée à graphical.target reached :/
EDIT: ah, ben, non. ça ne l'a pas refait. :?

Code : Tout sélectionner

# tree /etc/systemd/system
/etc/systemd/system
├── getty.target.wants
│   └── getty@tty1.service -> /usr/lib/systemd/system/getty@.service
├── multi-user.target.wants
│   ├── cronie.service -> /usr/lib/systemd/system/cronie.service
│   ├── lighttpd.service -> /usr/lib/systemd/system/lighttpd.service
│   ├── netctl@ethernet\x2ddhcp.service -> /etc/systemd/system/netctl@ethernet\x2ddhcp.service
│   ├── remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
│   └── sshd.service -> /usr/lib/systemd/system/sshd.service
└── netctl@ethernet\x2ddhcp.service

2 directories, 7 files
l'effacement de la route secondaire persiste.
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [suspend] route supplémentaire efffacée après sortie de veille

Message par sukolyn »

est-ce que vous n'arrivez pas à reproduire ce problème ? alors, j'ai peut-être oublié d'installer quelque chose...

une piste ? un soupçon ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [suspend] route supplémentaire efffacée après sortie de veille

Message par benjarobin »

Désolé je t'avais "oublié", tu dois activer en plus netctl-sleep.service
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [suspend] route supplémentaire efffacée après sortie de veille

Message par sukolyn »

super !

merci.
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [suspend] route supplémentaire efffacée après sortie de veille (Résolu)

Message par sukolyn »

par contre, si les routes enregistrées dans /etc/netctl/<netctl.profile> sont correctement restaurées (parce que le fichier est relu, je pense), les routes entrées à la main, elles, ne sont pas rétablies au réveil.

Code : Tout sélectionner

# ip route
default via 192.168.1.1 dev enp4s0 src 192.168.1.60 metric 202 
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.60 metric 202 
# ip route add 10.0.0.0/28 via 192.168.1.12 dev enp4s0
# ip route
default via 192.168.1.1 dev enp4s0 src 192.168.1.60 metric 202 
10.0.0.0/28 via 192.168.1.12 dev enp4s0 
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.60 metric 202 
# systemctl suspend
# ip route
default via 192.168.1.1 dev enp4s0 src 192.168.1.60 metric 202 
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.60 metric 202
:shock:
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [suspend] route supplémentaire efffacée après sortie de veille (Résolu)

Message par benjarobin »

C'est normal... En faite ce qui se passe c'est dhpcd qui lors du réveil se "relance", ce qui à pour effet de supprimer toute la configuration réseau.
Ce que fait netctl-sleep.service lors de la mise ne veille : Il dé-configure l'interface réseau, et lors du réveille relance la configuration.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [suspend] route supplémentaire efffacée après sortie de veille (Résolu)

Message par sukolyn »

j'ai bricolé un code pour restaurer les routes ajoutées à la main :
/usr/lib/systemd/system/netctl-sleep.service

Code : Tout sélectionner

[Unit]
Description=netctl sleep hook
Documentation=man:netctl.special(7)
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/netctl store ; /root/bin/saveRestore_ipRules save ; /usr/bin/netctl stop-all
ExecStop=-/usr/bin/netctl restore ; /root/bin/saveRestore_ipRules restore

[Install]
WantedBy=sleep.target
/root/bin/saveRestore_ipRules

Code : Tout sélectionner

#!/bin/bash

bkp="/tmp/${0##*/}_route.save"
save()
{
    ip route show > "$bkp"
}
restore()
{
    until test -n "$(ip route show)"
    do
        sleep 1 & wait
    done
    while read route
    do
        ip route add $route
    done < <(diff --old-line-format=%L --unchanged-line-format= --new-line-format= <(sort "$bkp") <(ip route show | sort))
}
case $1 in
    save) save
        ;;
    restore) restore
        ;;
    *) >&2 echo "${0##*/}: err: argument non prévu \"$1\""
       exit 1
        ;;
esac
des objections ?
des remarques ?
des questions ?
Répondre