Netplan ใช้ไม่ได้เมื่อเริ่มต้น


13

ฉันติดตั้ง Ubuntu 17.10 พร้อมอัปเดตล่าสุดบนเครื่องเสมือน vmware Netplan ไม่ได้กำหนดค่า ethernets 2 อันของฉัน

นี่คือ /etc/netplan/01-netcfg.yaml ของฉัน

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

ฉันเปลี่ยนกลับไปเป็นอุปกรณ์ที่คาดการณ์ได้เช่น eth0 และหลังจากบูตอุปกรณ์ทั้งหมดมีการตั้งชื่ออย่างถูกต้อง แต่ไม่ได้กำหนดค่า

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

หลังจากเข้าสู่ระบบและการดับ systemctl รีสตาร์ทอุปกรณ์systemd-networkdมีการกำหนดค่า netplan ใช้ยังทำงาน

ฉันเล่นรอบมากด้วย systemd-networkd.service และ systemd-networkd.timer แต่ไม่มีอะไรช่วย

มันค่อนข้างน่าผิดหวังในการติดตั้งเครือข่ายด้วยตนเองหลังจากรีบูตแต่ละครั้ง ไม่มีใครรู้วิธีแก้ปัญหานี้?


2
ณ เวลาบูตเนื้อหาของ / run / systemd / network และ / run / systemd / netif คืออะไร?
slangasek

สิ่งนี้ควรได้รับการแก้ไขใน Bionic ด้วย netplan 0.36.3 คุณทดสอบและแจ้งให้เราทราบได้ไหม
dja

2
ฉันใช้ 18.04 และฉันกำลังประสบปัญหาเดียวกัน คุณมีทางออกหรือไม่?
gtzinos

คำตอบ:


3

ฉันคิดว่าคุณกดLP: # 1770082 - "systemd-networkd ไม่เปลี่ยนชื่ออุปกรณ์เมื่อบู๊ต"

โดยทั่วไปเมื่อระบบของคุณกำลังบู๊ตอุปกรณ์เครือข่ายจะปรากฏขึ้นเป็นeth0/ eth1ฯลฯ คำสั่งซื้อนั้นไม่สามารถคาดเดาได้ดังนั้น udev จะเปลี่ยนชื่ออุปกรณ์เป็นสิ่งต่าง ๆ เช่นens3หรือenp2s0ในระยะเริ่มต้นของการบูต (คุณควรจะเห็นสิ่งนี้ได้โดย grepping ผลลัพธ์ของdmesg)

คุณมีมาตรฐานset-nameใน YAML แพลนเน็ตของคุณ ในภายหลังในการบูตที่set-nameสร้างกฎการเปลี่ยนชื่อในไฟล์ลิงค์ systemd ซึ่งอ่านโดย udev อย่างไรก็ตามไฟล์ลิงก์จะไม่ทำให้อุปกรณ์เปลี่ยนชื่อหากอุปกรณ์นั้นถูกเปลี่ยนชื่อแล้ว ในกรณีของคุณอุปกรณ์จะไม่ถูกเปลี่ยนชื่อเนื่องจากอาจถูกเปลี่ยนชื่อก่อนหน้านี้ใน initrd

