사자 / 이름 확인 순서


9

(이 문제는 10.7.1 업데이트로 사라졌습니다. / etc / hosts는 이제 항상 작동합니다)

Mac을 Lion으로 업데이트했으며 이제 DNS 이후에도 / etc / hosts가 마지막에 참조됩니다. 개발에 사용하는 호스트 이름이 많기 때문에 이것은 매우 성가신 일입니다.

이름 확인 순서는 어디에 구성되어 있습니까? dscacheutil을 사용하여 확인할 수 있으므로 Snow Leopard 시스템이 알려주는 내용은 다음과 같습니다.

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

그리고 여기 사자가 말해

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

두 가지 오류 외에도 / BSD / Local이 이전에 / etc / hosts를 읽는 것으로 가정합니다.

이 "캐시 검색 정책"이 저장된 위치와이를 다시 변경하는 방법을 아는 사람이 있습니까?

dcsl을 사용하여 호스트 이름 항목을 만들 수 있다는 것을 알고 있지만 실제로 여러 컴퓨터에서 사용하는 / etc / hosts를 유지하고 싶습니다.

업데이트 : 해결 순서는 분명히 유틸리티 디렉토리에서 구성 할 수 있습니다. 불행하게도,이 설치 Directroy Utility는 더 이상 서비스 탭에 BSD 파일을 나열하지 않습니다.

이 기능은 Lion에서 사라 졌습니까? 아니면이 설치가 호스입니까?

답변:


5

문제를 해결했습니다 (따라서 질문을 수정하는 대신 답변으로 게시).

BSD 파일은 실제로 디렉토리 유틸리티 나 dscacheutil에 더 이상 나열되지 않지만 적어도 / etc / hosts를 여전히 읽지 만 IP 주소 당 여러 호스트 이름이 더 이상 지원되지 않는 문제가 있습니다. 적어도 그들은 ATM을 제대로 작동하지 않습니다.

이전 / etc / hosts가 다음과 같이 보일 수있는 경우

127.0.0.1 localhost foo foobar

이로 인해 ~ 10 초의 대기 시간이 이러한 호스트 이름을 해결하게됩니다.

하지만 사용하면

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

즉시 해결됩니다.

RedGrittyBrick의 답변도 유효하지만 특히 로컬 디렉토리가 다양한 개발 시스템간에 공유되므로 로컬 디렉토리를 수정하는 대신 호스트 파일을 계속 사용하고 싶습니다.

나머지 질문에도 대답하려면 (현재 모든 것이 명확합니다) :

  • 사용 가능한 디렉토리 중 어떤 순서로 보려는 디렉토리 유틸리티를 구성 할 수있는 디렉토리 유틸리티에서 캐시 해결 순서를 구성합니다.
  • 디렉토리를 구성하려면 디렉토리 유틸리티도 사용하십시오.
  • 시스템 환경 설정> 계정> 로그인 옵션> 디렉토리 가입> 디렉토리 유틸리티로 이동하여 디렉토리 유틸리티를 시작합니다.
  • Lion에서 도움말 파일이 여전히 참조하더라도 BSD 파일 "디렉토리"를 더 이상 사용할 수 없습니다.
  • 내가 말했듯이 / etc / hosts는 여전히 읽었지만 위에서 설명한 버그가 있습니다.

각 항목을 자체 줄에 배치해도 문제가 해결되지 않았습니다. Chrome과 Safari에서 "foo"와 "foobar"를 방문 할 수 있습니까? 나에게는 Chrome에서만 작동합니다. "127.0.0.1 www.google.com"과 같은 기존 웹 사이트를 재정의 할 수 있습니까? 나를 위해, 그것은 Chrome이나 Safari에서 작동하지 않습니다.
richardkmiller

이것은 10 년대가 나를 기다리는 것을 해결했습니다. 고마워요.
조쉬 블리처 스나이더

10.7.3에서 나를 위해 해결했습니다.
EMiller

3

문제는 Lion이 .local TLD를 다르게 처리한다는 것입니다. Bonjour가 사용하는 일부 멀티 캐스트 DNS 기능을 위해 예약되어 있기 때문입니다. 이 문제를 해결하는 유일한 방법은 개발 호스트 (예 : .dev)에 다른 TLD를 사용하는 것입니다. 그것은 나에게 잘 작동합니다. 다른 사람들에게 도움이되기를 바랍니다!


이것은 내 상자에서 일어난 일이었습니다. thx
slf

1

