LAN에서 "애니 캐스트 이름 확인"을 구현하도록 Avahi를 설정하는 방법이 있습니까?


9

첫째, 일부 배경 : 격리 된 LAN에서 실행되는 소수의 전용 Linux 서버가 포함 된 랩이 있습니다. 모든 서버는 동일한 OS (Debian Linux) 및 동일한 독점 서버 소프트웨어를 실행하며 서버 프로세스는 데이터를 동기화하기 위해 서로 통신합니다. 즉, 클라이언트에 관한 한 클라이언트가 어느 서버에 연결하든 상관 없습니다. 서버는 다른 서버와 동일한 데이터를 반환합니다.

이 Linux 서버는 모두 avahi-daemon을 실행하여 mDNS 호스트 이름을 게시하므로 클라이언트는 " http : //linux-server-1.local "과 같이 입력 할 수 있습니다 . 자신의 웹 브라우저에 넣고 Linux 서버 # 1 등에 연결하십시오.

클라이언트 시스템 (보통 Bonjour가 설치된 Mac 또는 Windows 랩톱)에 앉아있는 사용자가 현재 온라인 상태 인 Linux 서버를 알고 있거나 알아 내야한다는 것을 제외하고는 이것은 모두 훌륭합니다. 그가 그 중 하나에 연결되어 있는지 확인하십시오. 예를 들어, 서버 # 2가 오늘 오프라인 상태이고 클라이언트가 " http : //linux-server-2.local "을 입력 한 경우 URL 표시 줄에 응답하지 않습니다. 물론 이것은 세상의 종말은 아니지만 모든 것이 "제대로 작동"하기를 기대하는 초보자 사용자에게는 성가 시며 강력한 클라이언트 측 스크립팅 개발이 더 복잡해집니다 (클라이언트 측 스크립트 이후) 오프라인 서버를 명시 적으로 처리하는 방법을 알아야합니다).

이를 염두에두고 내 질문은 이것입니다 : anycast 스타일의 mDNS 호스트 이름 별칭도 게시하도록 Avahi를 구성 할 수 있습니까? 목표는 누구나 자신의 랩톱에 앉아서 " http : //any-linux-server.local "을 입력하는 입니다. (또는 유사) 현재 온라인 상태 인 서버 중 하나에 연결하십시오 (다시 말해서 어느 서버 든 중요하지 않음).

Bonjour가 설치되어 있지 않은 경우를 제외하고는 클라이언트 랩톱을 제어 할 수 없으므로 클라이언트 랩톱을 특별히 구성하지 않아도 작동해야합니다.

또한 별도의 네임 서버 또는 프록시 박스 또는 특정 Linux 서버의 존재에 의존 할 수는 없습니다. 단일 실패 지점이 생겨 피해야합니다.

답변:


13

Avahi 프로젝트의 저자 중 한 명인 Trent Lloyd.

이것은 이론상 가능하지만 쉽지는 않습니다. 불행히도 Avahi에서 호스트 이름을 게시하기위한 기본 메커니즘은 배타적 DNS 목록을 게시했습니다. 따라서 동일한 IP를 가리키는 두 개의 호스트 이름을 게시하려고하면 역방향 DNS 레코드에서 충돌이 발생합니다.

Avahi API를 사용하여 A 레코드를 수동으로 게시하고 배타적이지 않은 것으로 표시하면이 작업을 수행 할 수 있습니다. Python, C 또는 이와 유사한 서버마다 작은 백그라운드 프로세스를 작성해야합니다.

사용할 API 호출은 avahi_entry_group_add_record이므로 AVAHI_PUBLISH_ALLOW_MULTIPLE을 플래그 필드에 전달해야합니다. 그러면 작동합니다.

대안은 의도 한 방식으로 서비스 검색을 사용하고 각 클라이언트가 HTTP 서비스를 게시하고 파이어 폭스 플러그인 또는 이와 유사한 것을 사용하여 발표 된 웹 서비스를 찾아 보는 것입니다. 또는 다른 종류의 서비스 브라우저.

Bonjour는 Internet Explorer 용 플러그인을 포함하여 북마크 바처럼이 작업을 수행했지만 여전히 있는지 확실하지 않습니다.


2
고맙습니다! 누군가 관심이 있으시면
Jeremy Friesner

흠. 이 성공적으로 이름을 공개했다고 그 프로그램의 인쇄 :(를 Avahi의 최신 버전과 함께 작동하지 않지만, 네트워크의 다른 호스트에서 검색 할 때 그들은 표시되지 않습니다.
프레드릭 노르
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.