У меня есть машина рабочий Сервер Ubuntu 18.04. Сеть настроена с помощью Netplan, таким образом, у меня есть эта конфигурация в /etc/netplan/01-netcfg.yaml
:
network:
version: 2
renderer: networkd
ethernets:
enp1s0f0:
optional: false
addresses:
- 10.0.0.1/24
wifis:
wlp2s0:
optional: true
dhcp4: yes
access-points:
[...]
enp1s0f0
подключен к устройству, которое может или не может работать (при начальной загрузке или никакое другое время). Я хочу выполнить сервер DHCP в этом интерфейсе.
Проблема, когда я загружаюсь существует задержка нескольких минут, и я вижу это сообщение:
A start job is running for Wait for Network to be Configured
В конечном счете это испытывает таймаут, начальная загрузка продолжается, но enp1s0f0
никогда не настраивается или поднимается. ip link show enp1s0f0
дает:
2: enp1s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff
Я понятия не имею что значение NO-CARRIER
но в случае, если это релевантно, вот вывод sudo lspci -v
:
01:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM57766 Gigabit Ethernet PCIe (rev 01)
Subsystem: Broadcom Limited NetXtreme BCM57766 Gigabit Ethernet PCIe
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at a0400000 (64-bit, prefetchable) [size=64K]
Memory at a0410000 (64-bit, prefetchable) [size=64K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=6 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 00-00-10-dd-b1-ef-65-21
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [1b0] Latency Tolerance Reporting
Kernel driver in use: tg3
Kernel modules: tg3
Теперь, если я включаю подключенное устройство, конечно же enp1s0f0
подходит:
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff
Но это бесполезно в этой точке — сервер DHCP не будет работать, потому что это не могло запуститься с enp1s0f0
нет во время начальной загрузки. Мне нужно enp1s0f0
и настроенный во время начальной загрузки, которая я думал, был смысл статической конфигурации IP. Еще более странный то, что это всегда имеет адрес IPv6, даже когда это снижается:
2: enp1s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff
inet6 fe80::12dd:b1ff:feef:6521/64 scope link
valid_lft forever preferred_lft forever
Если я проверяю вывод отладки Netplan, я вижу:
$ sudo netplan --debug apply
** (generate:1555): DEBUG: 20:39:27.253: Processing input file //etc/netplan/01-netcfg.yaml..
** (generate:1555): DEBUG: 20:39:27.254: starting new processing pass
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: adding wifi AP 'Jeff Winger's Wireless Hairbrush'
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: setting default backend to 1
** (generate:1555): DEBUG: 20:39:27.254: enp1s0f0: setting default backend to 1
** (generate:1555): DEBUG: 20:39:27.254: Generating output files..
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: Creating wpa_supplicant configuration file run/netplan/wpa-wlp2s0.conf
** (generate:1555): DEBUG: 20:39:27.254: Creating wpa_supplicant service enablement link /run/systemd/system/multi-user.target.wants/netplan-wpa@wlp2s0.service
** (generate:1555): DEBUG: 20:39:27.254: NetworkManager: definition wlp2s0 is not for us (backend 1)
** (generate:1555): DEBUG: 20:39:27.254: NetworkManager: definition enp1s0f0 is not for us (backend 1)
DEBUG:netplan generated networkd configuration exists, restarting networkd
DEBUG:no netplan generated NM configuration exists
DEBUG:replug enp1s0f0: unbinding 0000:01:00.0 from /sys/bus/pci/drivers/tg3
DEBUG:replug enp1s0f0: rebinding 0000:01:00.0 to /sys/bus/pci/drivers/tg3
DEBUG:device wlp2s0 operstate is up, not replugging
DEBUG:netplan triggering .link rules for wlp2s0
DEBUG:device lo operstate is unknown, not replugging
DEBUG:netplan triggering .link rules for lo
Моя конфигурация для isc-dhcp-server
должен иметь /etc/default/isc-dhcp-server
содержите:
INTERFACESv4="enp1s0f0"
... и /etc/dhcp/dhcpd.conf
содержите (среди других вещей):
subnet 10.0.0.0 netmask 255.255.255.0 {
...
}
В теории это должно служить DHCP enp1s0f0
. Однако с тех пор enp1s0f0
никогда не поднимается, серверу DHCP не удается запуститься:
No subnet declaration for enp1s0f0 (no IPv4 addresses).
** Ignoring requests on enp1s0f0. If this is not what
you want, please write a subnet declaration
in your dhcpd.conf file for the network segment
to which interface enp1s0f0 is attached. **
Not configured to listen on any interfaces!
Это не было проблемой под ifupdown
(Я понятия не имею почему enp1s0f0
только подходит во время начальной загрузки, является ли что-нибудь в другом конце кабеля; я думал, что это было смыслом наличия статического IP). Действительно ли возможно получить его работающий в Netplan? Или действительно ли возможно иметь сервер DHCP, запускаются когда enp1s0f0
произошел?
Похоже, что вы попали в ошибку, которая будет решена с помощью https://github.com/CanonicalLtd/netplan/pull/34 - в настоящее время устройства будут настроены, только если у них есть носитель , но это требование исчезает.
В то же время, вы, вероятно, можете это исправить, настроив устройство с помощью systemd-networkd
напрямую. Удалите раздел enp1s0f0
из конфигурации netplan и добавьте что-то вроде этого (непроверенного) конфигурации systemd в /etc/systemd/network/10-enp1s0f0.network
:
[Match]
Name=enp1s0f0
[Link]
RequiredForOnline=no
[Network]
ConfigureWithoutCarrier=true
Address=10.0.0.1/24
Ключевой бит - это ConfigureWithoutCarrier
, который я извлек непосредственно из pull. запрос.
(Вы можете увидеть, что генерирует netplan, и пойти оттуда - файл будет в /run/systemd/network
.)
В качестве альтернативы, вы можете использовать тот факт, что netplan и ifupdown могут сосуществовать, apt install ifupdown
и настройте enp1s0f0
с помощью ifupdown.
Похоже, что у Netplan есть умная система, позволяющая автоматически определять, есть ли у iface ссылка или нет, и назначать адреса только тогда, когда связь активна.
Когда этот интерфейс не имеет связи (сигнал несущей), он остается ненастроенным, однако, если я включаю другое устройство на другом конце кабеля, интерфейс автоматически подключается с IP-адресом и всем необходимым. [ 111]
Для DHCP решением было бы не привязывать его к определенному интерфейсу ...