호스트 이름을 사용하여 LAN에서 컴퓨터에 액세스하는 방법

호스트 이름을 사용하여 LAN에서 컴퓨터에 액세스하는 방법

호스트 이름을 사용하여 액세스하려는 컴퓨터의 세부 정보는 다음과 같습니다.

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

이것은 기본 Debian 6(Squeeze) 설치이므로 아직 아무것도 다루지 않았습니다.

다음은 위 컴퓨터(Debian Unstable 실행)에 액세스하려고 시도하는 컴퓨터에서 받은 메시지입니다.

$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local

답변1

로컬 네트워크를 포함한 인터넷에서 기계는 다음을 통해 서로 호출합니다.IP 주소. 시스템 B의 이름을 사용하여 시스템 A에서 시스템 B에 액세스하려면 시스템 A에는 B의 이름을 해당 IP 주소에 매핑하는 방법이 있어야 합니다. A에서 시스템 이름을 선언하는 방법에는 세 가지가 있습니다.

  • 호스트 파일. 이것은 이름을 주소에 매핑하는 간단한 텍스트 파일입니다.
  • 이것도메인 이름 시스템(DNS). 이는 글로벌 인터넷에서 사용되는 방식이다. 예를 들어, 브라우저에 이 페이지를 로드하면 컴퓨터가 가장 먼저 하는 일은 주소를 알아내기 위해 DNS 요청을 하는 것입니다 unix.stackexchange.com.
  • 다음과 같은 다른 이름 데이터베이스국정원,LDAP또는활성 디렉터리. 이는 일부 기업 네트워크에서 사용되지만 자주 사용되지는 않습니다(사용자 데이터베이스로 NIS, LDAP 또는 AD를 사용하는 많은 네트워크는 컴퓨터 이름에 DNS를 사용함). 네트워크에서 이들 중 하나를 사용하는 경우 전문 네트워크 관리자에게 어떻게 해야 하는지 문의해야 합니다.

실제로는 다양한 방식으로 발생할 수 있습니다. 이를 모두 다루는 것은 불가능합니다. 이 답변에서는 몇 가지 일반적인 시나리오를 설명하겠습니다.

호스트 파일

호스트 파일 접근 방식의 장점은 특별한 방법이 필요하지 않다는 것입니다. 이름이 변경되면 각 시스템을 업데이트해야 하기 때문에 여러 시스템이 있는 경우 이는 문제가 될 수 있습니다. 이는 B의 IP 주소가 동적으로 할당되는 경우(네트워크에 연결할 때마다 다른 IP 주소를 얻도록)에는 적합하지 않습니다.

호스트 파일은 이름을 IP 주소에 매핑하는 간단한 줄 목록입니다. 다음과 같습니다.

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Unix 시스템에서는 호스트 파일이 입니다 /etc/hosts. Windows에서는 입니다 c:\windows\system32\drivers\etc\hosts. 인터넷에 연결할 수 있는 거의 모든 운영 체제에는 비슷한 파일이 있습니다.Wikipedia에 목록이 있습니다.

A의 호스트 파일에 B에 대한 항목을 추가하려면 다음을 수행하십시오.

  1. B의 IP 주소를 결정합니다. B에서 명령을 실행합니다 ifconfig(명령을 찾을 수 없는 경우 시도 /sbin/ifconfig). 출력에는 다음과 같은 줄이 포함됩니다.

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    이 예에서 B의 IP 주소는 10.3.1.42입니다. 회선 이 여러 개인 경우 항목 , 터널 또는 가상 항목이 inet addr:아닌 네트워크 카드에 해당하는 회선을 선택하십시오 .lo

  2. A에서 호스트 파일을 편집합니다. A가 Unix 시스템을 실행 중인 경우 /etc/hosts슈퍼유저로 편집 해야 합니다 .시스템 관리자(루트)로 명령을 실행하는 방법.

가정 또는 소규모 사무실 네트워크의 DHCP+DNS

필요한 장비가 있다면 이 방법이 가장 쉽습니다. 하나의 장치만 구성하면 모든 컴퓨터가 서로의 이름을 알 수 있습니다. 이 방법에서는 컴퓨터가 다음을 통해 IP 주소를 얻는다고 가정합니다.동적 호스트 구성 프로토콜, 컴퓨터가 네트워크에 연결되면 IP 주소를 자동으로 가져오는 방법입니다. DHCP가 무엇인지 모른다면 아마 알고 있을 것입니다.

네트워크에 다음이 있는 경우홈 라우터, 이 라우터에 연결된 컴퓨터의 이름을 구성하는 가장 좋은 장소입니다. 먼저, 알아내야 합니다.MAC 주소B. 각 네트워크 장치에는 고유한 MAC 주소가 있습니다. B에서 명령을 실행합니다 ifconfig -a(명령을 찾을 수 없는 경우 시도 /sbin/ifconfig -a). 출력에는 다음과 같은 줄이 포함됩니다.

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

