web-dev-qa-db-fra.com

"Ne pas exécuter dhcpcd car / etc / réseau / interfaces définit certaines interfaces qui utiliseront un client DHCP ou une adresse statique"

Déploiement:

VM -- (eth0)RPI(wlan0) -- Router -- ISP
 ^      ^         ^         ^ 
DHCP  Static     DHCP      GW

Remarque: Nom d'hôte RPI: gateway

• L'objectif était de rendre VMS accessible à l'extérieur du réseau. Accompli, selon le tutoriel https://www.youtube.com/watch?v=iaa4ti4jrgi , via le transfert de port sur le routeur et le RPI, en installant DHCPCD et en configurant des IPTABLES sur RPI.

• Voici mon interfaces, où j'ai commenté l'Auto WLAN0, tente de résoudre le problème (avant, il était décalé, et était toujours la même chose ...)

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

#auto wlan0
iface wlan0 inet dhcp
wpa-ssid FunBox-84A8
wpa-psk 7A73FA25C43563523D7ED99A4D

#auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255

• Voici le firewall.conf Utilisé par le iptables:

# Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019
*nat
:PREROUTING ACCEPT [86:11520]
:INPUT ACCEPT [64:8940]
:OUTPUT ACCEPT [71:5638]
:POSTROUTING ACCEPT [37:4255]
-A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 170 -j DNAT --to-destination 192.168.2.83:22
-A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 171 -j DNAT --to-destination 192.168.2.83:443
-A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.2.66:3389
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Sun Feb 17 20:01:56 2019
# Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019
*filter
:INPUT ACCEPT [3188:209284]
:FORWARD ACCEPT [25:2740]
:OUTPUT ACCEPT [2306:270630]
-A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
COMMIT
# Completed on Sun Feb 17 20:01:56 2019
# Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019
*mangle
:PREROUTING ACCEPT [55445:38248798]
:INPUT ACCEPT [3188:209284]
:FORWARD ACCEPT [52257:38039514]
:OUTPUT ACCEPT [2306:270630]
:POSTROUTING ACCEPT [54565:38310208]
COMMIT
# Completed on Sun Feb 17 20:01:56 2019
# Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019
*raw
:PREROUTING ACCEPT [55445:38248798]
:OUTPUT ACCEPT [2306:270630]
COMMIT
# Completed on Sun Feb 17 20:01:56 2019

iptables -L:

pi@gateway:/etc$ Sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

• Voici le dhcpcd.conf:

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, Host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

denyinterfaces eth0

Host Accountant {
hardware ethernet 10:60:4b:68:03:21;
fixed-address 192.168.2.83;
}

Host Accountant1 {
hardware ethernet 00:0c:29:35:95:ed;
fixed-address 192.168.2.66;
}
Host Accountant3 {
hardware ethernet 30:85:A9:1B:C4:8B;
fixed-address 192.168.2.70;
}

• Le message d'erreur, que je ne suis pas capable de comprendre:

root@gateway:/home/pi# systemctl restart dhcpcd
Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for dhcpcd.service failed because the control process exited with error code.
See "systemctl status dhcpcd.service" and "journalctl -xe" for details.
root@gateway:/home/pi# systemctl status dhcpcd
● dhcpcd.service - dhcpcd on all interfaces
   Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/dhcpcd.service.d
           └─wait.conf
   Active: failed (Result: exit-code) since Sun 2019-02-17 20:36:42 GMT; 6s ago
  Process: 775 ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w (code=exited, status=6)

Feb 17 20:36:42 gateway systemd[1]: Starting dhcpcd on all interfaces...
Feb 17 20:36:42 gateway dhcpcd[775]: Not running dhcpcd because /etc/network/interfaces
Feb 17 20:36:42 gateway dhcpcd[775]: defines some interfaces that will use a
Feb 17 20:36:42 gateway dhcpcd[775]: DHCP client or static address
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Control process exited, code=exited status=6
Feb 17 20:36:42 gateway systemd[1]: Failed to start dhcpcd on all interfaces.
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Unit entered failed state.
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Failed with result 'exit-code'.
Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
root@gateway:/home/pi#               
root@gateway:/home/pi# systemctl daemon-reload
root@gateway:/home/pi# systemctl status dhcpcd
● dhcpcd.service - dhcpcd on all interfaces
   Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/dhcpcd.service.d
           └─wait.conf
   Active: failed (Result: exit-code) since Sun 2019-02-17 20:36:42 GMT; 1min 23s ago

Feb 17 20:36:42 gateway systemd[1]: Starting dhcpcd on all interfaces...
Feb 17 20:36:42 gateway dhcpcd[775]: Not running dhcpcd because /etc/network/interfaces
Feb 17 20:36:42 gateway dhcpcd[775]: defines some interfaces that will use a
Feb 17 20:36:42 gateway dhcpcd[775]: DHCP client or static address
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Control process exited, code=exited status=6
Feb 17 20:36:42 gateway systemd[1]: Failed to start dhcpcd on all interfaces.
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Unit entered failed state.
Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Failed with result 'exit-code'.
root@gateway:/home/pi#       

gateway version:

pi@gateway:/etc$ cat os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian

Des questions:

1) Qu'est-ce que le message d'erreur Not running dhcpcd because /etc/network/interfaces defines some interfaces that will use a DHCP client or static address Signifie? Comment le réparer, selon ma configuration ci-dessus?

