3

Так что я не уверен, что здесь происходит, но я продублировал эту проблему на нескольких разных серверах в Ubuntu 17.04 (в курсе), но я не могу найти другие отчеты об этом, поэтому я должен представить, что я делать что-то не так. Я просто понятия не имею, что.

Короче говоря, я могу настроить интерфейс с systemd.networkd для нескольких IP-адресов. Они появятся так:

root@nuprobe:/etc/systemd/network# ip addr show dev mike-home
11: mike-home: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4088 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d8:eb:97:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 10.12.1.2/24 brd 10.12.1.255 scope global mike-home
       valid_lft forever preferred_lft forever
    inet 10.12.1.3/24 brd 10.12.1.255 scope global secondary mike-home
       valid_lft forever preferred_lft forever

Тем не менее, если я запрашиваю то же самое, используя ifconfig , тогда как последующие IP-адреса обычно получают устройства псевдосети с именем mike-home:N (N - это число), это полный вывод:

root@nuprobe:/etc/systemd/network# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4559  bytes 659801 (659.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4559  bytes 659801 (659.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mike-home: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 4088
        inet 10.12.1.2  netmask 255.255.255.0  broadcast 10.12.1.255
        ether d8:eb:97:b6:0b:64  txqueuelen 1000  (Ethernet)
        RX packets 54202  bytes 67720330 (67.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 36690  bytes 4503051 (4.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Есть идеи о том, что происходит?

Вот мой файл systemd.network :

[Match]
Name=mike-home

[Link]
MACAddress=d8:eb:97:b6:0b:64
MTUBytes=4088
ARP=true

[Network]
BindCarrier=mike-home
Description=Mike Home Network
DHCP=no
IPv4LLRoute=no
MulticastDNS=no
LinkLocalAddressing=no
Domains=vasto.la

[Address]
Address=10.12.1.2/24
Broadcast=10.12.1.255
PreferredLifetime=forever

[Address]
Address=10.12.1.3/24
Broadcast=10.12.1.255
PreferredLifetime=forever

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.5.0/24
Scope=link

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.10.0/24
Scope=link

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.20.0/24
Scope=link

# vim: set filetype=systemd:

Любые догадки (более чем) приветствуются.

1 ответ1

0

В Linux интерфейсы "псевдонимов", такие как eth0:0 являются обязательными. Они эмулируются только для совместимости со старым API SIOCGIFADDR на основе ioctl для IPv4, который в противном случае не поддерживает несколько адресов на имя интерфейса - это то, что ifconfig использует по сей день.

Между тем, инструменты, использующие современный интерфейс Netlink, такие как ip или systemd-networkd просто работают со списком адресов, все они в одном и том же основном интерфейсе. Это также соответствует поведению IPv6 с самого первого дня.

Когда вы добавляете адреса IPv4 через Netlink, вы можете установить метку адреса, которая активирует эмуляцию и позволяет ifconfig видеть этот адрес как интерфейс "псевдонима". В systemd-networkd это будет Label=eth0:0 под [Address] .

Я рекомендую избегать использования инструментов ifconfig и route в Linux, поскольку они, по сути, являются просто остатками BSD, которые не обновлялись для новых функций Linux уже много-много лет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .