호스트 이름을 사용하여 LAN에서 머신에 액세스 할 수있게하는 방법


120

호스트 이름을 사용하여 액세스하려는 머신에 대한 세부 정보는 다음과 같습니다.

$ 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

클라이언트 (실행 ping하는 시스템) 또는 클라이언트가 문의 하는 시스템에서 무언가를 수행해야합니다 . 클라이언트의 OS는 무엇입니까? DNS 구성은 무엇입니까?
Gilles

DNS 구성이란 무엇입니까? 또한 업데이트 된 게시물을 참조하십시오.
tshepang

1
내 대답은 당신이 겪은 일입니까? 누구가 알고있는 - 그렇다면 문제는 간단하게 필요로 ping하고 /etc/hosts있지만 DNS에 대해 어쨌든?
Gilles

고마워 보라. 아, 그리고 그것은 답변보다 더 많은 기사입니다 :)
tshepang

3
답은 "install and configure dnsmasq"입니다. 끝난. :)
워렌 영

답변:


145

로컬 네트워크를 포함하여 인터넷에서 컴퓨터는 IP 주소로 서로를 호출 합니다 . 머신 B의 이름을 사용하여 머신 A에서 머신 B에 액세스하려면 머신 A는 B의 이름을 IP 주소에 매핑 할 수있는 방법이 있어야합니다. A에서 머신 이름을 선언하는 세 가지 방법이 있습니다.

  • 호스트 파일 . 이것은 이름을 주소에 매핑하는 간단한 텍스트 파일입니다.
  • 도메인 이름 시스템 (DNS) . 이것은 글로벌 인터넷에서 사용되는 방법입니다. 예를 들어, 브라우저에이 페이지를로드 할 때 컴퓨터에서 가장 먼저하는 일은의 주소를 알기 위해 DNS 요청을하는 것입니다 unix.stackexchange.com.
  • NIS , LDAP 또는 Active Directory 와 같은 다른 이름 데이터베이스 . 이들은 일부 회사 네트워크에서 사용되지만 자주 사용되지는 않습니다 (사용자 데이터베이스에 NIS, LDAP 또는 AD를 사용하는 많은 네트워크는 머신 이름에 DNS를 사용함). 네트워크에서 이들 중 하나를 사용하는 경우 전문적인 네트워크 관리자가 있으므로 수행 할 작업을 요청해야합니다.

이들이 실제로 작동하는 방법에는 여러 가지가 있습니다. 그것들을 모두 덮을 수는 없습니다. 이 답변에서는 몇 가지 일반적인 상황을 설명하겠습니다.

호스트 파일

hosts 파일 방법은 특별한 방법이 필요하지 않다는 장점이 있습니다. 한 대의 컴퓨터 이름이 변경 될 때 모든 컴퓨터를 업데이트해야하므로 여러 대의 컴퓨터가있는 경우 번거로울 수 있습니다. B의 IP 주소가 동적으로 할당되면 네트워크에 연결할 때마다 다른 주소를 얻을 수 없습니다.

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

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

유닉스 시스템에서 hosts 파일은 /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에서 hosts 파일을 편집하십시오. A가 일부 UNIX 시스템을 실행중인 경우 /etc/hosts수퍼 유저 로 편집해야합니다 . 시스템 관리자 (루트)로 명령을 실행하는 방법을 참조하십시오 .

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

필요한 장비가 있다면이 방법이 가장 간단합니다. 하나의 장치 만 구성하면 모든 컴퓨터에서 서로의 이름을 알 수 있습니다. 이 방법은 컴퓨터가 DHCP 를 통해 IP 주소를 얻는다고 가정합니다 . 이는 컴퓨터가 네트워크에 연결될 때 IP 주소를 자동으로 검색하는 방법입니다. DHCP가 무엇인지 모른다면 아마 그렇습니다.

네트워크에 홈 라우터 가있는 경우 해당 라우터에 연결된 시스템의 이름을 구성하는 것이 가장 좋습니다. 먼저 B 의 MAC 주소 를 알아야합니다 . 각 네트워크 장치에는 고유 한 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입니다. 케이블 (또는 wifi를 통해 연결된 경우 wifi 카드)을 통해 라우터에 연결된 네트워크 포트에 해당하는 HWaddr 라인을 선택해야합니다. 여러 항목이 있는데 어떤 항목을 모르는 경우 케이블을 연결하고 IP 주소를받는 네트워크 장치를 확인하십시오 ( inet addr아래 줄).

