Неможливо отримати доступ до localhost після оновлення до Mavericks, але може отримати доступ до 127.0.0.1


7

Я побіг це питання , але це не було вирішено (і він не був зачеплений через деякий час). Я не впевнений, що моя проблема однакова, але я не маю достатньої репутації, щоб коментувати це питання.

Я просто перейшов від Snow Leopard (10.6.8) до Mavericks. Перед оновленням я зміг відвідати http://localhost; але тепер я не можу. Я перевірив свій файл хостів, і це виглядало нормально (але це не зовсім моя область знань):

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

Я все ще можу відвідати 127.0.0.1. Це не обов'язково буде величезною угодою, але я намагаюся її використовувати Сінатра на Тонкий який не працює після оновлення ОС (він працював на моїй установці Snow Leopard), тому я боюся, що може виникнути проблема, яка може мати інші негативні наслідки. Дякую.


Не точна відповідь на вашу проблему, але спробуйте muffintheman.localtest.me Ви можете замінити muffintheman нічим, і це вирішить. Ми використовуємо цей ЛОТ на роботі, оскільки ми використовуємо субдомени для перемикання макетів і поведінки.
dstarh

@dstarh, який працював. Як ви сказали, насправді не є виправленням моєї проблеми; але це цікаво. Я можу більше розглянути, як це працює.
MuffinTheMan

Я не знаю, чи це пов'язано. У певний момент (коли я залишив Snow Leopard, мабуть) веб-обмін перестав працювати. Таким чином, я отримала цю маленьку панель налаштувань, щоб повернути її назад: clickontyler.com/web-sharing
GEdgar

@MuffinTheMan хтось тільки що зареєстрував домен localtest.me і поставив шаблон для * .localtest.me, щоб вказати на 127.0.0.1. Раніше нам доводилося підтримувати великі файли хостів для конкретних клієнтів, і ми повністю перейшли на цей домен зараз.
dstarh

Цікаво, @dstarh, спасибі за інформацію!
MuffinTheMan

Відповіді:


6

Здається, що зараз все працює. Я можу отримати доступ localhost знову, і моє додаток запускає Sinatra на Thin, як це було раніше. Завдяки bmike , Я зробив трохи пошуку на те, чому моя петля була недосяжна і натрапив Ця стаття . Я перемістив мій старий файл хостів ( /etc/hosts ) до hosts.old і зробив на своєму місці новий, який просто містив:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1           localhost
255.255.255.255     broadcasthost
::1                 localhost
fe80::1%lo0         localhost

Потім я побіг dscacheutil -flushcache і перезавантажив комп'ютер *. Після цього речі знову працюють нормально. Я можу тільки здогадуватися, що щось дивне сталося з моїм старим файлом хостів. Я також взяв JakeGould's рада і здуло ruby ​​2.0.0 (у мене ще був ruby ​​1.8.7 - ви не можете видалити ruby ​​повністю на mac, так як він використовує ruby ​​для інших речей) і rvm і перевстановлював їх; але я не впевнений, що мав нічого спільного з моїм успіхом, оскільки я все ще мав ті ж самі питання, поки не виконав вищезазначені кроки.

Примітка: вищезгаданий файл hosts містить практично те ж саме, що й мій файл хостів, який містився раніше (див. оригінальне запитання); однак, у моєму оригінальному файлі хостів були інші речі, які я не поділяв у моєму питанні (я просто поділився тим, що я вважав відповідною частиною), так що, можливо, щось там увійшло, коли я оновився - хотілося б, щоб я точно знав.

* Перезавантаження, ймовірно, не потрібно. Я насправді ця проблема після створення нового користувача з резервного диска на моєму комп'ютері на роботі (який працює гірський лев) і (тільки сьогодні) слідував ті ж кроки вище (мінус дует рубін і перезавантаження машини), і це працював. Це змушує мене вважати, що серце питання було боркетом /etc/hosts файл.


Та не вже!? Це повністю вирішило мою проблему
Parris

4

У мене немає таких проблем підключення до веб-сервера, коли він насправді слухає порт 80.

Якщо у вас немає жодного веб-сервера, ось що ви повинні отримати від терміналу, щоб показати, що дозвіл імен працює на всіх мережевих інтерфейсах, перш ніж telnet відмовиться від з'єднання з портом 80:

mac:~ me$ telnet localhost 80
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying fe80::1...
telnet: connect to address fe80::1: Connection refused
telnet: Unable to connect to remote host

Якщо ви отримаєте різні результати, я б використовував scutil для визначення досяжності для вашого мережевого призначення:

mac:~ me$ scutil -r localhost
Reachable,Local Address
mac:~ me$ scutil -r loopback
Reachable
mac:~ me$ scutil -r 127.0.0.1
Reachable,Local Address

Можливо, варто перевірити, якщо у вас є LittleSnitch або інший брандмауер, який має правила, які блокують доступ до мережі або перезавантажуються в безпечний режим, щоб перевірити, чи є деякі розширення ядра або інший конфлікт, що запобігає доступності за промовчанням і доступ до локальних портів. Крім того, ви, безумовно, захочете перевірити будь-який веб-сервер, який ви працюєте, щоб переконатися, що він дійсно слухає порт 80:

mac:~ me$ sudo lsof -i :80 | egrep "PID|LISTEN"
Password:
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd    1645 root    8u  IPv6 0x513627eaa81c8205      0t0  TCP *:http (LISTEN)
httpd   15851 _www    8u  IPv6 0x513627eaa81c8205      0t0  TCP *:http (LISTEN)
httpd   72969 _www    8u  IPv6 0x513627eaa81c8205      0t0  TCP *:http (LISTEN)

Крім того, закрийте всі веб-браузери або будьте готові до фільтрації цих мережевих з'єднань із зазначеного вище lsof команда, оскільки вона показує всі з'єднання через порт 80.


telnet localhost 80 плює localhost: nodename nor servname provided, or not known, але telnet 127.0.0.1 80 плює Trying 127.0.0.1... \ Connected to localhost. \ Escape character is '^]'. Що це мені каже?
MuffinTheMan

@MuffinTheMan істотно відредагував відповідь. Сподіваюся, він тепер охоплює більшість баз ...
bmike

Дякуємо, @bmike. Результати scutil: localhost -> Reachable,Local Address - loopback -> Not Reachable - 127.0.0.1 -> Reachable,Local Address. Так що, схоже, є проблема з петлею?
MuffinTheMan

1

Mavericks (OS X 10.9) використовує Ruby 2.0. Не зрозуміло, що ви використовували під Snow Leopard (OS X 10.6.8), але, можливо, велика зміна у версії порушила щось? У моєму досвіді оновлення Ruby ніколи не є легко сумісними назад і - IMHO - дуже неприємно підтримувати з точки зору системного адміністратора такі причини.

Я б рекомендував переустановлювати будь-які дорогоцінні камені Ruby, які у вас є, і спробуйте ще раз.


Я використовую ruby ​​2.0.0p247 (і раніше), але я не думаю, що це повинно вплинути на річ localhost.
MuffinTheMan

Якщо ви встановили Ruby 2.0.0p247 вручну на OS X 10.6.8 & amp; потім 10.9 встановлює власну версію 10.9, є великі шанси, що вона перезаписала деякі дорогоцінні камені або компоненти таким чином, щоб вони заблокували вашу настройку. Я рекомендую вам просто перевстановити дорогоцінні камені, які потрібно вручну & amp; Подивіться, що станеться.
JakeGould

Спасибі, я спробував здути Ruby 2.0.0 і навіть rvm - потім перевстановити. Без змін :/
MuffinTheMan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.