В предыдущей статье я писал о том, как поднять локальный DNS сервер на Mac OS. Однако есть небольшая проблема: если IP адрес получается по DHCP, то DNS заменяется на сервер провайдера. Поскольку для мобильных устройств такая конфигурация используется в 99% случаев, надо сказать Mac OS, чтобы она не получала адрес DNS сервера по DHCP. Делается это так:
# sudo bash
# cd /System/Library/SystemConfiguration/IPConfiguration.bundle/Contents
# cp Info.plist Info.plist.old
# nano Info.plist
Находим в файле следующие строки:
<key>DHCPRequestedParameterList</key>
<array>
<integer>1</integer>
<integer>3</integer>
<integer>6</integer>
<integer>15</integer>
<integer>119</integer>
<integer>95</integer>
<integer>252</integer>
<integer>44</integer>
<integer>46</integer>
<integer>47</integer>
</array>
И удаляем элементы номер 6, 15 и 119.
Сохраняем файл. Идем в настройки сети и добавляем DNS сервер 127.0.0.1. Перезапускаем компьютер. Теперь адреса серверов от DHCP будут игнорироваться и всегда будет использоваться локальный DNS.
Если нужно использовать DNS провайдера, то можно либо восстановить исходный файл Info.plist, либо прописать его как форвардер в настройках локального DNS.
Это решение работает для Lion. Для Snow Leopard нужно править другой файл, подробнее расписано здесь.
Короче — не обязательно это все. После коннекта мы просто входим в настройки сети и прописываем руками статичный DNS (127.0.0.1). Все, система будет его помнить для данной APN и не будет перезаписывать новый DNS.
Когда нам понадобится все вернуть, то просто удаляем этот DNS и вуаля! У нас настройки APN по умолчанию.