이제 라우터의 웹 인터페이스에서 "DHCP"와 같은 설정을 찾으십시오. 설정의 이름과 위치는 라우터 모델에 따라 다르지만 대부분 비슷한 기본 설정이 있습니다. 토마토 펌웨어의 모습은 다음과 같습니다 .

토마토 스크린 샷

MAC 주소, IP 주소 및 원하는 이름을 입력하십시오. 로컬 네트워크의 주소 범위에서 IP 주소를 선택할 수 있습니다. 대부분의 홈 라우터는 192.168 형식의 주소 범위로 사전 구성되어 있습니다. x . y 또는 10. x . y . z . 예를 들어 위에 표시된 토마토 라우터의 "네트워크"탭에는 값이 10.3.0.1 인 "라우터 IP 주소"설정과 값이 255.255.255.0 인 "서브넷 마스크"설정이 있습니다. 로컬 네트워크의 주소는 10.3.0 형식이어야합니다. z . 자동 할당 된 DHCP 주소에 대한 주소 범위도 있습니다 (10.3.0.129–10.3.0.254). 수동으로 할당 된 DHCP 주소의 경우이 범위에 속하지 않는 주소를 선택하십시오.

이제 B를 네트워크에 연결하면 지정한 IP 주소를 가져와 네트워크의 모든 컴퓨터에서 지정된 이름으로 연결할 수 있습니다.

Dnsmasq로 나만의 DNS 서버 만들기

사용 가능한 홈 라우터가없는 경우 모든 Linux 시스템에서 동일한 기능을 설정할 수 있습니다. Dnsmasq 를 사용하여 DNS 를 설정 하는 방법을 설명하겠습니다 . 다른 유사한 프로그램이 많이 있습니다. 구성하기 쉽고 가볍기 때문에 Dnsmasq를 선택했습니다 (예를 들어 위에서 설명한 Tomato 라우터가 사용합니다). Dnsmasq는 PC, 서버 및 네트워크 장비를위한 대부분의 Linux 및 BSD 배포판에서 사용할 수 있습니다.

