Arch Linux에서 DHCP 서버를 실행하고 싶지만 문제가 발생했습니다. dhcpd를 시작하는 데 문제가 있습니다. 로그인 후 수동으로 실행하면 정상적으로 시작됩니다.sudo systemctl start [email protected]
저는 최신 버전의 Arch Linux(4.7.0-1)를 실행하고 있으며 Arch 네트워크 위키를 따라 이를 설정했습니다.
내 설정
- dhcpcd 비활성화됨
저는 systemd-networkd를 사용하여 고정 IP(활성화)를 수행합니다. 구성은 (
/etc/systemd/network/wired.network
)입니다.[Match] Name=eth0 [Network] Address=10.0.0.2/24 Gateway=10.0.0.1
내 것은
/etc/dhcpd.conf
매우 간단합니다.option domain-name-servers 10.0.0.2; option subnet-mask 255.255.255.0; option routers 10.0.0.0.1; subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.5 10.0.0.50; }
시스템 서비스 파일( )을 생성하고 다음을 사용하여 활성화했습니다.
/etc/systemd/system/[email protected]
systemctl enable [email protected]
[Unit] Description=IPv4 DHCP server on %I Wants=network.target After=network-pre.target Before=network.target [Service] Type=forking PIDFile=/run/dhcpd4.pid ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I KillSignal=SIGINT [Install] WantedBy=multi-user.target
재부팅하면 시작 시(실행 시 journalctl -xe
) 오류 메시지가 나타납니다.
No subnet declaration for eth0 (no IPv4 addresses).
** Ignoring requests on eth0....
그런 다음 실행하면 문제없이 모든 것이 잘 실행됩니다.systemctl start [email protected]
인터넷 검색을 많이 했지만 이 문제에 대한 해결책을 찾지 못했습니다. 파일( dhcpd.conf
, [email protected]
및 wired.network
)을 하드 코딩된 인터페이스로 조정하고, 추가 DHCP 문을 추가하고, 장치 요구 사항을 변경하는 등의 작업을 시도했지만 아무것도 작동하지 않는 것 같습니다.
답변1
dhcpd를 eth0으로만 제한해 보셨나요? 그렇지 않은 경우 간단히 표준 시스템 서비스 파일을 사용할 수 있습니다 dhcpd4.service
.
그렇다면 바꿔서 시도해 보세요.
After=network-pre.target
Before=network.target
도착하다
After=network.target
이는 에도 규정되어 있다.표준dhcpd4.service. dhcpd에는 활성 인터페이스가 필요한 것 같습니다. 시작되면 보장되지 않습니다.앞으로 network.target
.
답변2
내 질문에 대한 답을 찾았습니다! 문제는 네트워크가 부팅/구성될 때 부팅 프로세스가 DHCP 서비스를 시작하려고 시도하므로 DHCP가 바인딩할 작업 인터페이스를 찾을 수 없다는 것입니다. 이것이 바로 시작 dhcpd 서비스를 수동으로 실행하면 항상 작동하지만 시작 시에는 작동하지 않는 이유입니다.
이 기사에서 답에 대한 단서를 찾았습니다.아치 리눅스의 dhcp - rasp-pi. 사용자는 유닛 파일에서 재시작 문을 사용하여 서비스가 시작될 때까지 6초마다 서비스를 재시도했습니다. - 이 임시 해결책은 나에게도 효과가 있었습니다.
systemd 웹사이트를 뒤져봤는데특별한 목표페이지에서 이 링크를 찾으세요.네트워크 연결 후 서비스 실행. 이 페이지의 제안을 바탕으로 다음과 같이 조정했습니다.
- 내부에[이메일 보호됨]내가 삭제 하고
Before=...
변경 하고 변경한 유닛 파일After
After=network-online.target
Wants
Wants=network-online.target
systemd-networkd-wait-online.service
부팅 시 시작 도 활성화했습니다 .
이제 부팅 시 실행됩니다! 그러나 권장 사항 페이지에는 활성화 systemd-networkd-wait-online.service
하면 부팅 시간이 느려지고 90초를 단축할 수 있다고 나와 있습니다 (올바르게 읽은 경우). 제 경우에는 부팅 시간이 1~2초 정도 증가한 것에 불과했습니다.