Как найти мой внутренний 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:

# Сетевой интерфейс loopback auto lo iface lo inet loopback

# Основной сетевой интерфейс auto eth0 iface eth0 inet dhcp

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

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

;; время соединения истекло; никакие серверы не могут быть достигнуты.

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

1
задан 9 March 2014 в 03:43

7 ответов

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

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

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

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

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

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

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

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

internalip

или:

internalip TARGET
[d13 ], и вы получите свой IP-адрес, который будет использоваться для подключения IP-адреса, который в настоящее время используется для подключения к Интернету . Целью по умолчанию является 8.8.8.8, которая является
коллекцией моих скриптов в GitHub и хорошим значением по умолчанию для Интернета.

Но если вы запустите ее с другим IP: [!d16 ]

internalip 127.2.3.4

Затем вы получите:

127.0.0.1

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

Внешний IP

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

150
ответ дан 24 May 2018 в 11:03
  • 1
    это потрясающий ответ, спасибо! спас меня так много головной боли! : D – user65165 9 July 2015 в 20:17
  • 2
    Это полезный трюк, но ОП задавал вопрос о внутреннем IP-адресе, поэтому небезопасно предполагать, что оно маршрутизируется до 8.8.8.8. – mc0e 27 November 2015 в 17:52
  • 3
    @ mc0e Хорошая точка. Вот почему мой скрипт принимает необязательный аргумент для другого IP - 8.8.8.8 - это только значение по умолчанию. В моем ответе я использовал 127.2.3.4 в качестве примера. Вы можете использовать некоторый IP-адрес в своей интрасети или в VPN. Дело в том, что у вас обычно нет одного внутреннего IP-адреса, но несколько разных адресов используются для разных целей. Таким образом вы можете найти тот, который фактически используется для соединений с заданной целью. – rsp 27 November 2015 в 19:50
  • 4
    Просто, чтобы вы знали, это дает внешний IP-адрес на Mac. – OZZIE 29 March 2018 в 15:53
hostname -I

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

113
ответ дан 24 May 2018 в 11:03
  • 1
    Отлично. Так много слишком сложных (но неплохих) ответов ... этот просто мертв просто. – user1003916 17 June 2016 в 01:22
  • 2
    Отличный ответ .. :) – john400 8 July 2016 в 07:25
  • 3
    Согласно man-странице: `-I, -all-ip-addresses Показать все сетевые адреса хоста. Этот параметр перечисляет все настроенные адреса на всех сетевых интерфейсах. Интерфейс loopback и локальные адреса ссылок IPv6 опущены. Таким образом, это даст вам IP-адрес в сети, к которой вы подключены, но также IP-адрес вашего компьютера, если вы используете его как ethernet или lxd-сервер. В моем случае он дает два адреса, потому что у меня есть lxd: 192.168.0.78 и 10.0.3.1 – Sergiy Kolodyazhnyy 4 September 2016 в 21:10
  • 4
    Ага. В моем случае это хуже 10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1, потому что я запускаю некоторые контейнеры Docker;) – Alex 6 October 2016 в 19:45
  • 5
    Будьте внимательны, потому что другие решения не работают, например. на необработанном докере ubuntu image – noonex 5 February 2017 в 17:21

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

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

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

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

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

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

 ifconfig eth0 192.168.1.200/24 up 

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

route add default gw 192.168.1.1

Best,

18
ответ дан 24 May 2018 в 11:03
  • 1
    Я бы попробовал этот метод, но вам придется немного разобраться в нем, чтобы понять его, как найти или узнать действительный IP-адрес, подсеть и действительный маршрут по умолчанию. – Cam Jones 9 March 2014 в 05:30
  • 2
    это статическое IP-назначение для вашего сетевого интерфейса, то есть если вы находитесь за маршрутизатором с подсети 192.168.1.0/24, тогда вы можете выполнить ping ip ex. 192.168.1.200, и если вы не получите ответа, тогда зайдите в голову и используйте ifconfig имя_интерфейса IP_ADDRESS / MASK up. Ваш gw-адрес по умолчанию должен быть добавлен после назначения IP-адреса. – user1007727 13 March 2014 в 01:17

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

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

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

8
ответ дан 24 May 2018 в 11:03

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

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

Это вызывает окно с некоторой информацией, включая IP-адрес.

5
ответ дан 24 May 2018 в 11:03

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

facter ipaddress_eth0 
1
ответ дан 24 May 2018 в 11:03

ip command

Вот вариант ip addr.

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

$ ip -4 -o addr show wlan7
3: 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]" 

То же самое, только здесь string <<< и подстановка команды $()

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

Лично я сохранил это

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

Wireshark

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

1
ответ дан 24 May 2018 в 11:03

Другие вопросы по тегам:

Похожие вопросы: