VMware ESXi의 VM 이름으로 이름 확인을 원합니다.

4340 단어 VMware_ESXiESXivmware

배경



가상 머신 이름과 게스트 OS의 호스트 이름이 잘못되었을 때 곤란했습니다. VM을 새로 만들 때 개별 컴퓨터에 설정을 적용하는 데 어려움을 겪었습니다. 따라서 ESXi의 가상 컴퓨터 이름과 가상 컴퓨터에 연결된 IP 주소를 DNS로 확인하기로 결정했습니다.

하고 싶은 일



VM 이름이 example이고 VM의 IP 주소가 192.168.100.1이면 다음과 같습니다.
$ nslookup example
192.168.100.1

NickNS



인터넷에서 찾았지만 발견되지 않았기 때문에 자작했습니다. 이름은 Nick Name Server에서 NickNS (적당)입니다.

기능


  • 드로잉 : 가상 머신 이름 example → 가상 머신의 IP 주소 192.168.100.1
  • 역방향 : 가상 머신의 IP 주소 192.168.100.1 → 가상 머신 이름 example

  • 사용법



    설치합니다.
    go get github.com/cdsl-research/nickns
    

    사전에 ESXi 노드의 SSH를 열어 키 인증으로 SSH 할 수있는 상태로 만듭니다. 그런 다음 다음 형식으로 구성 파일을 만듭니다.

    hosts.toml
    [host A]
    address = "esxi.example.com"
    port = "22"
    user = "root"
    identity_file = "/path/to/id_rsa"
    
    [host B]
    address = "esxi.example.com"
    port = "22"
    user = "root"
    identity_file = "~/path/to/id_rsa"
    

    DNS 서버로서의 동작을 설정 파일로 지정합니다.

    config.toml
    port = 5310
    domains = ["local.", "example.com."]
    ttl = 3600
    

    바이너리를 실행하여 시작합니다.
    $ nickns
    2020/03/14 21:40:25 NickNS Starting at 5310/udp
    

    시도하려면 dig 명령으로 확인해 보겠습니다.
    # Type A
    $ dig A +short @127.0.0.1 -p 5300 elastic5.local
    192.168.0.35
    $ dig A +short @127.0.0.1 -p 5300 unbound.example.com
    192.168.0.35
    
    # Type PTR
    $ dig +short @127.0.0.1 -p 5300 -x 192.168.0.35
    unbound.local.
    

    서버 측에서도 로그가 출력됩니다.
    $ nickns
    2020/03/14 21:40:25 NickNS Starting at 5310/udp
    2020/03/14 21:40:27 [QueryHit] elastic5.local. => 192.168.0.36
    2020/03/14 21:40:30 [QueryHit] elastic5.example.com. => 192.168.0.36
    

    실제 동작의 모습







    메커니즘





    ESXi 노드에 SSH하여 vim-cmd를 두드리고 있습니다.

    사용한 기술


  • Go 언어
  • DNS 프레임 워크 miekg/dns

  • 끝에



    프로토타입 레벨의 잡잡한 구현이 되어 있으므로, 다음의 기능을 추가하고 싶습니다.
  • DNS 쿼리 캐시
  • Graceful Restart
  • 명령 인수에 의한 파라미터 변경

  • GitHub : cdsl-research/nickns

    PullReq나 Star를 주시면 기쁩니다.

    좋은 웹페이지 즐겨찾기