Netplan không áp dụng khi khởi động


12

Tôi đã cài đặt Ubuntu 17.10 với các bản cập nhật mới nhất trên máy ảo vmware. Netplan không cấu hình 2 thiết bị của tôi.

Đây là /etc/netplan/01-netcfg.yaml của tôi

network:
  version: 2
  renderer: networkd
  ethernets:
    lan:
      match:
        macaddress: 00:12:34:a8:29:e8
      set-name: lan
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 10.10.0.48/24
        - 1701:5740:5000:3301::48/64

    failover:
      match:
        macaddress: 00:45:57:89:27:e8
      set-name: failover
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 17.25.111.30/27
        - 1701:5740:5000:3300::30/64
      gateway4: 17.25.111.1
      gateway6: 1701:5740:5000:3300::1

      nameservers:
        search:
          - example.at
          - intern.example.at
        addresses:
          - 10.10.0.1
          - 1701:5740::66

Tôi đã chuyển trở lại các thiết bị có thể dự đoán được như eth0 và sau khi khởi động, tất cả các thiết bị được đặt tên đúng, nhưng không được định cấu hình.

1: lo: <LOOPBACK,UP,LOWER_UP> 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: lan: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:12:34:a8:29:e8 brd ff:ff:ff:ff:ff:ff
3: failover: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:45:57:89:27:e8 brd ff:ff:ff:ff:ff:ff

Sau khi đăng nhập và kích hoạt systemctl khởi động lại các thiết bị systemd-networkd được cấu hình. netplan áp dụng cũng làm công việc.

Tôi đã chơi rất nhiều với systemd-networkd.service và systemd-networkd.timer nhưng không có gì giúp được.

Nó khá là bực bội khi thiết lập mạng thủ công sau mỗi lần khởi động lại. Có ai biết làm thế nào để giải quyết điều này?


2
Khi khởi động, nội dung của / run / systemd / network và / run / systemd / netif là gì?
slangasek

Điều này bây giờ sẽ được sửa trong Bionic với netplan 0.36.3. Bạn có thể kiểm tra nó và cho chúng tôi biết?
dja

2
Tôi sử dụng 18.04 và tôi đang đối mặt với cùng một vấn đề. Bạn có giải pháp nào không?
gtzinos

Câu trả lời:


3

Tôi nghĩ bạn đã nhấn LP: # 1770082 - "systemd-networkd không đổi tên thiết bị khi khởi động".

Về cơ bản, khi hệ thống của bạn khởi động, thiết bị mạng sẽ xuất hiện dưới dạng eth0/ eth1v.v. Thứ tự không thể dự đoán được, vì vậy udev đổi tên thiết bị thành những thứ như ens3hoặc enp2s0trong giai đoạn khởi động. (Bạn sẽ có thể thấy điều này bằng cách lấy đầu ra của dmesg.)

Bạn có một khổ set-namethơ trong YAML kế hoạch mạng của bạn. Sau này khi khởi động, điều đó set-nametạo ra một quy tắc đổi tên trong tệp liên kết systemd , được đọc bởi udev. Tuy nhiên, tệp liên kết sẽ không khiến thiết bị bị đổi tên nếu thiết bị đã được đổi tên. Trong trường hợp của bạn sau đó, thiết bị sẽ không được đổi tên vì có thể nó đã được đổi tên trước đó trong initrd.

