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


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.