2) Pourquoi les hôtes ne sont pas attribués à l'adresse IP conformément à mon DHCPCD.conf, à l'exception de l'hôte Accountant, qui reçoit toujours la même adresse IP, que je souhaite, même si vous commenciez la liaison ...? Comment réparer cela afin de pouvoir lier plus d'un hôtes Mac avec IP?

3) Que signifie cette notation:

#auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255

Quelles sont les règles de la notation pour le fichier interfaces sous Linux?

4
readonly

Question 1.) Désolé, on dirait que vous avez mal compris quelques choses.

dhcpcd est un client DHCP Démon, qui est normalement démarré par NetworkManager ou ifupdown, pas directement par systemd. C'est ce qui traitera l'attribution de l'adresse IP pour votre wlan0.

Vous peut Utilisez dhcpcd tel que démarré par systemd Si vous le souhaitez, cependant, cela nécessitera une désactivation de toute la logique de configuration d'interface réseau normale (c.-à-d. /etc/network/interfaces Doit être vide de lignes non-commentaire) de la distribution et de la remplacer par votre propre script personnalisé si nécessaire. C'est pour des utilisations spéciales seulement; Si vous n'êtes pas absolument certain, vous devriez le faire, vous ne devriez pas.

dhcpcd _ ne servira jamais d'adresses IP à d'autres hôtes. Cette partie que vous avez ajoutée à dhcpcd.conf on dirait qu'il appartiendrait au fichier de configuration du serveur ISC DHCP Daemon, dhcpd (Oui, c'est juste une différence de lettre) à la place:

Host Accountant {
hardware ethernet 10:60:4b:68:03:21;
fixed-address 192.168.2.83;
}

Host Accountant1 {
hardware ethernet 00:0c:29:35:95:ed;
fixed-address 192.168.2.66;
}
Host Accountant3 {
hardware ethernet 30:85:A9:1B:C4:8B;
fixed-address 192.168.2.70;
}

Mais si vous suivez le didacticiel YouTube que vous avez mentionné, vous n'avez peut-être peut-être même pas dhcpd installé, puisque dnsmasq est censé faire ce travail.

Pour autant que je puisse dire, la syntaxe équivalente pour dnsmasq.conf serait:

dhcp-Host=10:60:4b:68:03:21,192.168.2.83,Accountant
dhcp-Host=00:0c:29:35:95:ed,192.168.2.66,Accountant1
dhcp-Host=30:85:A9:1B:C4:8B,192.168.2.70,Accountant3

Clause de non-responsabilité: Je n'ai pas réellement utilisé dnsmasq, cela est donc basé sur une page de googling rapidement.


Question 2.) Dans le tutoriel que vous avez mentionné, dnsmasq était censé agir en tant que serveur DHCP sur eth0. Vous n'avez rien dit à ce sujet, alors je ne sais pas si cela fonctionnait ou non. Sinon, le client qui attirait toujours la même adresse IP aurait pu simplement revenir à un ancien bail de DHCP déjà reçu qui n'a pas encore été expiré. Oui, les clients DHCP peuvent stocker un bail DHCP de manière persistante et continuer à l'utiliser si un réseau ne semble pas avoir un serveur DHCP de travail disponible.


Question 3.): /etc/network/interfaces est un fichier de configuration de réseau de réseaux classique de Debian/Ubuntu. Utilisez man interfaces pour voir la documentation pour cela, ou regarde ici.

Dans Debian, * Ubuntu, Raspbian, etc., NetworkManager aura un plug-in qui sera lire/etc/network/interfaces mais ne va pas écrire à cela.

Si des outils de configuration de NetworkManager tels que nmcli, nmtui ou les outils de configuration de votre site Web de votre environnement de choix sont utilisés, la configuration serait enregistrée dans les fichiers dans /etc/NetworkManager/system-connections/ au lieu.

Si NetworkManager n'est pas installé, le fichier /etc/network/interfaces est utilisé par le package ifupdown, qui inclut les commandes ifup et ifdown. Le package comprend également un script de démarrage système qui exécutera ifup -a au démarrage, activant toutes les interfaces réseau qui ont auto <interface name> in /etc/network/interfaces. Il y a aussi une règle Udev qui exécutera ifup <interface name> si un pilote d'une nouvelle interface réseau est chargé automatiquement et /etc/network/interfaces a une ligne allow-hotplug <interface name> ligne pour cela.

3
telcoM

J'ai trouvé la raison de cette "erreur".

dhcpcd utilise une sorte de "protection noob/novice", qui garantit un moyen sûr de gérer la gestion du réseau, si un "noob/novice" essaie d'utiliser les deux dhcpcd et /etc/interfaces.

dhcpcd vérifie le /etc/interfaces avec le script shell suivant /usr/lib/dhcpcd5/dhcpcd:

#!/bin/sh -e

DHCPCD=/sbin/dhcpcd
INTERFACES=/etc/network/interfaces

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp|static)" \
                $INTERFACES; then
        echo "Not running dhcpcd because $INTERFACES"
        echo "defines some interfaces that will use a"
        echo "DHCP client or static address"
        exit 6
fi

exec $DHCPCD $@

J'ai simplement alterné la ligne

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp|static)" \

en supprimant l'argument de |static, à

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp)" \

et ajusté la dernière ligne d'écho à:

echo "DHCP client"

PS Assurez-vous d'ajouter un denyinterfaces "NAME OF YOUR STATIC INTERFACE, WHICH SHALL BE CONTROLLED ONLY BY /etc/interfaces", par exemple denyinterfaces eth0 à votre /etc/dhcpcd.conf.

2
paladin