Как мне найти свой внутренний ip-адрес?

У меня установлен Ubuntu server 12.04, поэтому у меня нет графического интерфейса. Когда я выполняю команду ifconfig, я не могу найти свой внутренний IP-адрес. Там написано inet addr: 127.0.0.1.

Вот результат работы ifconfig -a:

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0    BROADCAST MULTICAST  MTU:1500  Metric:1    RX packets:0 errors:0 dropped:0 overruns:0 frame:0    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0    collisions:0 txqueuelen:1000    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c     BROADCAST MULTICAST  MTU:1500  Metric:1    RX packets:0 errors:0 dropped:0 overruns:0 frame:0    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0    collisions:0 txqueuelen:1000    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)lo     Link encap:Local Loopback    inet addr 127.0.0.1  Mask:255.0.0.0    inet6 addr:  ::1/128 Scope:Host    UP LOOPBACK RUNNING MTU:65536  Metric:1    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0    collisions:0 txqueuelen:0    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)

вот содержимое etc/network/interfaces:

# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet dhcp

Если бы кто-нибудь мог отредактировать это для меня, содержимое etc/network/interfaces должно быть в отдельных строках.

Вывод хоста askubuntu.com был:

;; connection timed out; no servers could be reached.

Я настроил owncloud и webmin несколько месяцев назад и использовал их в течение месяца без каких-либо проблем. Я думаю, что однажды 2 месяца назад отключилось питание, и я так и не включил сервер до вчерашнего дня. Я не сделал ничего, что могло бы повлиять на настройку Интернета, поэтому я не уверен, почему он больше не работает. Что касается моей сетевой топологии, то у меня есть сетевая карта pci-e для ПК. Линия ethernet идет от сетевой карты к коммутатору, а затем оттуда к модему / маршрутизатору.

hostname -I

Это даст вам только ip-адрес без какой-либо дополнительной информации.

Эти команды сообщат вам всю информацию о сети

ip add

или

ifconfig -a

Если, как вы говорите, это дает вам только 127.0.0.1, то есть два варианта:

  1. Ваша сетевая карта не подключена или не распознана системой

  2. Ваш сетевой DHCP-сервер не запущен или не подключен

Это то, что я в настоящее время рекомендую:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

Преимущество этой команды в том, что вам не нужно знать, какой интерфейс вы используете (eth0? eth1? или, может быть, wlan0?), вам не нужно отфильтровывать адреса локальных хостов, или адреса докеров, или VPN-туннели и т.д., И вы всегда получите IP-адрес, который в настоящее время используется для подключения к Интернету в этот самый момент (важно, например, когда вы подключены как к Ethernet, так и к Wi-Fi или через VPN и т.д.).

Это проверит не только то, что у вас правильный IP-адрес, настроенный на каком-либо интерфейсе (например, при анализе выходных данных ifconfig), но также и то, что у вас есть таблица маршрутизации, настроенная для ее правильного использования.

Я нашел эту идею в этот ответоколо Колин Андерсон.

Я использую его в внутренний клип сценарий в моя коллекция скриптов на GitHub, который вы можете установить с помощью:

wget https://rawgit.com/rsp/scripts/master/internalipchmod a+x internalip

и использовать в качестве:

internalip

или:

internalip TARGET

и вы получите свой IP-адрес, который будет использоваться для подключения с ЦЕЛЕВЫМ IP-адресом. Цель по умолчанию - 8.8.8.8 который является Распознаватель общедоступных DNS от Google и хороший дефолт для Интернета.

Но если вы запустите его с другого IP-адреса:

internalip 127.2.3.4

Тогда вы получите:

127.0.0.1

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

Внешний IP-адрес

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

Я думаю, стоит упомянуть, что запуск ifconfig вместе с опцией -a отобразит все интерфейсы независимо от того, имеет ли интерфейс IP-адрес или нет.

при запуске ifconfig в одиночку будут отображаться только интерфейсы с назначенными IP-адресами.

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

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'192.168.1.100127.0.0.1

Ваша сетевая карта распознается системой, поэтому на ней отображаются eth0 и eth1

вот быстрый способ присвоения IP-адреса вашему интерфейсу, используйте соответствующий действительный IP / подсеть.

 ifconfig eth0 192.168.1.200/24 up 