이 예에서 MAC 주소는 입니다 01:23:45:67:89:ab. 케이블(또는 Wi-Fi를 통해 연결된 경우 Wi-Fi 카드)을 통해 라우터에 연결된 네트워크 포트에 해당하는 HWaddr 라인을 선택해야 합니다. 항목이 여러 개 있고 어느 항목인지 모르는 경우 케이블을 연결하고 어떤 네트워크 장치가 IP 주소를 수신하는지 확인하세요( inet addr아래 행).

이제 라우터의 웹 인터페이스에서 "DHCP"와 같은 설정을 찾으십시오. 설정의 이름과 위치는 전적으로 라우터 모델에 따라 다르지만 대부분의 라우터에는 유사한 기본 설정 세트가 있습니다. 이것이 에 보이는 모습입니다토마토 펌웨어:

토마토 스크린샷

MAC 주소, IP 주소, 원하는 이름을 입력하세요. 로컬 네트워크 주소 범위 내의 모든 IP 주소를 선택할 수 있습니다. 대부분의 홈 라우터는 192.168.168 형식의 주소 범위로 사전 구성되어 있습니다.엑스.와이또는 10.엑스.와이.. 예를 들어 위에 표시된 Tomato 라우터의 네트워크 탭에는 값이 10.3.0.1인 라우터 IP 주소 설정과 값이 255.255.255.0인 서브넷 마스크 설정이 있습니다. 이는 컴퓨터의 로컬 주소를 의미합니다. 컴퓨터의 네트워크는 10.3.0 형식이어야 합니다.. 자동으로 할당된 DHCP 주소 범위(10.3.0.129~10.3.0.254)도 있습니다. 수동으로 할당된 DHCP 주소의 경우 이 범위 밖의 주소를 선택하세요.

이제 B를 네트워크에 연결하면 지정한 IP 주소를 얻고 지정한 이름을 가진 네트워크의 모든 컴퓨터에서 액세스할 수 있습니다.

Dnsmasq를 사용하여 나만의 DNS 서버 만들기

강력한 홈 라우터가 없다면 모든 Linux 컴퓨터에서 동일한 기능을 설정할 수 있습니다. 사용법을 설명드리겠습니다DNS설립하다도메인 명 시스템. 유사한 프로그램이 많이 있습니다. 구성이 쉽고 가볍기 때문에 Dnsmasq를 선택했습니다(예를 들어 위에 표시된 Tomato 라우터에서 사용됨). Dnsmasq는 PC, 서버 및 네트워크 장치용 대부분의 Linux 및 BSD 배포판에서 사용할 수 있습니다.

