Команда 'ip addr' показывает 'UP', даже если адрес не связан с этим интерфейсом

16

Я хотел бы понять, что подразумевается под сетевым интерфейсом вверх? Так ip addrили ifconfigкоманда показывает интерфейс как даже тогда , когда нет IP , связанной с ним.

например на RHEL7:

[root@IDCDVAM887 ~]# ifconfig ens256
ens256: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:50:56:9e:19:5b  txqueuelen 1000  (Ethernet)
        RX packets 229406  bytes 59265584 (56.5 MiB)
        RX errors 0  dropped 229454  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(или)

[root@IDCDVAM887 ~]# ip addr show ens256
5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:50:56:9e:19:5b brd ff:ff:ff:ff:ff:ff

Какая реальная польза от показа в виде UP, когда у интерфейса вообще нет IP? Я считаю, что когда нет IP, не может быть связи по этому поводу? Тогда какая в этом польза?

Срикант Ганесан
источник
1
Кадры Ethernet могут делать больше, чем просто содержать IP-пакеты.
Кейси

Ответы:

17

Это LOWER_UPсостояние канала Ethernet (или другого протокола канального уровня). Это определяется как Driver signals L1 up, что в основном означает, что кабель установлен, и он может видеть другое устройство на другом конце кабеля.

В UPозначает , что оно было включено. Это можно управлять вами (или сценарий) , используя ip link set <device> upв ifconfig <device> upкоманде.

Существуют другие протоколы, такие как IPX, которые используют Ethernet, но не будут иметь IP-адреса, поскольку они не являются частью стека интернет-протокола. Поэтому вполне допустимо, чтобы ссылка была, UPно не имела IP-адреса.

garethTheRed
источник
DHCP фактически построен поверх широковещательной рассылки UDP, для которой требуется уровень IP (фактически он может маршрутизироваться). Другим примером исторически используемой альтернативы IP был NetBIOS (перед переносом на NetBIOS через IPX / SPX и затем как NetBIOS через TCP / IP)
pqnet
[root @ IDCDVAM887 ~] # ip addr show eno33557248 3: eno33557248: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc pfifo_fast состояние UP qlen 1000 ссылка / эфир 00: 50: 56: 9e: 68: 86 brf ff: ff : ff: ff: ff: ff inet 10.54.2.7/32 global global eno33557248: 1 valid_lft forever предпочитаемый_lft forever В указанном выше формате есть виртуальный интерфейс 'eno33557248: 1' с некоторым IP. Почему это не проявилось как отдельно? Достаточно ли показывать только оригинальный интерфейс как UP?
Срикант Ганесан
@pqnet - я пытался объяснить, что часть вопроса ОП «нет IP, нет связи» не соответствует действительности. Может быть, тогда это был не лучший пример! Я удалю это, поскольку это только вызовет беспорядок.
garethTheRed
Эту часть теперь я понял спасибо вам обоим .. !!!
Срикант Ганесан
Команда ip addr в RHEL7 для интерфейса, который настроил несколько виртуальных интерфейсов или псевдонимов, вызывает путаницу в том, как определить, работает ли он или нет
Srikanth Ganesan
7

UPСтатус является административное состояние интерфейса, то есть , был ли включен интерфейс. Вы можете включить любой интерфейс, используя, например,

ip l s eth0 up

Если кабель подключен и установлена ​​связь, интерфейс также получит рабочее состояние RUNNING.

Многие карты будут препятствовать генерации исходящих носителей, если административное состояние не будет UP, и интерфейс, который не UPможет быть RUNNINGтакже, поэтому, если я установил

ip l s eth0 down

Я бы ожидать , мой местный интерфейс потерять как UPи RUNNING, и соответствующий интерфейс на удаленной стороне не будет также больше не будет RUNNING(но все - таки UP, так что если я снова включить мою сторону, я хотел бы получить ссылку).

Это всего лишь канал Ethernet. Поверх ссылки могут быть связаны различные протоколы, один из которых - IPv4. По умолчанию IPv4 связан со всеми интерфейсами, которые поддерживают семейство протоколов.