Tôi đã mở một lỗi đối với systemd ( vấn đề # 9006 - "udev: tên giao diện trong tệp liên kết không được áp dụng") về điều này. Tôi cũng đã đề xuất thay đổi đối với netplan ( PR # 31 - "Tạo tệp quy tắc udev để đổi tên thiết bị") sẽ tạo tệp quy tắc systemd cũng như tệp liên kết, vì tệp quy tắc được tôn trọng ngay cả khi thiết bị có đã được đổi tên.

Như một giải pháp thay thế, hãy thử khởi động với net.ifnames=0dòng lệnh kernel. Đối với một giải pháp dài hạn, hy vọng sự thay đổi của tôi đối với netplan sẽ được đưa vào Bionic và phát hành trong tháng tới.


Điều này hiện đã được sửa với netplan 0.36.3
dja

Điều này đã giải quyết nó cho tôi trên Ubuntu 18.04.1 cập nhật bao gồm các bản cập nhật backport được đề xuất và bảo mật vào 2018-09-17. Tôi đã vô hiệu hóa các lệnh set-namebây giờ, không thử net.ifnames=0cmdline kernel. Với set-name, các thiết bị đã được đổi tên, nhưng không được đưa lên.
TheJJ

2

Tôi có chính xác vấn đề tương tự trên Ubuntu 18.04, nhưng giải pháp của R. Pietsch không giải quyết được :(

sudo crontab -e
@reboot /usr/sbin/netplan apply

Tôi cũng đã cố gắng kích hoạt người dùng root, mặc định nó bị vô hiệu hóa trên Ubuntu, nhưng không gặp may.

Cách duy nhất tôi có để có được kết nối là:

  1. đăng nhập vào máy bằng bàn phím riêng;
  2. gõ "sudo netplan áp dụng";
  3. sau đó tôi cuối cùng đã có thể SSH vào máy.

Nếu tôi không "sudo netplan áp dụng", tôi không có kết nối trên máy. Làm thế nào có thể đưa vào một bản phát hành LTS như một phần mềm bị hỏng như vậy?

Tôi muốn thêm chi tiết về kịch bản của tôi, để hữu ích cho người khác nhận ra những hiện tượng chúng ta đang nói đến. Đây là những gì nó đã xảy ra trong trường hợp của tôi:

  • Tôi đã cài đặt Ubuntu 18.04 trên Intel NUC bằng cách cài đặt mạng;
  • Tôi đã cấu hình tệp YAML netplan để lấy địa chỉ IP tĩnh khi kết nối không dây;
  • Tôi đã áp dụng nó với "sudo netplan áp dụng";
  • Tôi khởi động lại NUC của tôi;
  • Tôi đã khởi chạy "ping -t" từ máy Windows của mình;
  • Sau khi bắt đầu lại, NUC hiển thị lời nhắc đăng nhập LXDE;
  • Tại thời điểm đó, NUC không thể truy cập theo ping;
  • Tôi đã đăng nhập, gõ "sudo netplan áp dụng" và sau vài giây nó có thể truy cập được.

Tôi nghĩ netplan là một cải tiến tốt so với / etc / mạng / giao diện, nhưng hành vi này cần được khắc phục càng sớm càng tốt :)

CẬP NHẬT:

Tôi đã gỡ lỗi sự cố bằng các lệnh sau:

$ journalctl --no-pager -lu systemd-networkd
$ networkctl

Có vẻ như bảng điều khiển Network Manager trong LXDE can thiệp vào nó. Ngay cả khi các kết nối được hiển thị là "không được quản lý", tôi đã bỏ chọn "Bật mạng" và có vẻ như nó đã khắc phục được sự cố.

Chúng ta có thể đóng cái này :)


2

Bây giờ tôi đã thử nó với Ubuntu 18.04 và tôi nghĩ rằng lỗi này đã được sửa.
Nó làm việc cho tôi bây giờ.


Nó nên được sửa với netplan 0.36.3
dja

1
Không, tôi đã nhận được ngay hôm nay
Dario Fumagalli

và ... tính đến hôm nay, tôi có một máy chủ Ubuntu 18.04 mới và được cập nhật và điều này vẫn xảy ra!
Dario Fumagalli

0

Tôi đã khắc phục vấn đề này bằng cách chèn

@reboot /usr/sbin/netplan apply

vào crontab của root. Không phải là giải pháp thực sự cho vấn đề, nhưng một cách giải quyết đã khắc phục nó.


0

Với Ubuntu 18.04, netplan cũng khá mới đối với tôi, tôi đã làm theo hướng dẫn để tạo /etc/netplan/01-netcfg.yamltệp và chạy sudo netplan applyvà giống như bạn, ngay khi khởi động lại, kết nối đã biến mất.

Chạy thủ công sudo netplan applylàm cho nó hoạt động trở lại. Nhưng điều đó thật khó chịu.

Trong trường hợp của tôi, giải pháp là chỉnh sửa /etc/network/interfacesvà nhận xét tất cả các khổ thơ enp0 ** (kiểm tra xem chúng được gọi như thế nào trong hệ thống của bạn).

