Как мне найти свой внутренний 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, то есть два варианта:
Ваша сетевая карта не подключена или не распознана системой
Ваш сетевой 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