LINUX.ORG.RU
ФорумAdmin

Как конфигурируют сеть? (Раунд 2)

 , ,


0

1

Сейчас у меня настроено так:

# cd /etc/systemd/network/
# tail -n +1 *
==> br0.netdev <==
[NetDev]
Name=br0
Kind=bridge

==> br0.network <==
[Match]
Name=br0

[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=8.8.4.4

==> enp5s0.network <==
[Match]
Name=enp5s0

[Network]
Bridge=br0

==> tap0.network <==
[Match]
Name=tap0

[Network]
Bridge=br0

Проблема заключается в том, что интерфейс enp5s0 пытается получить свой адрес и установить свой роутинг:

# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 enp5s0           ether              degraded    configured
  3 bond0            bond               no-carrier  unmanaged 
  5 wg0              wireguard          routable    unmanaged 
  6 br0              bridge             routable    configuring

Тут слово "degraded" неясно с чего бы.

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 enp5s0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 br0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 wg0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 enp5s0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br0

Такое впечатление, что интерфейс enp5s0 конфигурируется не только командой
systemctl start systemd-networkd
но и ещё каким-то вторым спобосом. Как найти - каким?

Думаю, что во всём виноват вот он:
Avahi is a daemon (a service) which is responsible for several things, including attributing you an IP address when DHCP (automatic IP address from a DHCP server on the network) fails.
но не знаю, как проверить.

Лог говорит, что это сам systemd-networkd присваивает адрес 168.254.*.* (а не надо, не надо так делать!):

июл 02 19:07:20 server systemd-networkd[5110]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_36 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=39 reply_>
июл 02 19:07:36 server systemd-networkd[5110]: NDISC: Sent Router Solicitation, next solicitation in 33s
июл 02 19:07:53 server systemd-networkd[5110]: enp5s0: Adding address: 169.254.9.40/16 (valid forever)
июл 02 19:07:53 server systemd-networkd[5110]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=40 reply_>
июл 02 19:08:09 server systemd-networkd[5110]: NDISC: Sent Router Solicitation, next solicitation in 1min 7s

:
Гугл отказывается мне помогать

https://www.google.com/search?q="systemd-networkd["+"]%3A"+"Adding+address%3A+169.254."+"%2F16+(valid+forever)"

см. также Как настраивают bridge в systemd?

★★☆

Последнее исправление: Einstok_Fair (всего исправлений: 10)

дописал
LinkLocalAddressing=no
в каждый интерфейс под Bridge=br0

Не помогло.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)

Дистрибутив какой? Что-то типа ifupdown не стоит случаем?

У меня при обновлении до Debian 9 были грабли с этим, потому что оно кроме утилит для руления интерфейсом еще и правилом для udev обросло.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

# which ifupdown
which: no ifupdown in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/6.4.0:/usr/lib/llvm/6/bin:/usr/lib/llvm/5/bin:/usr/lib/llvm/4/bin)
# equo s ifupdown
╠ @@ Поиск...
╠ Ключевые слова: ifupdown
╠ Найдено: 0 entries

ещё топик на похожую тему:
https://bbs.archlinux.org/viewtopic.php?id=237870

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair
$ dpkg --listfiles ifupdown
...
/sbin
/sbin/ifup
/sbin/ifdown
/sbin/ifquery
...
/lib/systemd/system/ifup@.service
/lib/systemd/system/networking.service
...

Вот это вот.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

не-не, ничего такого:

# ls -1 /sbin/if*
/sbin/ifcfg
/sbin/ifrename
/sbin/ifstat
# ls  -1 /lib/systemd/system/i*
/lib/systemd/system/initrd-cleanup.service
/lib/systemd/system/initrd-fs.target
/lib/systemd/system/initrd-parse-etc.service
/lib/systemd/system/initrd-root-device.target
/lib/systemd/system/initrd-root-fs.target
/lib/systemd/system/initrd-switch-root.service
/lib/systemd/system/initrd-switch-root.target
/lib/systemd/system/initrd.target
/lib/systemd/system/initrd-udevadm-cleanup-db.service

Einstok_Fair ★★☆
() автор топика

более лучший вопрос - почему br0 в состоянии configuring. Так быть не должно.

anonymous
()
Ответ на: комментарий от anonymous

Со временем он становится
8 br0 bridge routable configured

Проблема не в нём, а в том, что enp5s0 получает APIPA-адрес. Пока думаю, что во всём виноват Avahi. Дописал в начало топика.

«Avahi apparently decided “screw the configuration you specified in /etc/network/interfaces, I’m going to give your production virt host bridge an autoconf address. Because I want to be helpful.”
http://jrs-s.net/2015/01/09/avahi-killed-my-server/

Но останавливать его бы не хотелось, хотелось бы переконфигурировать.

И, кстати, просто остановка не помогает.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 5)

ну засунул ты enp5s0 в бридж, а дальше что? он каким образом должен понять какой IP получить?

system-root ★★★★★
()
Ответ на: комментарий от system-root

бриджу адрес прописан (см. в стартовом посте файл br0.network), а интерфейс enp5s0 должен иметь адрес 0.0.0.0/32 (то есть никакого).

а на самом деле в логе
journalctl -u systemd-networkd
написано
systemd-networkd[2604]: enp5s0: Adding address: 169.254.133.146/16 (valid forever)

И это возмутительно, что systemd зачем-то пытается присвоить другой адрес, это всё ломает.

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от system-root

Это выяснено опытным путём.

Если выполнить две команды:
ifconfig enp5s0 down
ifconfig enp5s0 0.0.0.0 up

то начинает работать (но не долго)

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от system-root

можно без машины времени как-то обойтись?