ฉันเปิดข้อผิดพลาดกับ systemd ( ปัญหา # 9006 - "udev: ชื่ออินเตอร์เฟสในไฟล์ลิงก์ไม่ได้ใช้") เกี่ยวกับเรื่องนี้ ฉันยังเสนอการเปลี่ยนแปลงเป็น netplan ( PR # 31 - "สร้างไฟล์กฎ udev เพื่อเปลี่ยนชื่ออุปกรณ์") ซึ่งจะทำให้ไฟล์กฎ systemd ถูกสร้างขึ้นเช่นเดียวกับไฟล์ลิงก์เนื่องจากไฟล์กฎได้รับการยอมรับแม้ว่าอุปกรณ์จะมี ถูกเปลี่ยนชื่อแล้ว

วิธีแก้ปัญหาลองบู๊ตด้วยnet.ifnames=0บนบรรทัดคำสั่งเคอร์เนล สำหรับวิธีแก้ปัญหาระยะยาวคาดหวังว่าการเปลี่ยนแปลงของฉันเป็น netplan จะถูก backported ไปที่ Bionic และจะเปิดตัวในเดือนหน้า


ตอนนี้ได้รับการแก้ไขแล้วด้วย netplan 0.36.3
dja

สิ่งนี้แก้ไขได้สำหรับฉันใน Ubuntu 18.04.1 ที่เป็นปัจจุบันรวมถึงการเสนอการปรับปรุง backport และการรักษาความปลอดภัยในปี 2018-09-17 set-nameตอนนี้ฉันปิดการใช้งานคำสั่งไม่ได้ลองใช้net.ifnames=0เคอร์เนล cmdline ด้วยset-nameอุปกรณ์ที่ถูกเปลี่ยนชื่อ แต่ไม่ได้นำมาขึ้น
TheJJ

2

ฉันมีปัญหาเดียวกันกับ Ubuntu 18.04 แต่โซลูชันของ R. Pietsch ไม่ได้แก้ปัญหา :(

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

ฉันยังพยายามเปิดใช้งานผู้ใช้รูทซึ่งเป็นค่าเริ่มต้นที่ปิดใช้งานบน Ubuntu แต่ไม่มีโชค

วิธีเดียวที่ฉันต้องเชื่อมต่อคือ:

  1. ล็อกอินเข้าสู่เครื่องโดยใช้คีย์บอร์ดของตัวเอง
  2. พิมพ์ "sudo netplan ใช้";
  3. จากนั้นในที่สุดฉันก็สามารถ SSH เข้าสู่เครื่อง

หากฉันไม่ได้ "sudo netplan ใช้" ฉันไม่มีการเชื่อมต่อกับเครื่อง เป็นไปได้อย่างไรที่จะนำไปวางจำหน่ายใน LTS เช่นซอฟต์แวร์ที่เสียหาย

ฉันต้องการเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับสถานการณ์ของฉันเพื่อเป็นประโยชน์กับผู้อื่นในการรับรู้ปรากฏการณ์ที่เรากำลังพูดถึง นี่คือสิ่งที่เกิดขึ้นในกรณีของฉัน:

  • ฉันติดตั้ง Ubuntu 18.04 บน Intel NUC ของฉันโดยใช้ netinstall
  • ฉันกำหนดค่าไฟล์ netplan YAML เพื่อรับที่อยู่ ip แบบคงที่เมื่อเชื่อมต่อแบบไร้สาย
  • ฉันสมัครด้วย "sudo netplan Apply";
  • ฉันรีบูท NUC
  • ฉันเปิดตัว "ping -t" จากเครื่อง Windows ของฉัน
  • เมื่อเริ่มต้นใหม่ NUC แสดงพรอมต์การเข้าสู่ระบบ LXDE
  • ณ จุดนั้น NUC ไม่สามารถเข้าถึงได้ตาม ping;
  • ฉันเข้าสู่ระบบพิมพ์ "sudo netplan ใช้" และหลังจากนั้นไม่กี่วินาทีมันก็สามารถเข้าถึงได้

ฉันคิดว่า netplan เป็นการปรับปรุงที่ดีเมื่อเทียบกับ / etc / network / interfaces แต่พฤติกรรมนี้ควรได้รับการแก้ไขโดยเร็วที่สุด :)

UPDATE:

ฉันแก้ไขปัญหาโดยใช้คำสั่งต่อไปนี้:

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

ดูเหมือนว่าจะเป็นแผงตัวจัดการเครือข่ายใน LXDE รบกวน แม้ว่าการเชื่อมต่อจะแสดงเป็น "ไม่ได้จัดการ" ฉันยกเลิกการตรวจสอบ "เปิดใช้งานเครือข่าย" และดูเหมือนว่าจะแก้ไขปัญหาได้

เราสามารถปิดอันนี้ :)


2

ตอนนี้ฉันได้ลองกับ Ubuntu 18.04 แล้วและฉันคิดว่าข้อผิดพลาดนี้ได้รับการแก้ไขแล้ว
มันเหมาะกับฉันแล้ว


ควรแก้ไขด้วย netplan 0.36.3
dja

1
ไม่ฉันเข้าใจถูกแล้ววันนี้
Dario Fumagalli

และ ... ณ วันนี้ฉันมีเซิร์ฟเวอร์ Ubuntu 18.04 ที่อัปเดตแล้วและยังคงเกิดขึ้น!
Dario Fumagalli

0

ฉันแก้ไขปัญหานี้ด้วยการแทรก

@reboot /usr/sbin/netplan apply

เข้าไปในรากของ crontab ไม่ใช่ทางออกที่แท้จริงสำหรับปัญหา แต่เป็นวิธีแก้ปัญหาที่แก้ไขได้


0

ด้วยอูบุนตู 18.04, netplan ก็ค่อนข้างใหม่สำหรับฉันฉันทำตามคำแนะนำเพื่อสร้าง/etc/netplan/01-netcfg.yamlไฟล์และเรียกใช้sudo netplan applyและเช่นเดียวกับคุณเมื่อรีบูตการเชื่อมต่อก็หายไป

การเรียกใช้ด้วยตนเองsudo netplan applyทำให้ทำงานได้อีกครั้ง แต่นั่นก็น่ารำคาญ

ในกรณีของฉันการแก้ปัญหาคือการแก้ไข/etc/network/interfacesและแสดงความคิดเห็น enp0 ** ทั้งหมด (ตรวจสอบว่าพวกเขาจะเรียกว่าในระบบของคุณ)

จากนั้นรีบูท

โดยทั่วไปแล้วการกำหนดค่าเก่าใน / etc / nwtwork / interfaces นั้นขัดแย้งกับ netplan


1
สิ่งนี้ไม่ตอบคำถามที่ถูกถาม
Thomas Ward

0

