- How to get the IPv6 IP address in Linux
- 14 Answers 14
- Команда IP в Linux: руководство с примерами
- Как использовать команду ip
- Управление и отображение сетевых интерфейсов
- Получить информацию о сетевом интерфейсе
- Изменить статус сетевого интерфейса
- Мониторинг и управление IP-адресами
- Мониторинг IP-адресов
- Как добавить IP-адрес в Linux
- Управление и отображение таблицы IP-маршрутизации
- Показать таблицу маршрутизации IP
- Изменить таблицу IP-маршрутизации
- Отображение и изменение IP-записей соседей
- Отображение IP-адресов соседей
- Изменить IP-записи соседей
How to get the IPv6 IP address in Linux
I have a Linux server and I want to find the main IPv6 address via one single command line. My command so far:
$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
2001:410:0:39:221:28ff:fe46:eef4 fe80::221:28ff:fe46:eef4
2001:410:0:39:221:28ff:fe46:eef4
write a shell script and put those commands in there: voila, you have now created a «single» command.
When dealing with IPv6 it is not really recommended to limit to a single addresses. There can be multiple global addresses, multiple link-local addresses, multiple site-local addresses.
14 Answers 14
will show your IPv6 addresses.
% ip -6 addr 1: lo:
This does not solve the stated question. OP wants a single command line to retrieve one IPv6 (which probably means the primary public one). So either ip -6 addr show dev eth0 | sed -n ‘s|^.*inet6 \([^ ]*/64\).*$|\1|p’ or ip -6 addr show dev eth0 | awk ‘/inet6/
/sbin/ip -6 addr | grep inet6 | awk -F ‘[ \t]+|/’ » | grep -v ^::1 | grep -v ^fe80
The output of /sbin/ip -6 addr | grep inet6 looks something like this:
inet6 ::1/128 scope host inet6 2001:123:456:55f::1/64 scope global inet6 fe80::62eb:69ff:fed2:d2a6/64 scope link
awk -F ‘[ \t]+|/’ » splits each line setting delimiters to be either one or more white spaces or a forward slash. The part we need is the $3.
grep -v ^::1 | grep -v ^fe80 to exclude any line starting with ::1 or fe80 .
there is way too much piping of grep into awk, this could be collaspe into a single awk ` awk -F ‘[ \t]+|/’ ‘$3 == «::1» < next;>$3 ~ /^fe80::/ < next ; >/inet6/
$ /sbin/ifconfig | grep inet6 inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link inet6 addr: ::1/128 Scope:Host
If you want a random selection of one IPv6 address
$ /sbin/ifconfig | grep inet6 | head -n 1 inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
If you want the IPv6 address of the most common name for the first Ethernet adapter
$ /sbin/ifconfig eth0 | grep inet6 inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
If you just want the address
$ /sbin/ifconfig eth0 | awk '/inet6/' fe80::2ff:19ff:fe60:1a00/64
To get only the IPv6 addresses you use the ip addr command and filter already with -6 for IPv6 addresses only.
If you want to specify a network adapter you might append show dev eth0 while eth0 should be replaced by your network adapter.
Since you are looking only for the external IP address you should add a scope global .
ip -6 addr show dev [eth0] scope global
finally you pipe this into your sed command.
ip -6 addr show dev [eth0] scope global | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
Use the following command to view your IP address on Linux :
Normally, Ipv6 address looks like 2001:5c0:9168::/48 . If you are facing any conflict in your IP, follow the below steps to set an IP address again:
- To assign IPv6 IPs, make sure you have the iproute2 tools installed.
- Using them, let’s start to assign your IPs.
- Make sure that the ipv6 module installed or not.
Then, use the following command to add new ip:
ip -f inet6 addr add 2001:5c0:9168::2/64 dev eth0
Afterwards, add default ip via
ip -f inet6 ro add default via 2001:5c0:9168::1 dev eth0
After completing your installation, just reconfigure/restart your IPv6 enabled services, like Apache, SSH etc.
ifconfig is obsolete on Linux and should no longer be used. Modern Linux distros don’t even install it by default anymore (unless some ancient package requires it).
First, you need to remember that with IPv6 any machine may have several IPv6 addresses, and they may be on separate networks, and any of them might be used, depending on where you want to reach.
So, before you can answer the question of what is your source IP address you have to decide where you’re sending the traffic. Then you can just ask Linux to tell you which IPv6 address will be the source when you send traffic to that destination.
If you’re sending it to «the Internet» then just pick a global IPv6 address at random, e.g. Google’s Public DNS address.
ip r get to 2001:4860:4860::8888 | perl -ne '/src ([\w:]+)/ && print "$1\n"' 2001:db8:f387:c818:5:2:0:1000
This asks Linux for the route to that destination. Perl parses the result looking for src and then prints the next field.
By providing a different destination, you may receive a different source address:
ip r get to ::1 | perl -ne '/src ([\w:]+)/ && print "$1\n"' ::1
Команда IP в Linux: руководство с примерами
Команда ip — это сетевой инструмент Linux для системных и сетевых администраторов. IP означает Интернет-протокол и, как следует из названия, инструмент используется для настройки сетевых интерфейсов. В старых дистрибутивах Linux использовалась команда ifconfig, которая работает аналогично. Однако ifconfig имеет ограниченный диапазон возможностей по сравнению с командой ip.
В этом руководстве мы рассмотрим все важные операции, которые команда ip может выполнять в Linux.
Как использовать команду ip
Команда ip имеет следующий синтаксис:
К объектам OBJECT (или подкомандам), которые вы будете использовать чаще всего, относятся:
- link (l) — используется для отображения и изменения сетевых интерфейсов
- address (addr/a) — используется для отображения и изменения адресов протокола (IP, IPv6)
- route (r) — используется для отображения и изменения таблицы маршрутизации
- neigh (n) — используется для отображения и управления соседними объектами (таблица ARP)
Они могут использоваться как в полной, так и сокращенной форме.
Есть много других доступных объектов и команд. Чтобы увидеть полный список, введите следующую команду:
Для выполнения команд вы можете использовать либо полную, либо сокращенную формы. Например, ip link и ip l будут давать одинаковые результаты.
При настройке сетевых интерфейсов вы должны запускать команды как пользователь root или пользователь с привилегиями sudo. В противном случае вы увидите сообщение RTNETLINK answers: Operation not permitted
Предупреждение: по умолчанию система не сохраняет изменения перманентно. После перезапуска Linux-сервера вновь измененное состояние будет потеряно. Есть два способа сделать ваши настройки постоянными: добавить команды в сценарий запуска или отредактировать дистрибутивные файлы конфигурации.
Управление и отображение сетевых интерфейсов
Вы можете получить список всех параметров команды link , набрав:
Получить информацию о сетевом интерфейсе
Чтобы увидеть информацию канального уровня обо всех доступных устройствах (у которых загружен драйвер), используйте команду:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 12:24:01:8c:67:45 brd ff:ff:ff:ff:ff:ff
Если вы хотите, чтобы команда отображала информацию для одного конкретного устройства, введите следующее:
Чтобы просмотреть статистику по всем сетевым интерфейсам (такие детали, как переданные или отброшенные пакеты или даже ошибки), используйте:
Вы также можете увидеть аналогичную информацию для отдельного сетевого интерфейса:
Если вам нужно больше подробностей, добавьте еще -s в синтаксис:
Чтобы увидеть список только работающих интерфейсов, используйте:
Изменить статус сетевого интерфейса
Если вы хотите включить сетевой интерфейс, используйте команду:
Отключите интерфейс, введя:
ip link set [interface] down
Команда ip link позволяет вам изменять очередь передачи, ускоряя или замедляя интерфейсы в соответствии с вашими потребностями и аппаратными возможностями.
ip link set txqueuelen [number] dev [interface]
Вы можете установить MTU (Maximum Transmission Unit) для улучшения производительности сети:
ip link set mtu [number] dev [interface]
Чтобы узнать все опции команды link, наберите:
Мониторинг и управление IP-адресами
Узнайте все команды address , набрав следующее:
Мониторинг IP-адресов
Выведите все устройства с помощью следующей команды:
Чтобы вывести список всех сетевых интерфейсов и связанных IP-адресов, используйте команду:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 51:55:07:8a:62:44 brd ff:ff:ff:ff:ff:ff inet 192.168.120.24/24 brd 192.168.120.255 scope global dynamic eth0 valid_lft 2900sec preferred_lft 2900sec inet6 fe80::5054:ff:fe8c:6244/64 scope link valid_lft forever preferred_lft forever
Вы также можете увидеть информацию об отдельной сети:
ip addr show dev [interface]
Чтобы получить список всех IPv4 адресов, используйте:
Чтобы получить список всех IPv6 адресов, используйте:
Как добавить IP-адрес в Linux
Добавьте IP-адрес в интерфейс с помощью команды:
ip addr add [ip_address] dev [interface]
Если указанный интерфейс не существует, отобразится сообщение: Cannot find device [interface]
Чтобы добавить два адреса на один интерфейс также используйте эту команду:
ip address add 192.168.1.41/24 dev eth0 ip address add 192.168.1.40/24 dev eth0
Если вам нужно добавить широковещательный (broadcast) адрес для интерфейса, используйте команду:
ip addr add brd [ip_address] dev [interface]
Чтобы удалить IP-адрес из интерфейса, выполните следующие действия.
ip addr del [ip_address] dev [interface]
Управление и отображение таблицы IP-маршрутизации
Просмотрите полный список команд ip route с помощью следующей команды:
Показать таблицу маршрутизации IP
Для просмотра всех записей в таблице маршрутизации используйте одну из следующих команд:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.241 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.241 192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.241 metric 100
С помощью команд, приведенных выше, выходные данные отображают все записи маршрута в ядре. Если вам нужно сузить поиск, добавьте объект SELECTOR :
Чтобы просмотреть маршрутизацию для отдельной сети, используйте следующий синтаксис:
Изменить таблицу IP-маршрутизации
Чтобы добавить новую запись в таблицу маршрутизации, введите команду:
ip route add [ip_address] dev [interface]
Или вы можете добавить новый маршрут через шлюз, набрав:
ip route add [ip_address] via [gateway_IP]
Также команда позволяет добавить маршрут для всех адресов через локальный шлюз, добавив параметр default :
ip route add default [ip_address] dev [device] ip route add default [network/mask] via [gateway_IP]
Чтобы удалить существующую запись в таблице маршрутизации, используйте команды:
ip route del [ip_address] ip route del default ip route del [ip_address] dev [interface]
Отображение и изменение IP-записей соседей
При помощи команды ip neigh можно манипулировать таблицами ARP (Address Resolution Protocol). Это аналог команды arp
Для получения полного списка всех параметров команды neigh используйте:
Отображение IP-адресов соседей
Чтобы отобразить таблицы соседей, используйте следующую команду:
Выходные данные показывают MAC-адреса устройств, которые являются частью системы, и их состояние. Состояние устройства может быть:
- REACHABLE — означает валидную, достижимую запись до истечения таймаута.
- PERMANENT — означает постоянную запись, которую может удалить только администратор
- STALE — означает действительную, но недоступную запись
- DELAY — означает, что ядро все еще ожидает проверки из устаревшей записи
Изменить IP-записи соседей
Добавьте новую запись в таблицу с помощью команды:
ip neigh add [ip_address] dev [interface]
Или удалите существующую запись ARP:
ip neigh del [ip_address] dev [interface]