아시다시피, 이것을 처리하는 전통적인 유닉스 방식은에서 hostresorder또는 order지시문을 사용하는 것 입니다 /etc/resolv.conf. OS X은 이러한 파일을 읽고 사용할 수 있지만 OS X은 네트워크 환경 설정을 통해 별도의 시스템을 관리하므로 부팅시 이러한 구성 파일을 덮어 씁니다.

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/en/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

이것은 귀하의 질문에 대답하지 않지만 정보와 링크는 질문을 찾는 데 도움이 될 수 있습니다. 나는 그것을 맞게 압축 할 수 있다면 이것을 주석에 넣었을 것입니다.


dscl에 대해 알고 있지만 Lion에서 더 이상 명시 적으로 켜거나 끌 수없는 hosts 파일을 사용하고 싶었습니다. 항상 읽었지만 이전과는 다른 구문 분석 규칙이 있습니다. 내 질문에 대한 답변을 참조하십시오.
pilif

1

dnsmasq를 로컬 DNS로 사용하고 여기에 항목을 추가하거나 dnsmasq를 사용하여이 문제를 해결할 수 있습니다 /etc/hosts.

스크립트를 사용하여 DNS 서버 순서를 설정할 수 있습니다.

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

파일을 작성하십시오.

chmod +x setdns

그런 다음 (예)와 함께 ist를 사용하십시오 : setdns domain.com 12.23.34.45
( http://hints.macworld.com/article.php?story=20050621051643993 에 게시 됨 )

스크립트가 네트워크 변경시 자동으로로드되도록하려면 .plist를 작성하여 다음을 사용해야 /Library/LaunchDaemons합니다.

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist

1

투명한 소프트웨어 업데이트 서버를 설정하는 동안 Snow Leopard에서이 문제가 발생했습니다. 지금도 라이온에서 작업하고 있습니다. 소프트웨어 업데이트 서버 자체는 해킹과 kludge의 중간에 있지만이 문제는 매우 우아하게 해결되었습니다. 내가 아는 것은 다음과 같습니다.

  • / etc / hosts는 Lion에 있으며 최근 OS X 버전은 DNS 다음에 읽도록 ​​설정되어 있습니다.
  • /etc/resolv.conf는 Lion에 존재하지만 /var/run/resolv.conf에 대한 심볼릭 링크입니다.
  • 네트워크 구성이 업데이트 될 때마다 /var/run/resolv.conf가 다시 작성됩니다. 다시 시작, DHCP 임대 갱신 등으로 인해 발생할 수 있습니다.

다음 스크립트를 만들었습니다. / usr / local / hosts 바인드 :

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

이 작업은 현재 기본 resolv.conf 파일을 백업하고 BIND 전에 원하는 호스트 순서로 새 파일을 작성하고 이전 파일을 끝으로 연결합니다.

/Library/LaunchDaemons/com.domain.hostsBind.plist에서 다음과 같이 시작된 작업으로 메인 resolv.conf 파일을보고이 스크립트를 호출합니다 ( com.domain 을 자신에게 적합한 것으로 변경할 수 있음).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

이것은 Lion Software Update 서버와 함께 우리 조직에서 일하고 있습니다.

마지막으로 resolv.conf의 경로를 /etc/resolv.conf로 변경하면 Snow Leopard에서도 잘 작동합니다. Lion은 방금 심볼릭 링크를 / etc / 대신 / var / run /에 던졌습니다.

-비

PS : 스크립트 소스 : http://forums.macrumors.com/showthread.php?p=6742920


이 작업을 시도했을 때 파일을 변경하면 새 업데이트가 발생했기 때문에 작업이 파일 순서보다 우선합니다.
harmanjd

1

OSX Lion과 함께 제공되는 아파치 서버에는 많은 문제가 있습니다.

  1. 기본적으로 많은 모듈 이로드됩니다. 활성화 된 모듈 목록을
    열고 /etc/apache2/httpd.conf살펴 봅니다 (모든 모듈이 기본적으로 활성화되어 있음). 당신은 아마 #라인 앞에 넣어서 많은 것들을 끌 수 있습니다 .

    이것들은 내가 끈 것들입니다.

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. 호스트 파일은 완벽하지 않습니다.
    이제에 위치한 호스트 파일을 엽니 다 /etc/hosts. 다음은이 줄과 일부 주석입니다.

127.0.0.1 macbook-pro-van-bart.local

(다른 컴퓨터 이름 제외). 다음 줄을 추가하십시오 (컴퓨터 이름 변경).

fe80::1%lo0 macbook-pro-van-bart.local
  1. 아파치 구성을 살펴보십시오 . IP에 의존하지 않는지
    확인하십시오 vhosts. 다음과 같이 변경하십시오.

이름 VirtualHost 127.0.0.1:80

된다 :

NameVirtualHost * : 80

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