Аналог ipconfig на mac os

Обновлено: 03.07.2024

Я хочу перенаправлять запросы с 192.168.99.100:80 на 127.0.0.1:8000 . Вот как я бы сделал это в Linux, используя iptables:

Как сделать то же самое в MacOS X? Я попробовал комбинацию команд ipfw без особого успеха:

@Zoredache Для прослушивания порта 80 требуется sudo, а некоторые веб-серверы не теряют привилегии достаточно быстро, чтобы безопасно запускать их с помощью sudo.

7 ответов 7

Поэтому я нашел способ сделать это. Я не уверен, что это предпочтительный способ, но он работает! В вашей любимой оболочке:

(Псевдоним lo0 кажется недостающей частью)

Если вы хотите, чтобы (поддельный) домен указывал на этот новый псевдоним, убедитесь, что /etc/hosts содержит строку:

В командной строке введите следующие две команды для переадресации соединений с 127.0.0.1:3000 на 10.0.0.1 :

Затем отредактируйте файл /etc/hosts или /private/etc/hosts и добавьте следующую строку, чтобы сопоставить свой домен с 10.0.0.1 .

После сохранения файла hosts очистите локальный DNS:

на новый, чтобы затем можно было сопоставить хост с этим IP-адресом.


Привет, sudo discoveryutil udnsflushcaches выдает мне, что команда не найдена, но она по-прежнему правильно соответствует записи. Но как я могу сопоставить второй порт? Я пытался сделать шаги 1+2 с id: 10.0.0.2 и другим портом, но всегда принимает только последнее соединение. Итак, если я делаю последний 10.0.0.1 и порт 3000, он пересылает 3000, если я делаю последний 10.0.0.2 и порт 4000, он пересылает 4000. В моем /private/etc/hosts я написал обе записи с (соответствующим) другим идентификатором.

Мне тоже недавно приходилось делать подобное, и в поисках наткнулся на этот ответ. К сожалению, в ответе Нафе используется ipfw, который сейчас устарел и недоступен в OSX; и ответ Кевина Лири действительно немного хакерский. Поэтому мне нужно было сделать что-то лучше (чище) и я решил поделиться этим здесь для потомков. Этот ответ во многом основан на подходе, упомянутом в этой сути.

Как упоминает OP, при указании браузера на 192.168.99.100 должен быть получен ответ от сервера по адресу localhost:8000. Добавлять псевдоним в ifconfig на самом деле не обязательно, достаточно одного pfctl: для этого необходимо изменить файл pf.conf в /etc/pf.conf.