затем нам нужно добавить маршрут по умолчанию

route add default gw 192.168.1.1

Лучший,

Эта команда покажет все IP-адреса для одного устройства:

dev=eth0ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1

Он напечатает одну или две строки выходных данных. Первый - это адрес inet / IPv4, а другой - inet6 / IPv6, если ваша система настроена на его поддержку.

В случае, если ifconfig команда не отображала IP-адрес, есть очень простой и легкий способ узнать IP-адрес компьютера Ubuntu через графический интерфейс. Выполните следующие действия:

Нажмите на значок сети в области уведомлений и нажмите Информация о подключении.Network icon options

При этом откроется окно, содержащее некоторую информацию, включая IP-адрес.IP address information

ip-команда

Вот вариация на тему ip addr путь.

ip имеет -o опция, которая позволяет помещать всю информацию в одну строку - это полезно для синтаксического анализа с помощью таких инструментов, как awk или perl. В сочетании с -4 опция, мы будем видеть только IPv4-адреса. Таким образом, результат будет примерно таким (примечание - замените wlan7 интерфейсом, который вы хотите проверить):

$ ip -4 -o addr show wlan73: wlan7    inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\       valid_lft 85654sec preferred_lft 85654sec

Как вы можете видеть, IP-адрес - это 4-й столбец / слово в выходных данных. Остальное , это простое упражнение по синтаксическому анализу с помощью инструмента по вашему выбору. Здесь я использую python:

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

То же самое, только со строкой here <<< и замена команд $()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

Лично у меня это сохранено как приятная функция в моем ~/.bashrc так что набирается меньше текста.

wlan_ip() {    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" } 

Версии Perl и Ruby немного короче:

$ ip -4 -o addr show  wlan7 | perl -lane 'print $F[3]'                         192.168.0.78/24$ ip  -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'                 192.168.0.78/24

Проводная метка

Если вы знакомы с использованием инструментов сетевого анализа, вы, вероятно, знаете, что для получения вашего ip-адреса все, что вам нужно сделать, это очистить кэш браузера, запустить Wireshark capture в определенном интерфейсе и искать http GET передаваемые пакеты. В столбце назначения будет показан ваш IP-адрес

Здесь уже есть много хороших ответов на выбор, но я подумал, что хотел бы указать фактор который обычно, но не обязательно используется с puppet для сбора различных фактов о системе. Главное преимущество facter заключается в том, что он дает хороший чистый результат, который избавляет вас от всех манипуляций с grep, sed, awk, cut, perl и т.д. Это не скажет вам, какой интерфейс вас интересует, но если вы это знаете, то следующее дает вам IP-адрес без других проблем для очистки:

facter ipaddress_eth0 

Выше есть много полезной информации. Я держу все просто, вот так:

# what your computer thinks its ip address isfunction iplocal() {  ip route get 8.8.8.8 | awk '{print $NF; exit}'    # 8.8.8.8 is google dns}# what the outside world thinks your ip address isfunction ipexternal() {  curl --silent http://checkip.amazonaws.com        # or:  http://ipinfo.io/ip}function ipinfo() {  echo "local    IP  =>  $(iplocal)"  echo "external IP  =>  $(ipexternal)"}

Пример использования:

> ipinfolocal    IP  =>  192.168.1.139external IP  =>  76.88.85.95

ifconfig | grep -G "192.168.*.255" | cut -d' ' -f10 может дать вам IP-адрес или просто hostname -I | cut -d'' -f1

@AvatarParto Это для интерфейсов, обращенных к общедоступному доступу, этот вопрос касается внутренних сетей…

Из любопытства, что в нем есть "/etc/network/interfaces`?

Я знаю, как использовать команду изменить каталог, но я не знаю, как перечислить файлы, попавшие туда, как бы мне это сделать?

ls отобразит список файлов в каталоге. “ls -l” даст подробный список. Чтобы перечислить содержимое определенного каталога, ls -l /etc/network. Чтобы перейти в каталог и перечислить содержимое cd /etc/network ;ls -l. Чтобы прочитать содержимое etc/network/interfaces (это файл) sudo pico /etc/network/interfaces. (pico" - это легкий текстовый редактор, который хорош для чтения и базового редактирования и менее пугающий, чем "vi.)