Вопрос Как найти мой внутренний 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 должно быть на отдельных строках.

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

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

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


159
2018-03-07 13:20


происхождения


@AvatarParto Это для интерфейсов, обращенных к общественному доступу, этот вопрос касается внутренних сетей ... - Bruno Pereira
Из любопытства, что /etc/network/interfaces есть в нем? - Powerlord
Я знаю, как использовать команду change directory, но я не знаю, как перечислить файлы там, как бы я это сделал? - Cam Jones
ls будут перечислены файлы в каталоге. ls -l даст подробный список. Чтобы отобразить содержимое конкретного каталога, ls -l /etc/network, Чтобы изменить содержимое каталога и списка cd /etc/network ;ls -l, Чтобы прочитать содержание etc/network/interfaces (это файл) sudo pico /etc/network/interfaces, (pico представляет собой легкий текстовый редактор, который хорош для чтения и базового редактирования и менее пугающий, чем vi.) - douggro


ответы:


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

ifconfig -a

или

ip addr show

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

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

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


159
2018-03-07 13:32



когда я вхожу в систему, он говорит мне, что есть несколько обновлений или обновлений, поэтому я предполагаю, что он должен поговорить с официальным веб-сайтом ubuntu, чтобы знать, что у него есть обновления, поэтому я думаю, что мой интернет работает. - Cam Jones
@Skateguy попробуйте открыть askubuntu.com и, пожалуйста, распечатайте все ifconfig -a - kamil
У меня нет GUI, но я собираюсь его напечатать. - Cam Jones
Как я могу ответить на вопросы, которые представляют ваши два варианта? - Cam Jones
@Skateguy Во-первых, кажется, что у вас нет сервера dhcp, и вам придется установить свой ip вручную. можете ли вы рассказать нам о своей топологии сети, как вы подключены к Интернету. и, пожалуйста, опубликуйте вывод следующей команды в своем терминале: host askubuntu.com - kamil


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

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-адреса, описанного здесь) см. этот ответ,


166
2018-04-03 02:49



это потрясающий ответ, спасибо! спас меня так много головной боли! : D - user65165
Это полезный трюк, но ОП задавал вопрос о внутреннем IP-адресе, поэтому небезопасно предполагать, что оно маршрутизируется до 8.8.8.8. - mc0e
@ mc0e Хорошая точка. Вот почему мой сценарий принимает необязательный аргумент для некоторых других IP - 8.8.8.8 просто по умолчанию. В своем ответе я использовал 127.2.3.4 В качестве примера. Вы можете использовать некоторый IP-адрес в своей интрасети или в VPN. Дело в том, что обычно у вас нет один внутренний IP-адрес, но несколько разных адресов, используемых для разных целей. Таким образом вы можете найти тот, который фактически используется для соединений с заданной целью. - rsp
Просто, чтобы вы знали, это дает внешний IP-адрес на Mac. - OZZIE


hostname -I

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


134
2017-08-25 06:29



Отлично. Так много слишком сложных (но неплохих) ответов ... этот просто мертв просто. - user1003916
Отличный ответ .. :) - john400
Согласно man-странице: `-I, -all-ip-addresses Показать все сетевые адреса хоста. Этот параметр перечисляет все настроенные адреса на всех сетевых интерфейсах. Интерфейс loopback и локальные адреса ссылок IPv6 опущены. Таким образом, это даст вам IP-адрес в сети, к которой вы подключены, но также IP-адрес вашего компьютера, если вы используете его как ethernet или lxd-сервер. В моем случае он дает два адреса, потому что у меня есть lxd: 192.168.0.78 и 10.0.3.1 - Sergiy Kolodyazhnyy
Ага. В моем случае это ужасно 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
Будьте внимательны, потому что другие решения не работают, например. на необработанном докере ubuntu image - noonex


Я думаю, стоит упомянуть, что запуск 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 / Subnet.

 ifconfig eth0 192.168.1.200/24 up 

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

route add default gw 192.168.1.1

Лучший,


18
2018-03-07 21:17



Я бы попробовал этот метод, но вам придется немного разобраться в нем, чтобы понять его, как найти или узнать действительный IP-адрес, подсеть и действительный маршрут по умолчанию. - Cam Jones
это статическое IP-назначение для вашего сетевого интерфейса, то есть если вы находитесь за маршрутизатором с подсети 192.168.1.0/24, тогда вы можете выполнить ping ip ex. 192.168.1.200, и если вы не получите ответа, тогда зайдите в голову и используйте ifconfig имя_интерфейса IP_ADDRESS / MASK up. Ваш gw-адрес по умолчанию должен быть добавлен после назначения IP-адреса. - user1007727


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

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

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


8
2017-10-24 14:14





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

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

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


5
2017-09-24 13:09





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

facter ipaddress_eth0 

1
2017-11-28 15:11





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


1
2017-09-04 18:32