ฉันมีปัญหาที่ฉันต้องการเรียกเหตุการณ์กลับมาอีกครั้ง โดยพื้นฐานแล้ว netplan ทำการตั้งค่าทั้งหมดถูกต้อง แต่ networkd ไม่สนใจมัน การแทนที่อุปกรณ์ในขณะที่ "netplan ใช้" จะทำการแก้ไข

ดังนั้นสำหรับวิธีแก้ปัญหาบางอย่างอาจจะทำเช่นนั้น

$ 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)

บางทีนี่อาจช่วยให้บางคนมองหาปัญหานี้

เนื่องจากฉันคิดว่านี่เป็นข้อผิดพลาดจริงๆฉันจึงได้ยื่นข้อบกพร่องนี้เกี่ยวกับเรื่องนี้


0

ตกลงดีกว่าคำตอบฉันคงมันกลับไปที่ ifupdown จนกว่า netplan จะได้รับการแก้ไข sudo apt ติดตั้ง ifupdown แล้วกำหนดค่าอินเทอร์เฟซ sudo nano / etc / network / interfaces

อัตโนมัติ enp3s0 iface enp3s0 inet ที่อยู่คงที่ 192.168.1.100 netmask 255.255.255.0 เครือข่าย 192.168.1.0 ออกอากาศ 192.168.1.255 เกตเวย์ 192.168.1.1 dns-nameservers 192.168.1.0,8.8.8.8

และใครก็ตามที่ใช้สิ่งนี้ในเซิร์ฟเวอร์ LTS เห็นได้ชัดว่าไม่ได้ทดสอบ


0

เนื่องจากนี่เป็นปัญหาต่อเนื่องฉันจึงมีวิธีอื่นในการแก้ปัญหานี้:

สร้างตัวจับเวลา systemd และใช้การตั้งค่าเครือข่ายหลังจากบูต

นี่คือสคริปต์: check_network คุณต้องแทนที่ interface ที่เป็นของคุณแทน

#!/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

นี่คือหน่วยบริการ check_network.service

[Unit]
Description=check if netplan configured network

[Service]
ExecStart=/root/jobs/check_network

[Install]
WantedBy=multi-user.target

และนี่คือ systemd timer check_network.timer เรียกว่า 30 วินาทีหลังจากบู๊ตแล้วทุกชั่วโมง

[Unit]
Description=check_network timer

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

[Install]
WantedBy=timers.target

คัดลอก check_network ไปยัง / root / jobs

คัดลอก check_network.service ไปยัง / etc / systemd / system

คัดลอก check_network.timer ไปยัง / etc / systemd / system

จากนั้นเปิดใช้งานบริการและตัวจับเวลา

systemctl enable check_network.service
systemctl enable check_network.timer

0

ผู้ใช้ netplan เมื่อวันที่ 18.04.1 สมมติว่าการกำหนดค่า netplan ถูกอ่านเมื่อรีสตาร์ท networkd - ในตัวเองเป็นปัญหาเล็กน้อยเพราะมีบริการเครือข่ายที่แตกต่างกัน 10 บริการที่ systemctl รู้ ไม่มีพวกเขานำผลลัพธ์ที่ต้องการดังนั้นฉันหันไปรีบูตเครื่องทั้งหมด ไม่มีประโยชน์ ในที่สุดฉันก็พบว่า 'การใช้ netplan' ช่วยได้ที่นี่ไม่เพียง แต่ในการประยุกต์ใช้ แต่ยังแสดงถึงความผิดพลาดทางไวยากรณ์ ดังนั้นหลังจากการเปลี่ยนแปลงดูเหมือนว่าคุณต้องทำ netplan และจากนั้นก็เสร็จ นี่ไม่ได้อธิบายไว้ในคู่มือยกเว้นว่าฉันพลาดไปดังนั้นฉันจึงรวมสิ่งนี้ไว้ที่เวิร์มตัวเล็ก ๆ ที่น่าสงสารอย่างฉัน


0

ทุกอย่างในไฟล์ / etc / netplan ถูกสร้างโดยสิ่งที่ cloud-init (ศัพท์เทคนิคที่ฉันรู้)

แก้ไข /etc/cloud/cloud.cfg/50-curtin-networking.cfg เช่นเดียวกับที่คุณแก้ไขไฟล์ /etc/netplan/*.yaml

จากนั้นเรียกใช้ sudo netplan แบบคลาวด์ที่สะอาดที่สุดใช้กับ cloud-init

ฉันเลิกใช้ wifi กับ netplan แล้วก็กลับไปที่ ifupdown โชคดีสำหรับทุกคนที่พยายามทำมันด้วย netplan เพราะฉันได้อ่านว่าอูบุนตูทำผิดพลาดจริง ๆ ในวันที่ 18.04 เมื่อพวกเขาไม่ได้ทิ้งขยะอย่างสมบูรณ์ถ้าการอัปเดตไม่สมบูรณ์และไม่สนับสนุน cloud-init อย่างเต็มที่ :( อาจจะดีกว่านี้ใน 19.04 หวังว่าข้อมูลที่ฉันให้ไว้ข้างต้นจะช่วยให้ใครบางคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.