일종의 Linux 또는 BSD를 실행하는 고정 IP 주소를 가진 상시 접속 컴퓨터를 선택합니다. 이를 S(서버)라고 부르겠습니다. S에서는 dnsmasq패키지가 아직 존재하지 않는 경우 패키지를 설치합니다. 아래에서는 구성 파일이 /etc/dnsmasq.conf일부 배포판에 따라 다를 수 있다고 가정합니다 . 이제 몇 가지 작업을 수행해야 합니다.

  • 인터넷에서 얻은 호스트 이름 외에 호스트 이름을 제공하도록 Dnsmasq에 지시하세요. 가장 쉬운 방법은 이름과 IP 주소 /etc/hosts(위의 "호스트 파일" 섹션 참조) 를 입력하고 지시문의 주석 처리가 해제 /etc/dnsmasq.conf되지 않았는지 확인하는 것입니다 no-hosts. (a로 시작하는 줄은 주석 #처리됩니다.) 이름을 다른 파일에 넣을 수 있습니다 .addn-hosts=/path/to/hosts/file/etc/dnsmasq.conf
  • Dnsmasq에게 인터넷에서 컴퓨터 이름의 IP 주소를 얻는 방법을 알려줍니다.

    • Debian, Ubuntu 또는 파생 제품을 실행 중인 경우 이 resolvconf패키지를 설치하십시오. 대부분의 경우 모든 것이 즉시 작동됩니다.
    • 네트워크 관리자나 ISP가 DNS 서버 주소를 제공한 경우 해당 주소를 에 입력합니다 /etc/dnsmasq.conf. 예:

      server=8.8.8.8
      server=8.8.4.4
      
    • 현재 DNS 설정이 무엇인지 모르는 경우 이 파일을 검토하세요 /etc/resolv.conf. 이와 같은 줄이 보이면 nameserver 8.8.8.8하나를 입력하세요. 변경 후 Dnsmasq를 다시 시작하세요. 이를 수행하는 명령은 분포에 따라 다릅니다. 일반적인 가능성에는 또는 가 포함됩니다.server=8.8.8.8/etc/dnsmasq.conf/etc/dnsmasq.confrestart dnsmasq/etc/init.d/dnsmasq restart

  • 모든 호스트 이름 요청에 대해 Dnsmasq 서비스를 사용하도록 S에 지시합니다. 파일을 /etc/resolv.conf루트로 편집하고 각 nameserver줄을 삭제한 다음 nameserver 127.0.0.1.
    • Debian 또는 Ubuntu에서 resolvconf를 사용하는 경우 /etc/resolv.conf네트워크가 작동 중일 때 패키지를 설치하는 것이 최적이 아닐 수 있습니다. files 디렉토리 에 항목이 포함되어 있지 않은지 resolvconf확인한 다음 (루트로) 실행하십시오.baseheadtail/etc/resolvconf/resolv.conf.d/nameserverresolvconf -u
  • 다른 컴퓨터에 S를 DNS 서버로 사용하도록 지시합니다. /etc/resolv.conf모든 줄을 편집 nameserver하고 10.3.0.2가 S의 IP 주소인 단일 줄로 바꿉니다 nameserver 10.3.0.2(S의 IP 주소를 찾는 방법은 위 참조).

Dnsmasq를 다음과 같이 사용할 수도 있습니다.동적 호스트 구성 프로토콜컴퓨터가 해당 이름에 해당하는 주소를 자동으로 얻을 수 있도록 하는 서버입니다. 이는 이 답변의 범위를 벗어납니다. Dnsmasq 문서를 확인하세요(어렵지 않습니다). 특정 로컬 네트워크에는 DHCP 서버가 하나만 있을 수 있습니다. 로컬 네트워크의 정확한 정의는 이 답변의 범위를 벗어납니다.

글로벌 인터넷의 이름

지금까지는 로컬 네트워크를 가정했습니다. 세계의 다른 곳에 위치한 기계의 이름을 지정하고 싶다면 어떻게 해야 할까요? 위 기술 중 하나를 계속 사용할 수 있지만 DHCP와 관련된 부분은 로컬 네트워크에만 적용됩니다. 또는 컴퓨터에 공용 IP 주소가 있는 경우 해당 주소에 대한 고유한 공용 이름을 등록할 수 있습니다. (개인 IP 주소를 공개 이름에 할당할 수도 있습니다. 이는 덜 일반적이고 덜 유용하지만 기술적인 어려움은 없습니다.)

자신만의 도메인 이름을 얻으세요

당신은 당신 자신을 얻을 수 있습니다도메인 이름그리고 도메인 내의 호스트 이름에 IP 주소를 할당합니다. 도메인 이름을 도메인 공급자에 등록해야 합니다. 비용은 일반적으로 연간 10~15달러입니다(가장 저렴한 도메인의 경우). 도메인 이름 공급자의 웹 인터페이스를 사용하여 호스트 이름에 주소를 할당합니다.

동적 도메인 이름 확인

컴퓨터에 동적 IP 주소가 있는 경우 다음을 사용할 수 있습니다.동적 도메인 이름 확인주소가 변경될 때 컴퓨터 이름과 연결된 IP 주소를 업데이트하기 위한 프로토콜입니다. 모든 도메인 이름 공급자가 동적 DNS를 지원하는 것은 아니므로 구입하기 전에 조사해 보십시오. 개인적인 용도로는IP 없음example.ddns.net예를 들어 자체 도메인 이름을 사용하는 경우 무료 동적 DNS 서비스가 제공됩니다.

답변2

사용멀티캐스트 DNS(mDNS). 이는 LAN 서브넷에서 작동하는 구성이 필요 없는 프로토콜입니다. 서버가 필요하지 않습니다. .local이미 사용하고 있는 TLD를 사용하세요 .

당신이 묻고 있기 때문에 다른 모든 것이 너무 많은 것 같습니다. 그렇지 않다면 아마 묻지 않을 것입니다.

추신: .localTLD는 확인자의 DNS 검색 경로를 통해 암시될 수 있으며 구현에 따라 OS별 호스트 이름 개념에서 전체 도메인이 자동으로 구성될 수 있습니다(따라서 어떤 방식으로든 호스트 이름을 변경할 필요가 없을 수도 있습니다). 예를 들어, 호스트 이름이 LAN 서브넷에서 확인되거나 svr확인 되어야 하는 svr.local경우 입니다.svr

답변3

~처럼테네제안,멀티캐스트 DNS(mDNS)는 동일한 로컬 네트워크에서만 컴퓨터에 액세스하려는 한 가장 쉬운 솔루션인 것 같습니다.

Linux에서는 mDNS를 사용하여 호스트 이름을 네트워크로 내보낼 수 있습니다.넘쳐. Ubuntu Server 20.04에 설치하려면 apt install avahi-daemon.

그러면 다음을 통해 서버에 액세스할 수 있습니다.hostname.local

답변4

컴퓨터는 어떤 호스트 이름이 어떤 IP 주소에 속하는지 마술처럼 아는 것이 아닙니다. localhost에서도 일종의 조회가 필요합니다.

서비스를 조회하려면 특정 이름을 사용하도록 다른 시스템을 구성해야 합니다. 이는 /etc/hosts클라이언트, ldap, nsswitch 또는 일반 DNS 서버에 있을 수 있습니다. 로컬 도메인 내의 모든 로컬 컴퓨터를 사용 bind하고 입력한 다음 사이트에 DNS 서비스를 제공하도록 했습니다.

관련 정보