Как использовать Mac в качестве полноценного маршрутизатора с DHCP, DNS, перенаправлением портов и т. д.?

Я знаю, что могу использовать общий доступ к Интернету в macOS, чтобы совместно использовать подключение к Интернету, предоставленное одному сетевому интерфейсу, через один или несколько других сетевых интерфейсов на моем Mac. Однако набор функций ОЧЕНЬ ограничен. Нет выбора диапазона DHCP. Без резервирования DHCP. Нет перенаправления портов. и т. д.

MacOS Server имеет DHCP-сервер и другие службы, но ни одна из них на самом деле никоим образом не использует интернет-соединение Mac, и их нельзя использовать для управления или добавления этих функций к упомянутой выше встроенной функции общего доступа к Интернету macOS.

Существуют ли какие-либо программные инструменты, Apple или сторонние, которые могут делать то, что делает общий доступ к Интернету (распространять интернет-соединение моего Mac через один или несколько других сетевых интерфейсов), но с дополнительными функциями, перечисленными выше?

Спасибо!


Обновление: благодаря двум ответам, которые указали мне на два решения на основе pf. По общему признанию, я бы предпочел решение, которое не требует виртуальной машины, и решение, которое не требует командной строки, но дальнейшие исследования указали мне на IceFloor и Murus и пару других графических интерфейсов для pfctl. Однако pfctl, похоже, является брандмауэром, а не маршрутизатором, и мне нужна маршрутизация. Тем не менее, я ограничен в своем понимании всего этого, и, возможно, это то, чего я все еще хочу, потому что...

С некоторыми дополнительными исследованиями, и я нахожу это:

https://developcents.com/2013/08/12/routers-switches-firewalls-differences/

В разделе «Брандмауэры» говорится: «В отличие от маршрутизаторов и коммутаторов, брандмауэры являются устройствами сетевой безопасности» и «... большинство брандмауэров периметра также имеют возможности маршрутизации (хотя это не является обязательным требованием)».

Итак... Я предполагаю, что вы, ребята, указываете мне на утилиту брандмауэра pfctl, потому что это один из тех брандмауэров, который имеет возможности маршрутизации, то есть, если я хочу использовать его исключительно в качестве маршрутизатора и не использовать какие-либо функции брандмауэра, я сможет это сделать. Это верно? И включены ли в его возможности маршрутизации функции, которые я ищу, как описано в исходном вопросе выше (в частности, выбор диапазона DHCP, резервирование DHCP и переадресация портов)?

Я понимаю, что, возможно, я мог бы ответить на этот вопрос сам, достаточно изучив документацию и сеть в целом, но первоначальная причина вопроса в том, что я привык настраивать базовую станцию ​​​​Apple Airport с помощью утилиты Airport, и первоначальный вопрос ищет что-то с такой ясностью, но для настройки Mac вместо базовой станции в аэропорту, чтобы сделать это.

Что-нибудь из этого имеет смысл, и может ли кто-нибудь помочь мне, учитывая всю эту дополнительную информацию?

