คำสั่งการแก้ปัญหาสิงโต / ชื่อ


9

(ปัญหานี้หายไปสำหรับฉันด้วยการอัปเดต 10.7.1 - / etc / hosts ทำงานได้ตามปกติสำหรับฉัน)

ฉันได้อัปเดต Mac เป็น Lion และตอนนี้ฉันสังเกตเห็นว่า / etc / hosts ได้รับการพิจารณาครั้งสุดท้ายแม้หลังจาก DNS นี่เป็นเรื่องที่น่ารำคาญมากเพราะฉันมีชื่อโฮสต์มากมายที่ฉันใช้เพื่อการพัฒนา

ลำดับการแก้ไขชื่อถูกกำหนดไว้ที่ไหน? ฉันสามารถตรวจสอบได้โดยใช้ 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

และนี่คือสิ่งที่ Lion บอกฉัน

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 นั้นไม่มีอยู่ใน Directory Utility หรือใน dscacheutil อีกต่อไป แต่อย่างน้อย / etc / hosts ก็ยังอ่านอยู่ แต่มีปัญหาในชื่อโฮสต์หลายชื่อต่อ IP address ดูเหมือนจะไม่ได้รับการสนับสนุนอีกต่อไปหรือ อย่างน้อยพวกมันก็ไม่ทำงานกับ 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 ยังคงอ่านอยู่ แต่มีข้อผิดพลาดที่ฉันได้อธิบายไว้ข้างต้น

การวางแต่ละรายการในบรรทัดของตัวเองไม่ได้แก้ปัญหาให้ฉัน คุณสามารถไปที่ "foo" และ "foobar" ได้ทั้งใน Chrome และ Safari หรือไม่? สำหรับฉันมันใช้งานได้ใน Chrome เท่านั้น คุณสามารถแทนที่เว็บไซต์ที่มีอยู่เช่น "127.0.0.1 www.google.com" ได้หรือไม่? สำหรับฉันมันใช้ไม่ได้กับทั้ง Chrome หรือ Safari
richardkmiller

สิ่งนี้ได้รับการแก้ไข 10s รอฉัน ขอบคุณที่ทำให้ฉันเป็นบ้า
Josh Bleecher Snyder

แก้ไขให้ฉันเมื่อวันที่ 10.7.3 yay!
EMiller

3

ปัญหาคือ Lion จัดการ. local TLD แตกต่างกันเนื่องจากถูกสงวนไว้สำหรับฟีเจอร์ Multicast DNS บางตัว (ใช้โดย Bonjour) วิธีเดียวที่ฉันค้นพบในการแก้ไขปัญหานี้คือการใช้ TLD อื่นสำหรับโฮสต์การพัฒนา (เช่น: .dev) มันใช้งานได้ดีสำหรับฉันหวังว่ามันจะเป็นประโยชน์กับคนอื่น ๆ !


นี่คือสิ่งที่เกิดขึ้นในกล่องของฉันอย่างแน่นอน ขอบคุณ
slf

1

ขณะที่ผมคาดหวังว่าคุณรู้ว่าวิธีที่ใช้ระบบปฏิบัติการยูนิกซ์แบบดั้งเดิมในการจัดการนี้คือการใช้hostresorderหรือสั่งในorder /etc/resolv.confOS 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 ได้อย่างชัดเจนอีกต่อไป อ่านเสมอ แต่มีกฎการแยกวิเคราะห์ที่แตกต่างกว่าก่อน - ดูคำตอบของคำถามของฉัน
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 with (ตัวอย่าง): setdns domain.com 12.23.34.45
(โพสต์โดย emzy บนhttp://hints.macworld.com/article.php?story=20050621051643993 )

หากคุณต้องการให้สคริปต์โหลดโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงเครือข่ายคุณควรสร้าง. plist ใส่ไว้/Library/LaunchDaemonsและใช้งาน:

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

1

ฉันพบปัญหานี้ใน Snow Leopard ขณะที่พยายามตั้งค่าเซิร์ฟเวอร์การอัพเดทซอฟต์แวร์แบบโปร่งใส ฉันได้รับมันทำงานกับสิงโตในขณะนี้เช่นกัน Software Update Server นั้นอยู่กึ่งกลางระหว่างการแฮ็คกับ kludge แต่ปัญหานี้ได้รับการแก้ไขอย่างสวยงาม นี่คือสิ่งที่ฉันรู้:

  • / etc / hosts มีอยู่ใน Lion และเหมือนกับรุ่น OS X ล่าสุดที่ตั้งค่าให้อ่านหลังจาก DNS
  • /etc/resolv.conf มีอยู่ใน Lion แต่เป็น symlink ไปยัง /var/run/resolv.conf
  • /var/run/resolv.conf จะถูกเขียนใหม่ทุกครั้งที่มีการอัปเดตการกำหนดค่าเครือข่ายของคุณ อาจเกิดจากการรีสตาร์ทต่ออายุการเช่า DHCP เป็นต้น

ฉันสร้างสคริปต์ต่อไปนี้ / usr / local / hostsBind:

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 และเชื่อมต่อไฟล์ก่อนหน้านี้กับจุดสิ้นสุด

ฉันเรียกสคริปต์นี้โดยการดูไฟล์หลัก resolv.conf ด้วยงานที่เปิดตัวต่อไปนี้ที่ /Library/LaunchDaemons/com.domain.hostsBind.plist (คุณสามารถเปลี่ยน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>

สิ่งนี้ทำงานให้กับองค์กรของเราด้วยเซิร์ฟเวอร์อัพเดทซอฟต์แวร์สิงโต

สิ่งสุดท้ายที่ควรทราบมันใช้งานได้ดีกับ Snow Leopard เช่นกันหากคุณเปลี่ยนเส้นทางสำหรับ resolv.conf เป็น /etc/resolv.conf Lion เพิ่งโยนพิชท์บอลของ symlink ไปที่ / var / run / แทนที่จะเป็น / etc /

-b

PS: แหล่งที่มาสำหรับสคริปต์: http://forums.macrumors.com/showthread.php?p=6742920


เมื่อฉันลองสิ่งนี้งานจะยังคงสั่งซื้อล่วงหน้าบนไฟล์เนื่องจากการเปลี่ยนไฟล์จะทำให้เกิดการอัปเดตใหม่
harmanjd

1

มีหลายสิ่งที่ผิดปกติกับเซิร์ฟเวอร์ apache ที่มาพร้อมกับ 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. ลองดูที่การตั้งค่าapache
    ของคุณตรวจสอบให้แน่ใจว่าคุณvhostsไม่พึ่งพา IP เปลี่ยนเป็นดังนี้

ชื่อ VirtualHost 127.0.0.1:80

กลายเป็น:

ชื่อ VirtualHost *: 80

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.