Общий доступ в Интернет без DHCP


11

Я пытаюсь настроить iMac под управлением 10.6, чтобы он был беспроводным мостом. У меня это работает, но мне нужно отключить DHCP и позволить DHCP-серверу моей сети предоставить IP-адрес для подключенного устройства. Кажется, я не могу найти способ отключить DHCP в Internet Connection Sharing. Кто-нибудь знает возможно ли это? Я предполагаю, что есть ключ, который можно установить /Library/Preferences/SystemConfiguration/com.apple.nat.plist, но я не могу его найти. Я проверил справочную страницу для InternetSharing, и она не упоминает ничего полезного, кроме изменения подсети, которую использует DHCP-сервер.


AFAIK, OS X Internet Sharing делает только NAT, а не мостовые соединения. Таким образом, устройства, использующие ваш iMac для подключения, находятся в собственной частной сети, а ваш iMac действует как маршрутизатор. Из-за этого подключенные устройства должны получать IP-адрес от вашего iMac. Они не смогут связаться с вашим существующим сервером DHCP. Я не достаточно знаком со смелостью интернет-обмена, чтобы быть уверенным, но это мое лучшее квази-осознанное предположение.
Робматерс

Ответы:


2

Со bootpdстраницы руководства :

Для каждого из свойств dhcp_enabled, bootp_enabled, old_netboot_enabled, netboot_enabled и relay_enabled соответствующую службу можно включить или отключить для всех интерфейсов или включить только для определенного набора интерфейсов. Чтобы включить или отключить глобально, используйте логическое значение true или false соответственно. Чтобы включить только для определенного набора интерфейсов, используйте либо строку для отдельного интерфейса, либо массив строк, по одному элементу для каждого интерфейса.

 For example, to enable DHCP on interfaces en0 and en1, disable BOOTP on all
 interfaces, enable NetBoot on en1, and enable relay agent on interface en1,
 /etc/bootpd.plist could contain:
 <?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>bootp_enabled</key>
         <false/>
         <key>dhcp_enabled</key>
         <array>
                 <string>en0</string>
                 <string>en1</string>
         </array>
         <key>netboot_enabled</key>
         <string>en1</string>
         <key>relay_enabled</key>
         <array>
                 <string>en1</string>
         </array>
 </dict>
 </plist>

Чтобы отключить dhcp глобально, используйте:

    <key>dhcp_enabled</key>
    <false/>

Не забудьте отправить SIGHUP (kill -1)сообщение bootpdпосле внесения изменений в файл конфигурации.


1

InternetSharing выполняет 2 задачи:

  • динамическое предоставление IP-адреса устройствам, подключенным к вторичному сетевому интерфейсу ( bootpd)
  • управление трансляцией IP-адресов (NAT) для этих динамически приписываемых адресов ( natdна Snow Leopard и natpmpdна Lion)

InternetSharing не позволяет настроить MacOS X в качестве IP-моста. Смотрите man InternetSharing(доступно на Snow Leopard, но не на Lion).

Это было бы плохой идеей: особенно из-за рисков, связанных с простым жирным прозрачным мостом: внутренне InternetSharingвыполняет:

sysctl -w 'net.inet.ip.forwarding=1'

который разрешает прохождение любого IP-трафика. Чтобы устранить эту проблему, только IP-адреса, назначенные на вторичном интерфейсе, bootpdтранслируются natdи natpmpdкорректно транслируются извне.


Спасибо за ваш ответ, Даниэль. Два вопроса: (1) Каков ваш уровень уверенности в том, что InternetSharing не позволяет отключать DHCP (и можете ли вы предоставить какие-либо доказательства / ресурсы)? (2) Не могли бы вы пояснить, почему вы считаете, что это плохая идея? Какие риски вы говорите? Опять же, доказательства и ссылки будут оценены. Спасибо
Мэтью Бойнс

Я пытался улучшить свои объяснения благодаря вашим вопросам.
дан

На странице man, в частности, сказано: «Подробности com.apple.nat.plist ... здесь не полностью документированы», поэтому вполне возможно, что есть настройка, которая отключает DHCP. К сожалению, мы до сих пор остались без веских доказательств того, можно ли это сделать. Спасибо за добавление деталей все же
Мэтью Бойнс

На самом деле я пошел дальше, чем просто читать заявление об отказе от ответственности на странице руководства;). Я почти уверен, что нет никакого бэкдора для отладки без разветвления bootpd. Но, по крайней мере, вы можете попробовать -dвариант в списке.
дан

com.apple.natэто не то, что настраивает bootpd. /etc/bootpd.plistявляется.
dcow
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.