Служба DHCP сервера macOS и служба DNS могут помочь в этом.
@Josh Пожалуйста, расскажите, как DHCP и DNS справляются с брандмауэром, NAT, переадресацией портов и т. д.?
@ Джош. К сожалению, это не так. Я не совсем понял, как заставить их делать что-то полезное, но из документации я понимаю, что это службы, доступные для обработки сетевого трафика и т. Д., А что-то еще является маршрутизатором. Сами они не предлагают никаких услуг маршрутизации. Что еще менее полезно, они не работают вместе со встроенной службой маршрутизации (общий доступ к Интернету в macOS) в macOS. Мне это кажется довольно глупым, но, похоже, так оно и есть. Это большая часть того, почему я задаю свой вопрос в первую очередь.
Служба DHCP позволяет редактировать параметры аренды, диапазон IP-адресов, маску подсети, DNS (изменить дополнительные параметры в службе DNS) и т. д.
@ Джош. Привет, да, я понимаю это. Спасибо. Но как это поможет сделать Mac маршрутизатором?
Я добавил его в качестве комментария, потому что он не полностью делает его маршрутизатором, но помогает с вашим вопросом. Вы сказали «выбор диапазона DHCP ... резервирование DHCP». Я ответил, как управлять этими двумя частями. Кроме того, маршрутизатор имеет дело с DNS, я также предоставил решение для этого. Мое решение не делает ваш Mac маршрутизатором, но оно помогает делать то, что вы хотите, аналогично тому, что делает маршрутизатор, поэтому оно было добавлено в качестве комментария.
Если вам нужна помощь в настройке, я могу помочь в отдельном чате.
@ Джош, хорошо, спасибо. Я не знаю, как создать отдельный чат, так что могу ли я пригласить вас начать со мной? В первую очередь возникает вопрос: совместное использование Интернета делает Mac маршрутизатором, но не тем, с которым эти службы могут взаимодействовать, поэтому есть ли способ сделать Mac маршрутизатором, с которым могут взаимодействовать эти службы? Возможно, предложения pfctl из двух других ответов на данный момент могут ответить/разрешить это?
Проверьте мои ответы (строка поиска: user:93229 Internet Sharing) - особенно apple.stackexchange.com/a/248904/93229 и apple.stackexchange.com/questions/228936/… )! Internet Sharing от Apple основан на pf. Установив некоторые дополнительные инструменты с brew и Murus в качестве графического интерфейса, вы получите все, что вам нужно (например, диапазон/резервирование DHCP).
Я склонен голосовать за закрытие этого вопроса, потому что он слишком широкий. В основном ответ таков: да, это можно сделать (но кривая обучения крутая).
@Аллан Проверьте мой ответ, пожалуйста.

Ответы (3)

Просто ... да правильно ....

Примечание. Кто-нибудь, пожалуйста, отредактируйте это, чтобы включить только defaultкоманды

В этом ответе

  • DHCP (диапазон, резервирование, маска, маршрутизатор, время аренды)
  • DNS
  • Перенаправление порта
  • Настраивать
  • Текстовая книга

DHCP

Диапазон

Вариант 1: com.apple.nat.plist[1]

  1. sudo cp /Library/Preferences/SystemConfiguration/com.apple.nat.plist /Library/Preferences/SystemConfiguration/com.apple.nat.plist.orig// Резервное копирование на всякий случай

  2. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberStart [START IP ADDRESS]

  3. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberStart [END IP ADDRESS]

Вариант 2: /etc/bootpd.plist

  1. Включите общий доступ к Интернету

  2. sudo nano /private/etc/bootpd.plist

3.

<key>net_range</key>
        <array>
             <string>[START IP ADDRESS]</string>
             <string>[END IP ADDRESS]</string>
        </array>

Время аренды

  1. Включите общий доступ к Интернету

  2. sudo nano /private/etc/bootpd.plist// Нет необходимости в резервной копии, она будет воссоздана в случае каких-либо проблем

3.

 <key>lease_max</key>
      <integer>[MAX TIME]</integer>
 <key>lease_min</key>
      <integer>[MIN TIME]</integer>

Маска подсети

Опция 1: com.apple.nat.plist

  1. sudo cp /Library/Preferences/SystemConfiguration/com.apple.nat.plist /Library/Preferences/SystemConfiguration/com.apple.nat.plist.orig// Резервное копирование на всякий случай

  2. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkMask [SUBNET MASK]

Вариант 2: /etc/bootpd.plist

  1. Включите общий доступ к Интернету

  2. sudo nano /private/etc/bootpd.plist

3.

<key>net_mask</key>
     <string>[SUBNET MASK]</string>

IP-адрес маршрутизатора 1. Включите общий доступ к Интернету.

  1. sudo nano /private/etc/bootpd.plist

3.

<key>dhcp_router</key>
                    <string>[ROUTER IP ADDRESS]</string>

DNS

