Ubuntu 11.04 서버 가상 머신이 있습니다. 내 사무실의 DHCP 서버에서 특정 호스트 이름을 요청하고 싶습니다. 자주 실행하지 않기 때문에 시작할 때마다 IP가 변경됩니다. 분명히 호스트 이름으로 참조하는 것이 좋습니다.
내 DHCP 서버가 DHCP 클라이언트 호스트 이름 요청을 존중한다는 것을 알고 있습니다. 내 Windows 7 컴퓨터에서는 컴퓨터 이름을 바꾸고, 재부팅하고, DHCP 서버에 쿼리하고, 답변 섹션에서 새 이름을 볼 수 있습니다. 내가 사용하는 쿼리 명령은 다음과 같습니다.
dig @192.168.225.5 -x 192.168.235.XXX
새로운 컴퓨터 호스트 이름으로 응답할 때마다. 이제 새 호스트 이름을 사용하여 다른 컴퓨터에서 ping 및 ssh를 실행할 수도 있습니다.
Ubuntu VM에는 그런 행운이 없었습니다. 다음 줄을 포함하도록 /etc/dhcp/dhclient.conf를 수정했습니다.
send host-name "MYRQUESTEDHOSTNAME";
그런 다음 실행
sudo /etc/init.d/networking restart
그러나 가상 머신의 IP 주소를 사용하는 발굴 쿼리에서는 답변 부분이 생성되지 않습니다.
내가 무엇을 놓치고 있나요?
답변1
실제로 호스트 이름이 전송되는지 확인해야 합니다. 그렇다면 문제는 DHCP 서버가 DNS 레코드를 업데이트하지 않는다는 것입니다.
send는 DHCP 서버로 보내는 옵션을 지정합니다. 당신은 이것이 send host-name "foo.bar"
의미한다고 생각합니다foo.bar를 호스트 이름으로 보내기. 그러나 이것이 의미하는 바는호스트 이름과 문자열 "foo.bar"를 dhcp 서버로 보냅니다.. 두 줄이 필요합니다: option 호스트 이름 "foo.bar"; send 호스트 이름;
답변2
내 네트워크에 적합한 솔루션을 찾았지만 귀하의 상황은 다를 수 있습니다. 왜 자동으로 발생하지 않는지 모르겠습니다. 어쨌든 이것은 올바른 IP로 올바른 네트워크 인터페이스의 올바른 네임서버를 업데이트하고(VPN 연결에도 작동함) OSX/BSD 및 Linux에서 작동해야 하는 간단한 쉘 스크립트입니다.
#!/bin/bash
# the host information to send
DOMAIN=$(awk '/^search/ {print $2}' /etc/resolv.conf | head -1)
HOST=$(hostname -s)
# nameserver to update
NAMESERVER=$(awk '/nameserver/ {print $2}' /etc/resolv.conf | head -1)
# linux version to find interace that routes to nameserver
if [[ -e /sbin/ip ]]; then
INTERFACE=$(ip -o route get ${NAMESERVER} | awk '{print $5}')
else # osx / bsd version
INTERFACE=$(route get ${NAMESERVER} | awk '/interface/ {print $2}')
fi
# ip of the interface
IP=$(ifconfig ${INTERFACE} | perl -ne 'print "$1" if /inet.*?(\d+\.\d+\.\d+\.\d+)/')
nsupdate -d <(
echo server ${NAMESERVER} 53
echo update add ${HOST}.${DOMAIN} 86400 A ${IP}
echo show
echo send
)
답변3
위의 질문에 대한 대답은 Windows 컴퓨터가 DHCP 프로세스와 완전히 별개인 호스트 이름으로 네트워크의 이름 서버를 수동으로 업데이트하고 있다는 것입니다.
이상적으로는 DHCP 서버 자체가 이 작업을 수행합니다. 따라서 대답은 DHCP 요청과 아무 관련이 없으며 모든 것은 DHCP/DNS 서버 자체의 구성과 관련이 있습니다.이 기사를 읽어보세요데비안의 올바른 구성.