Sau đó khởi động lại.

Về cơ bản, cấu hình cũ trong / etc / nwtwork / giao diện đã xung đột với netplan.


Điều này không trả lời câu hỏi đang được hỏi.
Thomas Ward

0

Tôi đã có một vấn đề mà tôi cần phải điều chỉnh lại các sự kiện. Về cơ bản netplan đã làm tất cả cấu hình đúng nhưng Networkd bỏ qua nó. Việc thay thế các thiết bị như "áp dụng netplan" sẽ khắc phục nó.

Vì vậy, đối với một số giải pháp có thể là làm như

$ echo virtio0 | sudo tee /sys/bus/virtio/drivers/virtio_net/virtio0/driver/unbind
$ echo virtio0 | sudo tee /sys/bus/virtio/drivers/virtio_net/bind
(or other devices / drivers in your case)

Có lẽ điều này giúp một số tìm kiếm vấn đề này.

Vì tôi nghĩ rằng đây thực sự là một lỗi nên tôi đã gửi lỗi này về nó.


0

Ok câu trả lời tốt hơn tôi đã sửa nó trở lại ifupdown cho đến khi netplan được sửa. sudo apt cài đặt ifupdown sau đó cấu hình giao diện sudo nano / etc / network / giao diện

auto enp3s0 iface enp3s0 inet địa chỉ tĩnh 192.168.1.100 netmask 255.255.255.0 mạng 192.168.1.0 phát 192.168.1.255 gateway 192.168.1.1 dns-nameervers 192.168.1.0.8.8.8.8.8

và bất cứ ai thực hiện điều này trong một bản phát hành máy chủ LTS rõ ràng đã không kiểm tra nó


0

Vì đây là một vấn đề đang diễn ra nên tôi có một cách tiếp cận khác để giải quyết vấn đề này:

Tạo bộ đếm thời gian systemd và áp dụng cài đặt mạng sau khi khởi động.

Đây là kịch bản: check_network. Bạn cần thay thế giao diện ske32 bằng giao diện của bạn.

#!/bin/bash
#
CMD="$(ip address | egrep -c "^[\s\t]*inet .* ens32$")"
if [ ${CMD} -eq "0" ]
then
   echo "check network not configured, configuring now..." | systemd-cat -p info
   netplan apply
else
   echo "check network ok" | systemd-cat -p info
fi

Đây là đơn vị dịch vụ check_network.service

[Unit]
Description=check if netplan configured network

[Service]
ExecStart=/root/jobs/check_network

[Install]
WantedBy=multi-user.target

Và đây là bộ đếm thời gian systemd check_network.timer được gọi là 30 giây sau khi khởi động và sau đó mỗi giờ

[Unit]
Description=check_network timer

[Timer]
OnBootSec=30s
OnUnitActiveSec=3600s
Persistent=true
Unit=check_network.service

[Install]
WantedBy=timers.target

Sao chép check_network vào / root / jobs

Sao chép check_network.service sang / etc / systemd / system

Sao chép check_network.timer vào / etc / systemd / system

Và sau đó kích hoạt dịch vụ và hẹn giờ

systemctl enable check_network.service
systemctl enable check_network.timer

0

Người dùng netplan vào ngày 18.04.1 Giả định rằng cấu hình netplan được đọc khi khởi động lại mạng - điều này có một chút vấn đề vì có 10 dịch vụ mạng khác nhau mà systemctl biết. Không ai trong số họ mang lại kết quả mong muốn nên tôi đã dùng đến việc khởi động lại toàn bộ máy. Vô ích. Cuối cùng, tôi đã phát hiện ra rằng 'netplan áp dụng' không giúp ích gì ở đây không chỉ trong việc áp dụng mà còn chỉ ra lỗi cú pháp. Vì vậy, sau khi thay đổi, có vẻ như bạn phải áp dụng netplan và sau đó bạn đã hoàn tất. Điều này không được mô tả trong sách hướng dẫn trừ khi tôi bỏ lỡ nó vì vậy tôi đưa nó vào đây cho những con sâu nhỏ tội nghiệp khác như tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.