Сначала мы создаем (с помощью sudo) новый файл привязки (назовем его перенаправлением) по адресу: /etc/pf.anchors/redirection. По сути, это обычный текстовый файл, содержащий следующую строку (прямо как в ответе Кевина Лири): rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000. После создания нового файла привязки на него необходимо сослаться в файле pf.conf. Откройте файл pf.conf с помощью sudo и добавьте «перенаправление» rdr-anchor после последней строки rdr-anchor (это rdr-anchor «com.apple/*» ) и добавьте «перенаправление» привязки загрузки из «/etc/pf». .anchors/redirection" в конце.

В конечном итоге файл pf.conf должен выглядеть так:

И это почти все. Просто перезапустите pfctl, введя sudo pfctl -d, чтобы сначала отключить его, а затем sudo pfctl -fe /etc/pf.conf, чтобы запустить его снова.

Теперь, если вам нужно, чтобы это происходило автоматически после каждой перезагрузки, необходимо выполнить еще одну небольшую работу: необходимо обновить демон запуска для pfctl (в приведенном описании упоминается, что pf включается автоматически при загрузке, однако это не Судя по коду, это не так). Откройте (с помощью sudo) System/Library/LaunchDaemons/com.apple.pfctl.plist и найдите это:

и добавьте строку -e, чтобы в итоге получилось вот так:

Это должно сработать.

Предостережение: Apple больше не разрешает изменять файлы демона запуска просто так (ни с помощью sudo, ни с помощью chmod, ни с чем-либо еще). Единственный способ — повозиться с настройками защиты целостности системы: загрузиться в режиме восстановления и запустить терминал. Проверьте статус SIP с помощью csrutil status, обычно он должен быть включен. Отключите его с помощью csrutil disabled и перезагрузитесь в обычном режиме, а затем внесите изменения в файл plist, как описано выше. Сделав это, вернитесь в режим восстановления и повторно включите защиту (она установлена ​​по уважительной причине), выполнив команду csrutil enable .

Я знаю, что вы можете сделать ifconfig | grep inet , но это показывает вам несколько адресов IPv4. Как получить конкретную версию для SSH и др.?



Вы ищете не IP-адрес вашего Mac, а общедоступный IP-адрес, который ваш интернет-провайдер приписал интернет-интерфейсу вашего маршрутизатора.

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

@alturium, вы должны сделать это ответом, потому что это ЯВЛЯЕТСЯ ответом на вопрос.Просто добавьте команду для получения внутреннего IP-адреса.

9 ответов 9

Используйте ipconfig getifaddr en1 для беспроводной сети или ipconfig getifaddr en0 для Ethernet.

ipconfig getifaddr en0 используется по умолчанию для сетевого адаптера Wi-Fi.

В качестве альтернативы вы также можете сделать следующее:


Это показывает мой внутренний (по отношению к моему маршрутизатору) IP-адрес (например, 192.168.1.xxx), а не внешний IP-адрес. (Как и большинство других ответов ниже.)

Следующее работает для меня на 10.8 и 10.10 Yosemite.

Если вы обнаружите, что вышеприведенное дает вам более одного ответа, сохраните следующее в скрипте и вместо этого запустите его

ip_address.sh

По моему мнению, это должен быть принятый ответ, поскольку он не требует каких-либо спецификаций для проводных и беспроводных сетей.

Могу подтвердить, что это решение отлично работает. У меня есть несколько интерфейсов с действительными локальными IP-адресами, но это решение правильно возвращает IP-адрес для основного интерфейса (то есть интерфейса, используемого для маршрутизации трафика в более широкую сеть)

Просто введите curl ifconfig.me в терминале.


Я настроил это в точечном файле .aliases для частого поиска IP-адресов:

Для меня опция localip больше не работает, но работает: ifconfig | grep "инет" | grep -Fv 127.0.0.1 | awk ''

Это лучший ответ: несмотря на то, что dig выходит за пределы вашего компьютера, это преобразователь доменных имен, что означает, что его основная функция заключается именно в сопоставлении доменного имени с IP-адресом. В данном случае это, конечно, ваш собственный IP-адрес.

Вы можете сделать следующее:

Введите ifconfig или ifconfig -a . Эта команда показывает вам список интерфейсов вместе с их IP- и MAC-адресами (последний только в случае необходимости). Вы также можете ввести ifconfig en0 или ifconfig en1 только для настройки определенного интерфейса (как кто-то сказал в своих ответах, en0 обычно представляет собой проводной Ethernet, а en1 — интерфейс WiFi).

В качестве альтернативы netstat -i выведет список всех интерфейсов и покажет вам IP-адреса, назначенные каждому из них.

Обычно, когда на компьютере запущен демон SSH, он прослушивает все доступные интерфейсы, т.е. вы можете использовать любой IP-адрес, настроенный на вашем компьютере, для подключения к этому компьютеру через SSH (это, очевидно, зависит от правил брандмауэра). Если вам нужно то, что ОС называет основным интерфейсом и основным IP-адресом, вы можете использовать команду scutil следующим образом:

Я регулярно вижу «рекомендации» по использованию ifconfig для получения информации об интерфейсе в сообщениях списка рассылки, отчетах об ошибках и других местах. Возможно, я даже сам виноват в этом. Тем не менее, мир сетей сильно изменился с тех пор, как ifconfig стал стандартом де-факто для вызова устройства, проверки его IP-адреса или установки IP-адреса.

После некоторых улучшений в ядре и постепенного перехода к управлению сетевыми вещами через netlink; ifconfig был в значительной степени заменен командой ip.

Запуск только ip дает следующее:

Я понимаю, что некоторым это может показаться сложным, но суть в том, чтобы понять, что с помощью ip вы взаимодействуете с объектами и применяете к ним какую-то функцию. Например:

Это основная команда, которая будет использоваться вместо ifconfig. Он просто отобразит IP-адреса, назначенные всем интерфейсам. Чтобы быть точным, он покажет вам подробности интерфейса уровня 3: адреса IPv4 и IPv6, работает ли он, каковы различные свойства, связанные с адресами…

Другая команда предоставит вам подробную информацию о свойствах интерфейса уровня 2: его MAC-адрес (адрес Ethernet) и т. д.; даже если он отображается по IP-адресу:

Кроме того, вы можете активировать или деактивировать устройства (аналогично ifconfig eth0 up или ifconfig eth0 down), просто используя:

Как показано выше, существует множество других объектов, с которыми можно взаимодействовать с помощью команды ip. Я расскажу о другом: ip route в другом посте.

Почему это важно?

Со временем все больше и больше функций становится проще использовать с помощью команды ip вместо ifconfig. Мы уже прекратили установку ifconfig на настольные компьютеры (пока он все еще устанавливается на серверы), и люди уже некоторое время обсуждают удаление net-tools (пакета, поставляющего ifconfig и несколько других старых команд, которые заменены). Возможно, пришло время вернуться к тому, чтобы нигде не устанавливать net-tools по умолчанию.

Я хочу узнать о вашем мире

Вы все еще используете один из следующих инструментов?

/bin/netstat (заменен на ss, которому я полностью посвящу отдельный пост в блоге)
/sbin/ifconfig
/sbin/ipmaddr (заменен на ip maddress)
/ sbin/iptunnel
/sbin/mii-tool (ethtool должен заменить его соответствующим образом)
/sbin/nameif
/sbin/plipconfig
/sbin/rarp
/sbin /маршрут
/sbin/slattach

Если это так и просто нет альтернативы их использованию из iproute2 (ну, команды ip или ss), которые вы можете использовать для того же, я хочу знать, как вы их используете. Мы всегда следим за вещами, которые могут быть нарушены изменениями; мы хотим по возможности не ломать вещи.

Эта статья изначально была опубликована в блоге автора

Облако Ubuntu

Ubuntu предлагает все необходимое для обучения, программную инфраструктуру, инструменты, услуги и поддержку для общедоступных и частных облаков.

Diff

Эта версия ( 23 февраля 2021 г. 16:49 ) была одобрена Кристиной Сутеу. Доступна ранее утвержденная версия (29 июля 2020 г., 01:47).

Содержание

Убедитесь, что установлены следующие драйверы:

Драйверы и файлы должны быть совместимы с:

После установки HoRNDIS требуется перезагрузка.

Для более новых версий macOS (начиная с macOS Catalina 10.15 и выше) HoRNDIS больше не предоставляет официальную поддержку.

Серийный

Массовое хранение

Ethernet

Предупреждение об Ethernet

Как и большинство сетевых настроек на Pluto или M2k, они должны быть простыми в использовании. Это также означает, что вещи изначально небезопасны.

Например, корневой пароль Pluto - аналог . Выкладываем в интернет. Подумайте об этом на мгновение. Это может позволить любому, у кого есть IP-подключение, завладеть устройством и использовать его в злонамеренных целях.

Никогда не устанавливайте мост между Интернетом и сетью, подключенной к Плутону, с изображениями по умолчанию.

К сожалению, ничто на вашем хосте не понимает IP-адрес USB-устройства. Вы, человек за клавиатурой, должны понимать это, прежде чем сработает какая-либо сеть. Есть два основных способа сделать это:

После установки драйвера HoRNDIS вы должны увидеть что-то подобное при переходе в → Системные настройки → Сеть.

Возможно, вам придется перезагрузиться без подключенного PlutoSDR, а затем подключить PlutoSDR, чтобы HoRNDIS правильно загрузился


Чтобы проверить, в dmesg это должно выглядеть примерно так:

конфигурация ssh

Поскольку ключ ssh на pluto меняется при каждой загрузке, мы хотим иметь возможность никогда не сохранять ключ (поэтому мы храним его в /dev/null . Это упрощает его использование (не нужно постоянно редактировать файл known_hosts), но делает объекты уязвимыми для атак «человек посередине».

если у вас установлен sshpass, вы можете использовать его, чтобы не вводить пароль:

Инструменты страницы

Analog Devices использует файлы cookie для повышения эффективности работы в Интернете

Читайте также: