간단히 말해서:
내가 아는 한, hostname
명령에는 옵션이 있습니다 -f
. 매뉴얼 페이지에서:
-f
정자체 이름에 도메인 정보를 포함합니다. 이것이 기본 동작입니다.
이것이 기본 동작이므로 인쇄된 이름에 도메인 정보가 포함되지 않고 MY-COMPUTER-NAME
.
추가 정보:
공유 기본 설정에서 "컴퓨터 이름"을 변경할 수 없습니다(그림과 같이 회색으로 표시됨).
처음에 내 "localhostname"도 "Hippotigris"로 설정되어 있었지만 이 문제를 발견했을 때 다음 명령에서 얻은 이름으로 변경했습니다 hostname
.
내가 찾은이 기사제목은 "터미널에서 Mac 호스트 이름 또는 컴퓨터 이름 설정"이지만 이렇게 하면 문제가 해결될지 아니면 악화될지 잘 모르겠습니다.
내가 달성하려는 것:
저는 NodeJS의 내장 dns.lookup
기능을 os.hostname
내장 기능과 함께 사용합니다. 내 생각에 이 hostname
함수는 명령이 인쇄하는 것과 동일한 것을 반환한다고 생각합니다 hostname
(현재 수행 중인 작업이 바로 그것입니다). 내가 실행할 때 :
node -e "require('dns').lookup(require('os').hostname() + '.local', console.log)"
잘 작동하고 로컬 네트워크에 있는 내 컴퓨터의 IP 주소를 인쇄하지만 실행하면
node -e "require('dns').lookup(require('os').hostname(), console.log)"
오류를 기록합니다.getaddrinfo ENOTFOUND LM-SJN-21001464
주변에 물어보니이 스크립트는 대부분의 사람들에게 작동하지 않는 것 같습니다 .local
. 따라서 내 컴퓨터 구성과 관련이 있는 것으로 추측됩니다.
답변1
고마워요트위터 도움말DNS 설정의 검색 도메인에 ".local"을 추가하여 핵심 문제를 해결했지만 hostname
(및 os.hostname
)은 여전히 ".local"이 추가되지 않은 호스트 이름을 반환합니다.
따라서 제가 겪었던 문제에 대한 답변은 다음과 같습니다. 하지만 제가 게시한 질문은 아닙니다. 무슨 일이 일어나고 있는지, 걱정해야 하는지 이해하고 싶습니다.
답변2
이것CPU 이름기계 자체의 이름입니다. 호스트 이름 뒤의 부분, 즉 .local
in hippotigris.local
또는 .kentcdodds.com
in을 hippotrigris.kentcdodds.com
호출합니다.도메인 이름.
호스트 이름 자체에 도메인 이름을 추가하면 안 됩니다.
댓글에서 이미 언급했듯이 .local
이는 특별합니다.멀티캐스트 DNS, 로컬 LAN 세그먼트에서 멀티캐스트 이름 확인을 수행합니다. 이는 일반적인 DNS 이름 확인이 작동하는 방식과 다르며 Apple에서 광범위하게 사용합니다.
따라서 require('dns').lookup()
노드에서 이 작업을 수행하면 조회를 위해 일반 DNS 메커니즘을 사용하게 됩니다. 그러나 호스트 이름은 일반 DNS 서버로 사용하는 서버(홈 라우터의 서버이든 ISP의 DNS 서버이든)에 등록되지 않습니다. 그래서 당신은 대답을 얻지 못합니다.
을 추가하면 .local
노드(또는 기본 MacOS 라이브러리)가 대신 mDNS를 사용하므로 호스트 이름을 찾을 수 있습니다.
따라서 .local
검색 경로에 직접 추가하거나 다른 방법으로 어딘가에 추가해야 합니다(예를 들어 Linux에서는 DNS와 mDNS를 사용하여 이름 검색을 임의의 순서로 동시에 구성할 수 있습니다).
표시된 GUI 창에 입력한 호스트 이름(Hippotigrisis)이 mDNS를 통해 발표된 이름(LM-SJN-21001464)과 다른 이유는 확실하지 않습니다(Mac UI에서는 이것이 호스트 이름이라는 힌트를 제공하지 않기 때문입니다). 실제로 발생함) - 대화상자가 설정하는 정보가 정확히 무엇인지, 다른 이름(일련번호처럼 보이는)이 어디에 설정되어 있는지 알아내야 합니다. 명령줄 도구는 이를 검색하는 데 도움이 될 수 있습니다.
답변3
와, 이 질문은 좀 이상해요. 여기에 무슨 일이 벌어지고 있거든요.
다른 사람들이 말한 것을 반복하지 마십시오.
...사용 중인 Node 앱의 mDNS 이름에 액세스하여 LAN의 별도 상자에서 앱을 볼 수 있고 mDNS 사용을 선호한다고 가정합니다.아니요사용해야 한다. 현지의그런데 IPv4 주소를 사용하는 대신 주소 이름에 webpack과 같은 도구를 사용하면 0.0.0.0
webpack 구성 파일에 호스트 이름을 설정하여 LAN(예: MacBook에서 실행되는 별도의 모바일 장치)에 있는 애플리케이션의 개발 서버 버전에 액세스할 수 있습니다. 로컬로 실행되는 React 애플리케이션.
몇 가지 AOL 키워드 검색을 수행한 후 macOS 시스템 환경설정의 공유 패널에서 참조하는 이름도 다음과 같을 수 있는 것으로 나타납니다.네트워크 BIOS이름이며 어떤 시점에서는 NETBIOS 이름이 15자를 초과할 수 없는 것 같습니다.이것이 아직도 사실인지 확실하지 않습니다, 그래서 계산해 보면 LM...이 있는 컴퓨터 이름은 정확히 15자입니다.
여기 어둠 속에서 촬영