Ладно, эта проблема сводит меня с ума уже несколько дней. Я обычно использую Linux, поэтому, хотя я и чувствую себя комфортно с командной строкой, я понятия не имею, где искать в OSX. И обычный поиск в Google не помогает.
Вот моя проблема. Когда я настраивал коробку, она была в одной сети, которая была 10.x.x.x
. Это было нормально. Теперь, когда я приношу ее домой, я открываю сетевой интерфейс, подключаюсь к домашней беспроводной сети и пытаюсь пинговать что-то:
$ ping google.com
PING google.com (74.125.113.104): 56 data bytes
Request timeout for icmp_seq 0
^C
--- google.com ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
colossus:~ eteran$ ping google.com
PING google.com (74.125.113.104): 56 data bytes
ping: sendto: No route to host
Request timeout for icmp_seq 0
ping: sendto: No route to host
Request timeout for icmp_seq 1
«Нет маршрута к хосту», хорошо, я проверяю таблицы маршрутизации...
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.255.255.1 UGSc 11 5 en1
10.255.255.1/32 link#5 UCS 1 0 en1
10.255.255.1 link#5 UHRLWI 12 0 en1
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 19 2051 lo0
169.254 link#5 UCS 0 0 en1
192.168.10 link#5 UCS 4 0 en1
192.168.10.1 0:1f:90:23:7a:69 UHLWI 12 62 en1 1193
192.168.10.7 c0:cb:38:6c:3:33 UHLWI 2 164 en1 996
192.168.10.9 127.0.0.1 UHS 1 369 lo0
192.168.10.10 0:1a:a0:e6:ee:90 UHLWI 0 30 en1 903
192.168.10.255 link#5 UHLWbI 2 25 en1
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UH lo0
fe80::%lo0/64 fe80::1%lo0 Uc lo0
fe80::1%lo0 link#1 UHL lo0
fe80::%en1/64 link#5 UC en1
fe80::5ab0:35ff:fe7b:dcf3%en1 58:b0:35:7b:dc:f3 UHL lo0
ff01::/32 ::1 Um lo0
ff02::/32 ::1 UmC lo0
ff02::/32 link#5 UmC en1
Да, вот в чем проблема, маршрут по умолчанию установлен на 10.255.255.1
. Который, как я предполагаю, был из другой сети. Я могу вручную настроить это с помощью команды route
. Но следующая перезагрузка... он вернулся!
Маршрутизатор моей домашней сети — 192.168.10.1
, поэтому, конечно, я хочу, чтобы он был маршрутом по умолчанию. И я посмотрел, запрос DHCP определенно говорит использовать его как маршрут по умолчанию. Но OSX просто отказывается его использовать. Он настаивает на использовании этого маршрута по умолчанию для предыдущего подключения!
Где это хранится и как это изменить?
решение1
Флаг S
в записи маршрута означает, что он добавлен вручную, поэтому вам, возможно, придется удалить его с помощью команды.
Пытаться sudo route delete default
.
решение2
Оно вСистемные настройкиподСеть. Установите все наАвтоматическийи это должно вернуться к норме.
Обновлять:Более действенный способ.
Нажмите наМеставыпадающий список и выберитеРедактировать местоположения. Нажмите , +чтобы добавить новое местоположение. Назовите его Auto 2
(или как-нибудь еще). Выберите это местоположение и примените его.
решение3
Упомянутый выше ручной подход с удалением и добавлением нового шлюза по умолчанию с помощью команды route решил проблему для меня, но это было лишь временное решение, поскольку после перезагрузки снова был установлен неправильный шлюз.
Чтобы решить эту проблему раз и навсегда, я сначала удалил все интерфейсы в Системных настройках/Сети, а затем добавил обратно те, которые посчитал нужными. В моем случае, только 'Ethernet'.
Это было на OS X Lion (10.7.5)
решение4
Если вы используете дома и ethernet, и wifi-подключение, то, поскольку ваш ethernet должен быть выбран в списке сетей, его значение по умолчанию предпочтительнее, чем wifi dhcp. Чтобы удалить значение по умолчанию из таблицы маршрутизации, вам придется перейти в настройки сети и перейти к настройке ip-адреса. Здесь установите поле «маршрутизатор» пустым, так как это gw по умолчанию.