항상 켜져 있고 고정 IP 주소가 있고 어떤 종류의 Linux 또는 BSD를 실행중인 컴퓨터를 선택하십시오. S (서버용)라고합시다. S에서 dnsmasq패키지를 설치하십시오 (아직 패키지가없는 경우). 아래에서는 구성 파일이 /etc/dnsmasq.conf; 위치는 배포판에 따라 다를 수 있습니다. 이제 몇 가지 작업을 수행해야합니다.

  • 인터넷에서 제공되는 호스트 이름과 함께 호스트 이름을 제공하도록 Dnsmasq에 지시하십시오. 가장 간단한 방법은 이름과 IP 주소를 입력하고 /etc/hosts(위의“호스트 파일”섹션 참조) 지시문이 주석 처리 되어 /etc/dnsmasq.conf있지 않은지 확인 no-hosts하십시오. (로 시작하는 줄 #은 주석 처리됩니다.) 다른 파일에 이름을 넣을 수 있습니다. 그럴 경우에 줄 addn-hosts=/path/to/hosts/file을 넣으십시오 /etc/dnsmasq.conf.
  • 인터넷상의 컴퓨터 이름에 대한 IP 주소를 얻는 방법을 Dnsmasq에 알려주십시오.

    • 데비안, 우분투 또는 파생 제품을 사용하는 경우 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, 라인 넣어 server=8.8.8.8의를 /etc/dnsmasq.conf. 를 변경 한 후 /etc/dnsmasq.confDnsmasq를 다시 시작하십시오. 그렇게하는 명령은 배포판에 따라 다릅니다. 일반적인 가능성은 restart dnsmasq또는을 포함 /etc/init.d/dnsmasq restart합니다.

  • S에게 모든 호스트 이름 요청에 Dnsmasq 서비스를 사용하도록 지시하십시오. 파일 /etc/resolv.conf을 루트로 편집하고 모든 nameserver줄을 제거한 다음 nameserver 127.0.0.1대신 넣으십시오 .
    • 데비안 또는 우분투에서 resolvconf를 사용 하는 경우 네트워크를 설치하고 실행 /etc/resolv.conf하면서 resolvconf패키지 를 설치하면 차선책 일 수 있습니다 . 파일 있는지 확인하십시오 base, head그리고 tail/etc/resolvconf/resolv.conf.d/디렉토리가 어떤이 포함되지 않은 nameserver다음 항목을 실행 resolvconf -u(루트로).
  • 다른 시스템에 S를 DNS 서버로 사용하도록 지시하십시오. 10.3.0.2가 S의 IP 주소 인 /etc/resolv.conf모든 nameserver행을 편집 하고 바꾸 nameserver 10.3.0.2십시오 (S의 IP 주소를 찾는 방법은 위 참조).

Dnsmasq를 DHCP 서버 로 사용 하여 시스템이 이름에 해당하는 주소를 자동으로 얻을 수 있습니다. 이것은이 답변의 범위를 벗어납니다. Dnsmasq 설명서를 참조하십시오 (어렵지는 않습니다). 지정된 로컬 네트워크에는 단일 DHCP 서버 만있을 수 있습니다 (로컬 네트워크의 정확한 정의는이 답변 범위를 벗어납니다).

글로벌 인터넷의 이름

지금까지 로컬 네트워크를 가정했습니다. 세계의 다른 구석에있는 기계에 이름을 지정하려면 어떻게해야합니까? DHCP와 관련된 부분은 로컬 네트워크 내에서만 적용 할 수 있다는 점을 제외하고 위의 기술 중 하나를 계속 사용할 수 있습니다. 또는 시스템에 퍼블릭 IP 주소가있는 경우 자신의 퍼블릭 이름을 등록 할 수 있습니다. (공용 이름에도 개인 IP 주소를 할당 할 수 있습니다. 덜 일반적이고 덜 유용하지만 기술적 인 어려움은 없습니다.)

자신의 도메인 이름 얻기

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

동적 DNS

컴퓨터에 동적 IP 주소가있는 경우 동적 DNS 프로토콜을 사용하여 주소가 변경 될 때 컴퓨터 이름과 관련된 IP 주소를 업데이트 할 수 있습니다 . 모든 도메인 이름 공급자가 동적 DNS를 지원하는 것은 아니므로 구입하기 전에 쇼핑하십시오. 개인 용도로 No-IP 는 고유 한 도메인 (예 :)을 사용하는 경우 무료 동적 DNS 서비스를 제공합니다 example.ddns.net.


Dnsmasq로 자신 만의 DNS 서버 만들기 : 다른 컴퓨터에 Windows가 설치되어있을 때 S를 사용하도록 다른 컴퓨터에 지시 할 수있는 방법
Radu Rădeanu

@Radu 어딘가에서 제어판을 통해 연결과 관련된 DNS 서버를 변경할 수 있습니다. 네트워크 인터페이스의 연결 속성을 가져와야한다고 생각합니다.
Gilles

c : \ windows \ system32 \ drivers \ etc \ hosts를 추가했으며 작동합니다. 감사!
Radu Rădeanu

나는 이것을 찾고 내 머리카락을 꺼내고 제안한대로 라우터에서 찾았습니다. 자세한 정보 감사합니다!
Jason Turan

회사 네트워크 인 경우 인프라 부서에 알려야합니다. 내 리눅스 맥을 DNS 서버 목록에 추가하려면?
WesternGun

24

멀티 캐스트 DNS (mDNS)를 사용하십시오 . LAN 서브넷에서 작동하는 제로 구성 프로토콜입니다. 서버가 필요하지 않습니다. 용도 .local(이미 무엇을 사용하는) TLD를.

당신이 요구하고 있기 때문에, 다른 모든 것은 지나친 것 같습니다. 그렇지 않다면 아마 묻지 않았을 것입니다.


1
모든 Windows 상자에 무언가를 설치하지 않으면 Windows에서 mDNS가 지원되지 않는 것 같습니다.
Zitrax

1
@Zitrax Good point (이것은 * nix 사이트입니다). Windows 설치에 대한 관련 정보를 찾을 수 있습니다 비교적 간단합니다 -.
tne

3
일명 Zeroconf 또는 Bonjour. avahi패키지로 제공됩니다 . avahi-browse -alr예를 들어 네트워크를 쿼리 할 수 ​​있습니다 .
DanMan

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

/etc/init.d/networking restart

이것을 클라이언트 나 호스트에서 실행해야합니까?
tshepang

첫 번째 비트는 dhcp 서버에서 수행되며 실행하려고합니다 service restart dhcpd. 두 번째 부분은 클라이언트에서 수행되며 대부분의 배포판에서 이제로 실행되어야합니다 service networking restart.
Caleb

내가 기억하는 것처럼 클라이언트 측에서만 이것을 실행하면된다 ..
LanceBaynes

3

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

어떤 종류의 이름 조회 서비스를 사용하도록 다른 시스템을 구성해야합니다. 이 될 수 /etc/hosts클라이언트, LDAP, nsswitch에, 또는 정상적인 DNS 서버에서. bind로컬 도메인 내의 모든 로컬 컴퓨터를 사용 하고 입력 한 다음 해당 사이트의 DNS를 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.