웹사이트 검색

Dnsmasq로 로컬 네트워크 DHCP 서버를 실행하는 방법


Dnsmasq는 DNS, DHCP, TFTP 및 PXE 기능을 제공하는 경량 네트워크 서버입니다. 이 가이드에서는 새로운 Dnsmasq 설치를 독립 실행형 DHCP 서버로 구성하는 방법을 살펴보겠습니다.

DHCP(동적 호스트 구성 프로토콜)는 네트워크 장치가 IP 주소를 획득하는 프로세스입니다. 네트워크의 DHCP 서버는 각각의 새 장치에 고유한 주소를 할당합니다. 주소는 정적이거나 동적일 수 있습니다. 후자는 단기 임대 기반으로 발급되어 각 장치의 IP가 시간이 지남에 따라 변경될 수 있음을 의미합니다.

라우터는 대부분의 소규모 네트워크에서 DHCP 서버 역할을 합니다. Linux 상자에서 Dnsmasq를 설정하면 프로세스를 제어할 수 있을 뿐만 아니라 발생하는 모든 오류에 대한 가시성이 향상됩니다.

Dnsmasq 준비 중

Dnsmasq는 대부분의 Linux 배포판에 포함되어 있습니다. 일반적으로 dnsmasq 패키지가 없으면 추가할 수 있습니다. 표준 구성 파일은 /etc/dnsmasq.conf에 있습니다. 설정을 기본값과 별도로 유지하려면 /etc/dnsmasq.d 디렉토리에 파일을 추가할 수도 있습니다.

Dnsmasq는 일반적으로 모든 네트워크 인터페이스에서 수신 대기합니다. 특정 인터페이스를 사용하려면 구성 파일에서 다음 행을 추가하거나 주석 처리를 제거하여 지금 설정하십시오.

# Only operate on eth0
interface=eth0

DNS 서버 기능은 기본적으로 활성화되어 있습니다. 포트를 0으로 변경하여 끌 수 있습니다.

port=0

Dnsmasq는 이제 DCHP 전용 모드에서 작동할 준비가 되었습니다.

DHCP 서버 구성

DHCP 서버는 DHCP IP 주소 범위를 지정하여 활성화됩니다.

dhcp-range=192.168.0.101,192.168.0.150,255.255.255.0,6h

이 예는 Dnsmasq가 255.255.255.0 서브넷에서 192.168.0.101과 192.168.0.150 사이의 IP 주소를 제공하도록 지시합니다. 발급된 IP의 임대 기간은 6시간이며, 그 이후에는 고객이 임대 갱신을 요청해야 합니다.

네트워크 요구 사항에 맞게 위의 매개변수를 변경해야 합니다. 장치에 정적으로 할당하려는 모든 IP 주소를 제외하도록 DHCP 범위를 조정하는 것이 좋습니다. 이렇게 하면 동적 임대를 수신하는 장치가 예약된 주소를 발급받을 수 없습니다.

이와 같이 사용하면 Dnsmasq 서버가 IP 주소를 수신할 때 장치의 기본 게이트웨이가 됩니다. DNS도 설정하지 않는 경우 이를 변경하여 Dnsmasq가 자신을 게이트웨이로 제공하지 않도록 해야 합니다.

dhcp-option=3,192.168.0.50

IP 주소를 라우터의 IP 주소로 변경하십시오. 장치는 이제 Dnsmasq에서 IP 주소를 얻은 후 라우터를 정상적으로 사용할 수 있습니다.

고정 IP 설정

Dnsmasq 구성 파일 내에서 정적 IP 주소를 설정할 수 있습니다. 이를 통해 IP 예약을 개별 장치의 네트워킹 파일에 분산시키는 대신 중앙 집중화할 수 있습니다.

고정 IP를 할당하려면 dhcp-host 명령어를 사용하세요. 할당할 MAC 주소와 호스트 이름 및 IP가 필요합니다.

dhcp-host=ab:cd:ef:12:34:56,example-host,192.168.0.10,infinite

여기서 MAC ab:cd:ef:12:34:56이 있는 장치에는 호스트 이름 example-host192.168.0.10. 임대 기간은 갱신이 필요하지 않고 IP가 변경되지 않도록 무한으로 설정됩니다.

추가 고정 IP를 설정하려면 dhcp-host 명령을 필요한 만큼 반복하면 됩니다. 고정 IP로 안정적으로 액세스할 수 있도록 최소한 라우터에 대한 명시적 DHCP 호스트를 추가하는 것이 좋습니다. 이것은 위의 dhcp-option 줄에 할당한 값과 일치해야 합니다.

--dhcp-hostsfile--dhcp-hostsdir 옵션을 사용하여 별도의 파일 또는 디렉터리에서 호스트 정보를 로드할 수 있습니다. 디렉터리의 경우 Dnsmasq는 다시 시작할 필요 없이 자동으로 새로운 변경 사항을 로드합니다.

DHCP 서버 사용

Dnsmasq 설정을 완료했으면 구성을 테스트하여 변경 사항이 유효한지 확인하십시오.

