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

128

У меня установлен ubuntu server 12.04, поэтому у меня нет GUI. Когда я выполняю команду 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 переходит от сетевой платы к коммутатору, а затем к модему / маршрутизатору оттуда.

    
задан Cam Jones 07.03.2014 в 13:20
источник

8 ответов

126

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

ifconfig -a

или

ip addr show

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

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

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

ответ дан kamil 07.03.2014 в 13:32
источник
131

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

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

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

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

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

Я использую его в сценарии 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 на интерфейсе loopback. Это полезно, когда ваша цель находится в локальной сети, VPN или другой специальной сети, и в этом случае для подключения может использоваться другой IP-адрес, чем IP-адрес по умолчанию для доступа в Интернет.

Внешний IP

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

ответ дан rsp 03.04.2015 в 02:49
98
hostname -I

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

ответ дан Sarath Somana 25.08.2015 в 06:29
16

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

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

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

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

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

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

 ifconfig eth0 192.168.1.200/24 up 

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

route add default gw 192.168.1.1

Бест,

    
ответ дан user1007727 07.03.2014 в 21:17
8

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

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

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

    
ответ дан Aaron Digulla 24.10.2014 в 14:14
5

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

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

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

ответ дан Ibungo 24.09.2015 в 13:09
1

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

facter ipaddress_eth0 
    
ответ дан mc0e 28.11.2015 в 15:11
1

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]" 

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

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-адрес

    
ответ дан Sergiy Kolodyazhnyy 04.09.2016 в 18:32