Изменить сервер

  1. Включите общий доступ к Интернету

  2. sudo nano /private/etc/bootpd.plist

3.

<key>dhcp_domain_name_server</key>
     <array>
         <string>[DNS SERVER IP]</string>
     </array>

Изменить настройки

Вариант 1: сервер macOS

  • Использовать сервер macOS | DNS-сервис
  • После того, как вы включите его и измените все настройки, он скажет: «Установите для сетевых настроек DNS значение [IP-адрес DNS-сервера], чтобы использовать этот сервер».

    • Измените сервер (как указано выше) на этот IP-адрес.

Вариант 2: /etc/hosts 4

  1. sudo nano /private/etc/hosts

  2. IP [TAB] ДОМЕН


Переадресация портов 5


Настройка/ включение общего доступа к Интернету 6

  1. Откройте системные настройки

  2. Перейти к совместному использованию

  3. Выберите раскрывающийся список рядом с «Поделиться подключением из:» и выберите интерфейс.

  4. Отметьте интерфейсы, с которых вы хотите «поделиться своим подключением».

  5. Нажмите «Параметры Wi-Fi» и измените настройки там.

  6. По завершении нажмите «ОК», затем установите флажок «Общий доступ к Интернету» слева.


Учебник/Глоссарий (не в алфавитном порядке)

Маршрутизатор

DHCP : протокол динамической конфигурации хоста

DNS : система доменных имен

Порт

Брандмауэр : macOS Sierra: Панель «Брандмауэр» в системных настройках «Безопасность и конфиденциальность»

Диапазон IP-адресов

Подсеть

DHCP-резервирование

Диапазон IP : проверьте, открыт ли порт

Модем : Модулятор-демодулятор (Кто это назвал???)

Не стесняйтесь редактировать и добавлять термины учебника

В процессе создания приложения с графическим интерфейсом для этого...
Есть некоторые проблемы с этим, и это немного непоследовательно, я скоро изменю.
Что касается времени аренды DHCP: оно присутствует в /etc/bootpd.plist только после подключения интерфейса, к которому я делюсь, так есть ли способ убедиться, что изменение его с 86400 действительно происходит?
@alesplin iirc вам нужно иногда блокировать файл, чтобы он работал

Конечно, вы можете загрузить pfSense и установить его на виртуальную машину, используя выбранное вами хост-приложение для виртуальной машины. VirtualBox — бесплатный пример.

Спасибо за предложение. Надеюсь сделать это без виртуальной машины, и это должно быть возможно, учитывая, что может сделать общий доступ в Интернет. И ответ Аллана ниже предполагает, что это возможно, даже если мне придется прибегнуть к командной строке. Я добавил еще кое-что к вопросу выше, чтобы получить дополнительные разъяснения относительно ваших ответов и ответов Аллана. Если вы можете предложить что-то еще на основе этого, то заранее спасибо! :)
PS. Я бы проголосовал за вас за это, но, по-видимому, пока не имеет достаточной репутации для этого. Но, пожалуйста, знайте, что я бы сделал это, если бы мог 😉
@DavidT pfSense был разработан с нуля как маршрутизатор / брандмауэр. Он действительно использует pf, я бы почти посчитал его графическим интерфейсом для pf с некоторыми расширенными возможностями. Есть ли причина, по которой виртуальная машина не будет приемлемым решением? pfSense будет работать с минимальными ресурсами.

Брандмауэр ПФ. Он уже включен в macOS. Это тот же брандмауэр, который лежит в основе продуктов pfSense.

Полная документация по ПФ

Привет. Спасибо за это. Звучит многообещающе. И кажется согласующимся с ответом Скоттмеупа выше. Я добавил еще кое-что к вопросу выше, чтобы получить дополнительные разъяснения относительно ваших и его ответов. Если вы можете предложить что-то еще на основе этого, то заранее спасибо! :)
PS. Я бы проголосовал за вас за это, но, по-видимому, пока не имеет достаточной репутации для этого. Но, пожалуйста, знайте, что я бы сделал это, если бы мог 😉