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

У меня установлен сервер Ubuntu 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 interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

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

Вывод хоста Ask-ubuntu.ru был:

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

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

10 ответов

Решение

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

ip add

или же

ifconfig -a

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

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

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

hostname -I

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

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

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

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

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

Я нашел эту идею в этом ответе user131881.

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

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

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

internalip

или же:

internalip TARGET

и вы получите свой IP-адрес, который будет использоваться для соединения с IP-адресом TARGET. Цель по умолчанию 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.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

Лучший,

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

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

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

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

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

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

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

facter ipaddress_eth0 

команда ip

Вот вариант ip addr путь.

ip имеет -o опция, которая позволяет поместить всю информацию в одну строку - это полезно для разбора такими инструментами, как awk или же perl, В комбинации с -4 Опция, мы будем видеть только адреса IPv4. Таким образом, вывод будет выглядеть примерно так (обратите внимание - замените 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]" 

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

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

Wireshark

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

Любой, у кого все еще есть проблемы с поиском вашего IP-адреса, может просто использоватьip addr

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

      
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)

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

      6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1410 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:95:07:a5 brd ff:ff:ff:ff:ff:ff
    inet 172.31.133.25/20 brd 172.31.143.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe95:7a5/64 scope link
       valid_lft forever preferred_lft forever

См. в моем примере выше, устройство представляет собойethernetсоединение, и ему был присвоен адрес


Как прочитать информацию, предоставленную командой

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

Итак, в приведенном выше случае ваш IP-адрес просто172.31.133.25

Для некоторыхipможет быть не очень красивым или информативным ответом, поэтому вы можете установитьnet-toolsс использованием

      sudo apt install net-tools

это установит иifconfigпокажет вам вещи немного ясно, как показано ниже

      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1410
        inet 172.31.133.25  netmask 255.255.240.0  broadcast 172.31.143.255
        inet6 fe80::215:5dff:fe95:7a5  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:95:07:a5  txqueuelen 1000  (Ethernet)
        RX packets 238  bytes 223167 (223.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 145  bytes 12170 (12.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Вы можете ясно видетьinetздесь задается и маска подсети пишется не в CIDR нотации, а по другому

В обоих вышеприведенных случаях ipv6 также упоминается какinet6.

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

# what your computer thinks its ip address is
function 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 is
function ipexternal() {
  curl --silent http://checkip.amazonaws.com        # or:  http://ipinfo.io/ip
}
function ipinfo() {
  echo "local    IP  =>  $(iplocal)"
  echo "external IP  =>  $(ipexternal)"
}

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

> ipinfo
local    IP  =>  192.168.1.139
external IP  =>  76.88.85.95
Другие вопросы по тегам