mDNS / DNS-SD
mDNS(Multicast DNS)와 DNS-SD(DNS Service Discovery) 관련 개발을 진행하게 되어 관련 내용을 간단하게 정리해보려 한다!
mDNS(Multicast DNS) | DNS-SD(DNS Service Discovery) |
로컬 네트워크의 다른 기기를 검색하기 위해 논의되고, 개발되어 널리 사용 중 (두 기술은 서로 의존성을 가지고 있지는 않음) |
|
로컬 네트워크에 참여한 호스트를 찾기위해서 멀티캐스팅 하는 것이 핵심 | 서비스 타입을 기준으로 서비스를 찾는 방식 |
mDNS를 이용하면 로컬 네트워크에 참여한 호스트를 자동으로 찾을 수는 있지만 어떤 종류의 서비스인지는 확인할 수 없다.
하지만, DNS-SD를 이용하면 서비스 타입(service type)을 설정하는 것으로 서비스 검색이 가능하다.
Avahi
- zero configuration networking(zeroconf)의 구현체
- 리눅스 구현 - avahi , 애플 구현 - bonjour
- Publication(advertising a service) : 네트워크에 특정 서비스를 제공하는 노드가 참여하면, 이 노드는 자동으로 자신의 서비스를 네트워크에 참여하는 다른 모든 노드에 광고
- Discovery : 주변에 사용할 수 있는 서비스가 있는지 확인
- Resolution : 서비스를 제공하는 노드의 이름과 IP 주소, 포트 번호 확인 가능
zero configuration networking(zeroconf)
- 네트워크 설정을 자동으로 처리하여 사용자가 별도의 설정 없이 네트워크에 연결할 수 있도록 하는 기술
- 특히 가정이나 소규모 사무실 환경에서 유용하며, 네트워크 장치들이 서로를 자동으로 발견하고 연결할 수 있게 함
- 주요기능
1) 주소 할당(IPv4 Link-Local Addressing): DHCP 서버 없이도 IP 주소를 자동으로 할당함
2) 이름 확인(Multicast DNS, mDNS): DNS 서버 없이도 네트워크 상의 장치 이름을 확인할 수 있음
3) 서비스 발견(DNS Service Discovery, DNS-SD): 네트워크 상의 서비스(예: 프린터, 파일 공유 등)를 자동으로 발견하고 연결할 수 있음
DNS vs Avahi
- DNS는 일반 웹 사이트에는 적합하지만 리소스가 제한된 소형 장치에는 적합하지 않음
- 리소스가 제한된 소형 장치에서는 보통 Zero-configuration networking (zeroconf) 같은 더 간단하고 효율적인 네트워크 서비스 발견 메커니즘을 사용
- 이는 장치가 네트워크에 자동으로 연결되고 서비스를 발견할 수 있게 해주며, 별도의 설정이나 관리가 필요하지 않음
- DNS는 인터넷 전체에서 서비스를 찾는 데 사용되는 반면, Avahi는 로컬 네트워크에서 서비스를 자동으로 찾는 데 사용
리눅스에서 Avahi 사용하기
// avahi-deamon 설치
$ apt-get install avahi-daemon
// avahi-utils 설치
$ apt-get install avahi-utils
// avahi-browse 로 서비스 발견(-a 는 모든 서비스 검색을 뜻함)
$ avahi-browse -a
// serviceType으로 찾기
$ avahi-browse _serviceType._udp
// avahi-browse 로 ip 주소 얻기
$ avahi-browse -alr
// 얻은 정보로 ping
$ ping 192.168.1.1 // ip
$ ping TV-3.local // hostname
// udp port 확인
# netstat -tuln | grep udp
// avahi 설정 파일
$ /etc/avahi/avahi-daemon.conf
// avahi 데몬 재시작
$ sudo systemctl restart avahi-daemon
// UDP/8080 열려있는지 확인
$ nmap -sU -p 8080 192.168.1.1
난 api를 사용해서 serviceType과 txtRecords를 등록 후 위와 같이 잘 등록 되었는지 확인했다.
api를 사용하지 않는 경우에는 아래 글을 참고하면 될 것 같다.
'프로그래밍 > Linux' 카테고리의 다른 글
[Linux] 파일 이름, 내용 일괄변경 (0) | 2024.04.03 |
---|---|
[Linux] grep 정리 (0) | 2024.03.27 |
[Linux] sed(Stream Editor) 정리 (0) | 2024.03.26 |
[Linux] 권한 설정 정리 (chown, chmod, chgrp) (0) | 2024.03.20 |