dnsmasq라는 DNS 서버도 설치된 DHCP 서버가 있습니다. 내 현재 dnsmasq.conf는 다음과 같습니다.
domain-needed
bogus-priv
filterwin2k
address=/gateway.gw/192.168.10.1
interface=eth1
bind-interfaces
다음 구성으로 systemd를 네트워크 관리자로 사용합니다.
[Match]
Name=eth1
[Network]
DHCPServer=yes
DNS=192.168.10.1
DNS=8.8.8.8
[Address]
Address=192.168.10.1/24
Broadcast=192.168.10.255
[DHCPServer]
PoolOffset=110
PoolSize=20
EmitDNS=yes
gateway.gw
dhcp 서버와 동일한 시스템에서 실행되는 웹 서버가 있고 dhcp 클라이언트가 구성을 변경하지 않고도 이 웹 서버에 액세스하도록 쿼리할 수 있기를 원합니다 . 문제는 DHCP 서버가 DNS 목록에 자신의 IP를 보내지 않고 8.8.8.8을 보낸다는 것입니다. 따라서 클라이언트는 게이트웨이를 DNS 서버로 명시적으로 설정하지 않으면 도메인 이름을 사용할 수 없습니다 gateway.gw
.
8.8.8.8
이 질문을 준비하면서 계속해서 시도했는데 때로는 DNS 목록 도 보내지 않고 네트워킹에 대해 아무것도 모르기 때문에 여기서 무슨 일이 일어나고 있는지, 왜 그런지 알 수 없다는 것을 깨달았습니다 .
bonus question ->
DHCP 서버의 구성 파일은 실제로 gateway.gw
IP 주소를 변경하도록 구성될 수 있습니다(이유는 묻지 마십시오! :). 일치 항목 gateway.gw
을 하드코딩하는 대신 eth1의 IP 주소(동적 조회)를 사용하도록 dnsmasq에 지시하는 방법이 있습니까 ?
참고: dnsmasq에 내장된 dhcp 서버를 사용할 수 없습니다. 내 웹 서버에는 실제로 다른 모든 네트워크 인터페이스도 구성되어 있으며 하나의 인터페이스에 대해 추가 코드를 작성하고 싶지 않습니다.
답변1
나는 systemd의 dhcp 서버 구성을 발견했고 그것을 작성한 사람은 [DhcpServer]
DNS 서버를 추가하는 부분을 사용했습니다. [Network]
그 이후로 그 부분을 사용하고 있어요이것설명서에는 해당 섹션 아래에 나열되어 있습니다. 그러나 DhcpServer 섹션 아래에 DNS 서버를 나열하면 문제가 해결되는 것으로 나타났습니다.
참고: 링크의 설명서도 정확합니다. 자세히 읽어보니 해당 부분에 DNS 서버를 클라이언트에 배포하기 위해 적어야 한다고 나와 있습니다.