"/etc/network/interfaces가 DHCP 클라이언트 또는 정적 주소를 사용하는 일부 인터페이스를 정의하기 때문에 dhcpcd가 실행되고 있지 않습니다."

"/etc/network/interfaces가 DHCP 클라이언트 또는 정적 주소를 사용하는 일부 인터페이스를 정의하기 때문에 dhcpcd가 실행되고 있지 않습니다."

배포:

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

참고: RPI 호스트 이름:gateway

• 목표는 네트워크 외부에서 가상 머신에 액세스할 수 있도록 하는 것입니다. 튜토리얼을 따라하면 완료됩니다.https://www.youtube.com/watch?v=IAa4tI4JrgI, RPI의 라우터 및 포트 전달을 통해 dhcpcd를 설치하고 RPI에 iptables를 구성합니다.

• 여기에 interfaces문제를 해결하기 위해 auto wlan0을 주석 처리한 곳이 있습니다(이전에는 주석 처리가 해제되었지만 여전히 똑같습니다...).

# 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

• 이는 다음과 같이 firewall.conf사용됩니다 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    

• 여기있어 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;
}

• 알 수 없는 오류 메시지:

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버전:

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

질문:

1) 오류 메시지는 무엇을 Not running dhcpcd because /etc/network/interfaces defines some interfaces that will use a DHCP client or static address의미합니까? 위의 구성을 기반으로 어떻게 문제를 해결할 수 있습니까?

Accountant2) 바인딩을 주석 처리할 때에도 항상 내가 원하는 것과 동일한 IP를 얻는 호스트를 제외하고 호스트에 내 dhcpcd.conf를 기반으로 IP 주소가 할당되지 않은 이유는 무엇입니까 ? 여러 호스트의 MAC과 IP를 바인딩할 수 있도록 이 문제를 해결하는 방법은 무엇입니까?

3) 이 기호는 무엇을 의미합니까?

#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

interfacesLinux에서 파일을 표시하는 규칙은 무엇입니까?

답변1

질문 1.) 죄송합니다. 뭔가 잘못 이해하신 것 같습니다.

dhcpcdDHCP입니다고객데몬은 일반적으로 NetworkManager에 의해 시작 ifupdown되거나 systemd. 그것은 당신을 위해 그것을 처리할 것입니다 wlan0.

할 수 있는dhcpcd원한다면 따라 시작하십시오 systemd. 그러나 이렇게 하려면 배포판의 모든 일반 네트워크 인터페이스 구성 로직(즉, /etc/network/interfaces비어 있어야 하는 주석이 아닌 라인)을 모두 비활성화하고 필요한 경우 이를 사용자 정의 스크립트로 바꿔야 합니다. 특별한 목적을 위해서만 수행해야 하는지 확신할 수 없다면 수행해서는 안 됩니다.

dhcpcdIP 주소는 다른 호스트에게 절대 제공되지 않습니다. 추가한 부분이 dhcpcd.confISC DHCP 구성 파일에 속하는 것 같습니다.섬기는 사람데몬 dhcpd(예, 단 한 글자만 다름):

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;
}

그러나 언급한 YouTube 튜토리얼을 따르고 있다면 아직 dhcpd설치 하지 않았을 수도 있습니다 dnsmasq.

내가 아는 한 동등한 구문 dnsmasq.conf은 다음과 같습니다.

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

면책조항: 실제로 사용해본 적이 없으므로 dnsmasq이 내용은 해당 매뉴얼 페이지에 대한 빠른 Google 검색을 기반으로 합니다.


질문 2.) 언급한 튜토리얼에서는 dnsmasq작동해야 합니다 eth0. 이에 대해 아무 말도 하지 않았으므로 실행 중인지 모르겠습니다. 그렇지 않은 경우 항상 동일한 IP를 얻는 클라이언트는 아직 만료되지 않은 이전에 수신한 이전 DHCP 임대로 대체될 수 있습니다. 예, 네트워크에 작동 중인 DHCP 서버가 없는 것으로 나타나면 DHCP 클라이언트는 DHCP 임대를 영구적으로 저장하고 계속 사용할 수 있습니다.


질문 3.): /etc/network/interfaces전형적인 Debian/Ubuntu 스타일 네트워크 인터페이스 구성 파일입니다. 그것을 보기 위한 문서 man interfaces, 또는이봐.

Debian, *Ubuntu, Raspbian 등에서는 NetworkManager에 다음을 수행할 수 있는 플러그인이 있습니다.읽다 /etc/network/interfaces하지만쓰다그것에.

선택한 데스크탑 환경에서 NetworkManager 구성 도구(예: ) nmcli또는 GUI 기반 NetworkManager 구성 도구를 사용하는 경우 구성이 디렉토리의 파일에 저장됩니다.nmtui/etc/NetworkManager/system-connections/

NetworkManager 가 설치되지 않은 경우 이 파일 은 명령 및 를 포함하는 /etc/network/interfaces패키지에서 사용됩니다 . 패키지에는 부팅 시 실행 되는 시스템 시작 스크립트도 포함되어 있으므로 . 새 네트워크 인터페이스가 자동으로 로드되고 줄이 있으면 규칙이 실행됩니다.ifupdownifupifdownifup -aauto <interface name>/etc/network/interfacesifup <interface name>/etc/network/interfacesallow-hotplug <interface name>

답변2

이 "오류"의 원인을 찾았습니다.

dhcpcd일종의 "초보/초보 보호"를 사용 dhcpcd하면 일부 "초보/초보"가 및 /etc/interfaces.

dhcpcd/etc/interfaces다음 쉘 스크립트를 사용하여 확인하십시오 /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 $@

난 그냥 줄을 바꿔서 써

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

|static매개변수를 제거하면

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

마지막 에코 라인을 다음과 같이 조정합니다.

echo "DHCP client"

폴리스티렌귀하의 예제에 denyinterfaces "NAME OF YOUR STATIC INTERFACE, WHICH SHALL BE CONTROLLED ONLY BY /etc/interfaces"예제를 추가하십시오 .denyinterfaces eth0/etc/dhcpcd.conf

관련 정보