dnsmasq --test

다음으로 Dnsmasq 서비스를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart dnsmasq

라우터의 내장 DHCP 서버를 비활성화합니다. 그런 다음 Dnsmasq 서버의 IP를 DHCP에 사용하도록 라우터 또는 클라이언트 장치를 설정합니다. 단계는 라우터 제조업체에 따라 다르므로 길을 잃으면 장치 설명서를 참조하십시오.

이제 인스턴스가 네트워크의 DHCP 서버로 작동하므로 Dnsmasq에서 임대를 받기 위해 장치에서 IP 주소 갱신을 강제할 수 있어야 합니다. 네트워킹 서비스 systemctl restart networking을 다시 시작하거나 ifdownifup을 사용하여 연결을 끊고 다시 설정하십시오.

Dnsmasq는 발급된 IP 주소를 임대 파일에 기록합니다. 이 파일을 검사하여 네트워크의 활성 장치를 보고 IP가 올바르게 임대되고 있는지 확인할 수 있습니다.

cat /var/lib/misc/dnsmasq.leases

오류가 발생하면 Dnsmasq 서비스 로그를 보고 무엇이 잘못되었는지 확인하십시오.

sudo journalctl -u dnsmasq.service

신뢰할 수 있는 모드

서버를 기존 네트워크에 도입할 때 직면할 수 있는 문제는 장치가 IP를 갱신할 때 시간 초과된다는 것입니다. 각 클라이언트는 자신의 이전 IP를 DHCP 서버로 보내므로 여전히 사용 가능한 경우 동일한 IP를 발급받을 수 있습니다. 새 Dnsmasq 인스턴스의 경우 기존 클라이언트/IP 쌍에 대한 기록이 없으므로 요청이 무시됩니다.

클라이언트는 결국 시간 초과되어 새 요청을 제출하며 이번에는 사용 가능한 IP 주소를 요청합니다. 두 번째 요청은 성공하지만 제한 시간이 상당히 길어 시작 또는 네트워킹 스택 초기화 중에 눈에 띄는 지연이 발생할 수 있습니다.

Dnsmasq가 네트워크의 유일한 DHCP 서버인 경우 구성 파일에 이 줄을 추가하면 이 문제가 해결됩니다.

dhcp-authoritative

권한 모드는 Dnsmasq가 이전에 기록이 없는 IP를 보유했다고 주장하더라도 클라이언트의 요청을 수락하도록 지시합니다. 클라이언트는 여전히 네트워크에 허용되고 IP가 부여되므로 긴 시간 초과로 구분된 두 개의 요청을 할 필요가 없습니다.

기타 설정 조정

몇 가지 다른 설정은 언급할 가치가 있습니다.

dhcp-sequential-ip

Dnsmasq는 일반적으로 각 클라이언트의 MAC 주소를 해시하여 수신하는 IP를 결정합니다. 이는 정적 호스트가 구성되지 않은 경우에도 일반적으로 클라이언트가 연결할 때마다 동일한 IP 주소를 수신함을 의미합니다. dhcp-sequential-id 옵션을 설정하면 Dnsmasq가 지정된 IP 범위의 처음부터 시작하여 순차적인 숫자 순서로 IP를 발급합니다.

dhcp-lease-max=100

이 설정은 Dnsmasq가 발행할 동시 임대 수를 제어합니다. 기본값은 1000입니다. 소규모 네트워크에 있는 경우 서비스 거부 공격으로부터 Dnsmasq를 보호하려면 이 값을 줄이는 것이 좋습니다. 손상된 호스트는 악의적인 DHCP 요청을 보내 수천 개의 중복 임대를 생성할 수 있습니다.

dhcp-alternate-port=8068,8068

DHCP 서버 및 클라이언트에 사용되는 포트 번호를 변경합니다. 기본 포트는 6768입니다. 네트워크 인프라에서 필요로 하지 않는 한 일반적으로 변경하면 안 됩니다.

dhcp-leasefile=/dhcp-leases

DHCP 임대 정보를 저장하는 데 사용되는 파일 경로를 변경합니다. 기본값은 /var/lib/misc/dnsmasq.leases입니다.

요약

Dnsmasq는 로컬 네트워크를 위한 간단한 DHCP 서버로 설정하기 쉽습니다. 소프트웨어의 DNS 기능과 함께 또는 독립적으로 작동할 수 있습니다.

의도적으로 가벼운 서버임에도 불구하고 Dnsmasq는 더 복잡한 설치를 용이하게 하기 위해 다양한 구성 옵션을 지원합니다. 이를 사용하여 DHCP 릴레이 및 프록시를 설정하고, Dnsmasq의 DHCP 사양 준수를 조정하고, 임대가 생성 및 소멸될 때 실행될 사용자 지정 스크립트를 추가할 수 있습니다. 이러한 기능을 통해 실험적인 Dnsmasq 인스턴스를 대규모 네트워크에서 프로덕션 등급 사용에 더 적합한 강화된 인스턴스로 빠르게 발전시킬 수 있습니다.