Когда протокол связан, я могу отправлять и получать пакеты с любым адресом, назначенным интерфейсу. Если адрес не назначен, это просто означает, что нет действительного адреса, который можно использовать для исходящих пакетов (поэтому отправка пакета не удалась), а также нет одноадресного адреса, на который входящий пакет может быть адресован, чтобы система распознала его как локальный (поэтому могут быть получены только широковещательные / многоадресные пакеты).

Это не касается канального уровня в малейшей степени, поскольку он только устанавливает связь.

Некоторые программы, такие как DHCP-клиент, имеют специальное разрешение на отправку произвольно отформатированных пакетов, заполнение адреса источника фантазии или 0.0.0.0и на получение прибывающих пакетов независимо от того, предназначены ли они для локальной машины. Это используется во время автоматической настройки IP-адреса, когда запрос DHCP отправляется с использованием адреса источника 0.0.0.0, а ответ от сервера направляется на широковещательный адрес 255.255.255.255.

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

Помимо IPv4, существуют также IPv6, IPX, AppleTalk и т. Д., Которые могут использовать один и тот же физический уровень. Как только связь установлена, любой из этих протоколов более высокого уровня может использовать свою собственную последовательность активации, чтобы войти в рабочее состояние.

Саймон Рихтер
источник
>> Интерфейс, который не UP, не может быть запущен <<. Я думаю, что это может быть неприменимо для машин Solaris x86, где интерфейс показывает работу, даже если статус не «Вверх». Например 1. Отключите новый виртуальный интерфейс. root @ IDCDVAM890: ~ # ifconfig net0: 2 plumb 2. Проверьте состояние интерфейса. РАБОТАЕТ, но IP не назначен. корень @ IDCDVAM890: ~ # Ifconfig net0: 2 net0: 2: флаги = 1000842 <РАССЫЛКА, RUNNING , MULTICAST, IPv4> МТУ 1500 индекс 2 инет 0.0.0.0 маска подсети 0
Srikanth Ganesan
@SrikanthGanesan, вам не нужен IP-адрес, чтобы интерфейс находился в состоянии UP или RUNNING, на самом деле интерфейс должен быть включен и запущен для работы DHCP. Кажется, что Solaris наследует состояние RUNNING виртуальных интерфейсов от родительского, но сохраняет отдельное состояние UP. Это несколько нерегулярно, может быть интересно посмотреть, исправляет ли агент SNMP, который они отправляют, это во внешнем виде.
Саймон Рихтер
3

Интерфейс может быть "вверх", даже без какого-либо адреса. Состояние «вверх» относится к канальному уровню (также известному как уровень 2), то есть «вверх» означает, что вы можете отправлять и получать пакеты Ethernet. IP это нечто построенное поверх него.

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

pqnet
источник
0

волшебным образом, если вы укажете -4опцию или -oneline, то он действительно покажет «работающий» интерфейс, как вы себе представляли.

Чтобы было легче читать, я использовал -briefопцию, но это не имеет значения, заключение.

увидеть результат upопции, он покажет DOWNустройство.

ubuntu@ubuntu:~$ ip --brief address show up
lo               UNKNOWN        127.0.0.1/8 ::1/128
eno1             DOWN
enp130s0f0       UP             100.79.223.150/26 fe80::a9e:1ff:fed9:2864/64

увидеть результат -4опции, все с адресами, без DOWNустройств.

ubuntu@ubuntu:~$ ip -4 -brief address show
lo               UNKNOWN        127.0.0.1/8
enp130s0f0       UP             100.79.223.150/26

увидеть результат -onlineопции, все с адресами, без DOWNустройств, но разделить адреса на IPv4 и IPv6.

ubuntu@ubuntu:~$ ip -oneline address show
1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
1: lo    inet6 ::1/128 scope host \       valid_lft forever preferred_lft forever
4: enp130s0f0    inet 100.79.223.150/26 brd 100.79.223.191 scope global enp130s0f0\       valid_lft forever preferred_lft forever
4: enp130s0f0    inet6 fe80::a9e:1ff:fed9:2864/64 scope link \       valid_lft forever preferred_lft forever
osexp2003
источник