можно:

ip addr show enp5s0
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:1d:7d:04:80:cb brd ff:ff:ff:ff:ff:ff
    inet 169.254.190.98/16 brd 169.254.255.255 scope global enp5s0
       valid_lft forever preferred_lft forever
    inet6 fe80::21d:7dff:fe04:80cb/64 scope link 
       valid_lft forever preferred_lft forever

ip addr del 169.254.190.98/16 dev enp5s0
ip addr del fe80::21d:7dff:fe04:80cb/64 dev enp5s0

ip addr show enp5s0
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:1d:7d:04:80:cb brd ff:ff:ff:ff:ff:ff

если выполнить эти команды, то тоже начинает работать (это эквивалент тому ifconfig enp5s0 down && ifconfig enp5s0 0.0.0.0 up)

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

если у тебя enp5s0 поднят без IP адреса ничего не работает?

если выполнить эти команды, то тоже начинает работать (это эквивалент тому ifconfig enp5s0 down && ifconfig enp5s0 0.0.0.0 up)

ок, а почему не работает если 169.254. ему выдают?

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

наоборот, если enp5s0 находится в бридже рабом, то пока он без IP-адреса, то всё работает.

Как только адрес присваивается, работать перестаёт.

Если убрать адрес руками, то работать начинает.

Проблема в том, что адрес присваивается софтом самостоятельно, против моей воли.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от system-root

ок, а почему не работает если 169.254. ему выдают?

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

А если адрес не прописывать, то маршрутизации неправильной нет и всё работает.

Правильная таблица маршрутизации должна выглядеть так:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 br0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 wg0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br0

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от system-root

а если я не дома? а если я в пампасах? тут пользуются тем, что есть у папуасов

Einstok_Fair ★★☆
() автор топика

запилил такой же бридж на своем десктопе (тащемта у тебя самая стандартная конфигурация), и все заработало. Кстати, enp5s0 как раз должен быть degraded.

Возможно, у тебя какая-то совсем тупая причина. Правильно ли прописаны адреса в br0.network? Что будет, если вместо них прописать DHCP=ipv4? Пробовал ли перезагрузиться после изменения конфигурации, а не просто рестартнуть networkd?

anonymous
()
Ответ на: комментарий от anonymous

Правильно ли прописаны адреса в br0.network?

Они прописаны правильно. Хотя то, какие именно адреса там прописаны - не должно влиять на таблицу роутинга.

Возможно, у тебя какая-то совсем тупая причина.

Отлично. Как бы узнать, какая именно?

Пробовал ли перезагрузиться после изменения конфигурации, а не просто рестартнуть networkd?

Обычно я останавливаю systemd-networkd, руками убиваю бридж и запускаю сервис снова:
systemctl stop systemd-networkd
ifconfig enp5s0 down
ifconfig br0 down
brctl delbr br0
... редактирую конфиги
systemctl start systemd-networkd

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)

Сеть конфигурируют не так

Siado ★★★★★
()

Мои настройки для моста из /etc/systemd/network

==> 10-br-tap.netdev <==
[NetDev]
Name=br0
Kind=bridge

[Bridge]
STP=True

==> 11-eth.network <==
[Match]
Name=eth*
[Network]
#DHCP=yes
Bridge=br0

==> 12-br0.network <==
[Match]
Name=br0
[Network]
DHCP=yes

==> 13-tap0.network <==
[Match]
Name=tap0

[Network]
Bridge=br0

Сеть

$ networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     unmanaged
  2 eth0             ether              carrier     configuring
  4 br0              ether              routable    configured
  5 tap0             ether              carrier     configuring

Маршруты

$ sudo route -n
[sudo] пароль для radjah:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    1024   0        0 br0
...
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.1.1     0.0.0.0         255.255.255.255 UH    1024   0        0 br0

Спрашивай свои вопросы.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Спрашивай свои вопросы.

Как сделать, чтобы работало в моей операционной системе (а не в твоей. Установить твою - не предлагать.)

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от Radjah

Я понимаю. И теперь ты очень горд собой. Даже если я возьму сейчас Arch (или Debian), подниму с твоим конфигом пару виртуалок и это заработает, то как это поможет мне в диагностике моей проблемы с другим дистрибутивом? Вон человек выше пишет, что у него прямо мои конфиги работают.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 3)
Ответ на: комментарий от Einstok_Fair

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

Экстрасенсы все в отпусках.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Экстрасенсы все в отпусках.

И это очень плохо. Мне-то как раз нужна диагностика работающей системы. И если, допустим, про NetworkManager можно прочитать его документацию и пропробовать что-то сделать, то что такое «через networking» я вообще не понял.

Ты в оп-посте не описал, чем у тебя сеть до systemd рулилась.

А я не знаю. Мне нужны примеры диагностических команд.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 2)
Ответ на: комментарий от Radjah

# ls /etc/network
ls: невозможно получить доступ к '/etc/network': Нет такого файла или каталога

# file /etc/init.d/networking
/etc/init.d/networking: cannot open `/etc/init.d/networking' (No such file or directory)

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от iliyap

Так NetworkManager активен или нет?

Он установлен, но я ещё не прочитал по нему документацию, поэтому я ничего не ответил.

Что говорят команды nmcli dev и nmcli conn?

# nmcli dev
Ошибка: не удалось создать объект NMClient: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method «GetManagedObjects» with signature «» on interface «org.freedesktop.DBus.ObjectManager» doesn't exist

# nmcli conn
Ошибка: не удалось создать объект NMClient: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method «GetManagedObjects» with signature «» on interface «org.freedesktop.DBus.ObjectManager» doesn't exist

Einstok_Fair ★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.