Ubuntu 18.04: เปลี่ยนกลับเป็น / etc / network / interfaces


44

เริ่มต้นราว Ubuntu 18.04 ที่ devs อูบุนตูหยุดใช้คลาสสิก/etc/init.d/networkingและ/etc/network/interfacesวิธีการของการกำหนดค่าเครือข่ายและเปลี่ยนไปบางสิ่งที่netplanเรียกว่า ทำให้คนจำนวนมากโกรธมากและถูกมองว่าเป็นการเคลื่อนไหวที่ไม่ดี เป็นไปได้ไหมที่จะลบnetplanและใช้/etc/network/interfacesวิธีที่ถูกต้องในการกำหนดค่าเครือข่าย


2
ทำไมไม่เพียงกำหนดค่าด้วย netplan ในสถานการณ์ส่วนใหญ่มันค่อนข้างตรงไปตรงมา
chili555

3
@ chili555 อาจเป็นได้ว่าฉันต้องยอมรับการเปลี่ยนแปลงและเรียนรู้สิ่งใหม่ ฉันแค่อยากจะรู้ว่ามันเป็นเรื่องเล็กน้อยที่จะย้อนกลับไปสู่วิธีที่ควรจะเป็น เหมือนsystemdผมเข้าใจว่าการเปลี่ยนแปลงก่อกวนบางครั้งอาจเป็นประโยชน์และได้รับการกอด อย่างไรก็ตามนี่ไม่ใช่หนึ่งในช่วงเวลาที่จำเป็นต้องมีการเปลี่ยนแปลงหรือเป็นประโยชน์
jdgregson

1
มันไม่สำคัญและไม่สามารถย้อนกลับได้ง่ายในกรณีที่เกิดข้อผิดพลาด หากคุณต้องการมีชีวิตที่เป็นอันตรายฉันยินดีที่จะเสนอคำตอบ ในอีกทางหนึ่งเราสามารถกำหนดค่า netplan ในไม่กี่นาที คุณชอบอันไหน? ป.ล. - ฉันไม่ได้แกล้งทำเป็นเข้าใจอย่างถ่องแท้ว่า netplan ถึงการแยกตัวออก/etc/network/interfacesไปได้อย่างไร ทั้งหมดที่ฉันทำได้คือเชื่อมั่นว่าผู้ที่แนะนำการเปลี่ยนแปลงจะรู้ได้ว่าทำไมมันถึงดีกว่า
chili555

1
หรือเพียงแค่กำหนดค่า netplan ให้เหมาะสมและทำได้
chili555

1
@ chili555 Netplan ไม่รองรับอินเตอร์เฟสเครือข่ายเสมือน ดูที่นี่: askubuntu.com/questions/990825/virtual-interface-in-netplan
user3751385

คำตอบ:


43

ขั้นตอนต่อไปนี้ใช้ได้กับ Ubuntu 18.04 (Bionic Beaver)

I.ติดตั้งแพคเกจifupdown อีกครั้ง :

# apt-get update
# apt-get install ifupdown

ครั้งที่สอง กำหนดค่าไฟล์/ etc / network / interfaces ของคุณด้วย stanzas การกำหนดค่าเช่น:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
  address 192.168.1.133
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  # Only relevant if you make use of RESOLVCONF(8)
  # or similar...
  dns-nameservers 1.1.1.1 1.0.0.1

สาม. ทำให้การกำหนดค่ามีประสิทธิภาพ (ไม่จำเป็นต้องรีบูต):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking

IV ปิดใช้งานและลบบริการที่ไม่ต้องการ:

# systemctl stop systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl disable systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl mask systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# apt-get --assume-yes purge nplan netplan.io

จากนั้นคุณทำเสร็จแล้ว

หมายเหตุ: แน่นอนคุณต้องปรับค่าตามระบบของคุณ (เครือข่ายชื่ออินเตอร์เฟส ... )

V. Resolver DNS

เนื่องจาก Ubuntu Bionic Beaver (18.04) ใช้ตัวแก้ไข DNS stub ที่จัดทำโดย SYSTEMD-RESOLVED.SERVICE (8) คุณจึงควรเพิ่ม DNS เพื่อติดต่อลงในไฟล์ /etc/systemd/resolved.conf ตัวอย่างเช่น

....
DNS=1.1.1.1 1.0.0.1
....

จากนั้นรีสตาร์ทเซอร์วิสที่แก้ไขโดยระบบเมื่อเสร็จสิ้น

# systemctl restart systemd-resolved

รายการ DNS ในไฟล์ ifupdown INTERFACES (5) ดังที่แสดงด้านบนมีความเกี่ยวข้องเฉพาะเมื่อคุณใช้ RESOLVCONF (8) หรือคล้ายกัน


9
เอ่อซะพวกเขา เพียงapt-get installเมื่อคุณได้มีการกำหนดค่าเครือข่ายไม่ เป็นความคิดที่ยอดเยี่ยมอะไร Canonical
Velkan

1
@Velkan คุณสามารถกำหนดค่าเครือข่ายของคุณล่วงหน้าด้วย netplan แล้วเปลี่ยนกลับเป็น ifupdown ในภายหลัง;) แต่ฉันเห็นด้วยกับคุณ อย่างใดที่ยอมรับในการตัดสินใจที่ไม่ดี ตัวอย่างเช่นพวกเขาทำลายซอฟต์แวร์ที่ใช้ ifupdown สำหรับการกำหนดค่าเครือข่าย (ไม่มีผู้ให้บริการสำหรับ netplan) นี่เป็นกรณีของซอฟต์แวร์แผงควบคุม (ชุดเสถียรภาพ) ที่เราไม่ต้องการเพิ่มผู้ให้บริการกำหนดค่าเครือข่ายใหม่ ...
Nuxwin

3
@StephenBoston ฉันเห็นด้วยกับคุณโดยสิ้นเชิง อย่างไรก็ตามแม้ว่า Canonical พยายามที่จะดำเนินการต่อโดยการแนะนำเทคโนโลยีใหม่ก็สามารถทำได้ในลักษณะที่รุกรานน้อย ฉันหมายถึงผู้ใช้ควรเลือกตัวเลือกนี้ สำหรับเวิร์คสเตชั่นการเปลี่ยนจาก ifupdown เป็น netplan นั้นไม่ใช่เรื่องใหญ่ แต่เมื่อคุณต้องจัดการกับเซิร์ฟเวอร์ Ubuntu นั่นเป็นอีกเรื่องหนึ่งเนื่องจากซอฟต์แวร์ที่เสถียรที่สุดไม่ได้ให้อะแดปเตอร์ ... นั่นเป็นเรื่องเดียวกันสำหรับ systemd ฉันต้องจัดการกับทั้ง Debian และ Ubuntu ทุกวัน ปัญหาเกี่ยวกับ Ubuntu คือพวกเขาไม่สนใจความเข้ากันได้แบบย้อนหลังมากนัก
Nuxwin

1
การแก้ไขเล็กน้อย: # systemctl unmak networking-># systemctl unmask networking
Santosh

1
นอกจากนี้ถ้าคุณใช้dns-domainและdns-searchในไฟล์อินเตอร์เฟสคุณควรกำหนดค่าDomainsพารามิเตอร์ใน resol.conf ฉันคิดว่า? อย่างไรก็ตามงานที่ยอดเยี่ยมที่นำมารวมกันที่นี่อาจช่วยฉันได้มาก :)
OttoEisen

10

ทีม Netplan ได้โพสต์คำตอบอย่างเป็นทางการในคำถามที่พบบ่อยของพวกเขาที่นี่ :

วิธีการย้อนกลับไปยัง ifupdown

...

บนระบบที่รันอยู่ netplan สามารถลบออกได้โดยการติดตั้ง ifupdown และกำหนดค่า / etc / network / interfaces ด้วยตนเองเหมือนที่ผู้ใช้เคยทำมาก่อน

ณ เวลาที่ติดตั้งผู้ใช้สามารถเลือกที่จะใช้ ifupdown โดยคิดค่าล่วงหน้า netcfg / do_not_use_netplan = true สิ่งนี้ทำได้โดยการเพิ่ม preseed line ไปยังบรรทัดคำสั่งเมื่อทำการบูทสื่อการติดตั้ง (เช่นที่เมนูการติดตั้ง boot boot media กด F6 พิมพ์ 'e' และเพิ่มลงในบรรทัดคำสั่ง)

ดูคำตอบของ Nuxwin สำหรับคำแนะนำที่สมบูรณ์ยิ่งขึ้น


9

Netplan และ yaml นั้นเปราะบางที่สุดในสภาพแวดล้อมแบบเซิร์ฟเวอร์เท่านั้น (ความผิดพลาดของการเยื้องจะทำให้คุณเสียค่าใช้จ่าย) อินเทอร์เฟซให้อภัยเพียงพอที่จะจัดการการตั้งค่าเครือข่ายบนเซิร์ฟเวอร์ค่อนข้างง่าย
Netplan แนะนำเลเยอร์ใหม่ แต่ปัญหาที่แท้จริงคือ U18 หยุดพักหากการอัปเดตลดลงและไม่ได้ทำงานด้วย NetPlan หากคุณกลับไปที่ / etc / network / interfaces โดยติดตั้ง ifupdown ใหม่การจัดการ DNS จะไม่ทำงานในไฟล์อินเตอร์เฟสอีกต่อไป รายการ dns-nameservers ใด ๆ จะถูกละเว้น แทนที่จะตั้งค่า dns ใน /etc/resolv.conf แต่คุณไม่สามารถแก้ไขไฟล์นั้นได้เพราะจะถูกเขียนใหม่ทุกครั้งที่บูตเครื่อง WTF? Netplan ถูกออกแบบมาเพื่อจัดการโดย GUI ดังนั้นพวกเราในค่ายเซิร์ฟเวอร์เท่านั้นที่เหลืออยู่ด้วยระบบที่เปราะบางที่เราต้องเขยิบไปรอบ ๆ ไม่ดีอูบุนตู!
ทำไมไม่ให้วิธีในการเปลี่ยนเส้นทางการตั้งค่าใน / etc / network / interfaces ไปยัง netplan บน bootup เพื่อช่วยเราในขณะที่คุณเสร็จ netplan?


1
สิ่งนี้ตอบคำถามได้อย่างไร
Pierre.Vriens

@Dan Desjardins ดูคำตอบที่ได้รับการยอมรับเกี่ยวกับปัญหาตัวแก้ไข DNS .. โดยทั่วไปแล้วรายการ DNS ที่คุณใส่ลงในไฟล์ ifupdown INTERFACES (5) นั้นมีความเกี่ยวข้องเฉพาะเมื่อคุณใช้ resolvconf (8) หรือคล้ายกัน สำหรับตัวแก้ปัญหา DNS stub ที่จัดทำโดย SYSTEMD-RESOLVED.SERVICE (8 คุณต้องเพิ่ม DNS ของคุณในไฟล์ /etc/systemd/resolved.conf การทำเช่นนี้จะทำให้พวกเขาขัดขืนอีกวิธีหนึ่งคือการปิดใช้งาน SYSTEMD-RESOLVED บริการ (8) บริการและติดตั้ง / ติดตั้ง resolvconf (8) ด้วยความหวังว่าฉันชัดเจนพอ
Nuxwin

2

ทำไมไม่เพียงกำหนดค่าด้วย netplan

ด้วยการกำหนดค่าในเดสก์ท็อป 18.04 มันเป็นบรรทัดเดียวที่มอบการควบคุมอินเทอร์เฟซทั้งหมดให้กับ NetworkManager

แม้ว่ามันอาจจะเหมาะสมสำหรับผู้ใช้ 95% แต่โปรดจำไว้ว่า NetworkManager จะทำงานได้ก็ต่อเมื่อคุณลงชื่อเข้าใช้เซสชัน

หากคุณต้องการให้เครื่องของคุณทำหน้าที่เป็นเซิร์ฟเวอร์ / เดสก์ท็อปตัวอย่างเช่นเริ่มให้บริการไฟล์ไปยังเครื่องท้องถิ่นทำหน้าที่เป็นเซิร์ฟเวอร์ VNP ฯลฯ ... หรืออะไรก็ตามที่ "แฟนซี" ก่อนใครก็ตามที่เคยเข้าสู่ระบบ คุณจะมีปัญหากับการกำหนดค่าใน 18.04-Desktop มาตรฐาน

แน่นอนว่าทางเลือกอื่นคือใช้การกำหนดค่าเซิร์ฟเวอร์ - Netplan ซึ่งเท่าที่ฉันได้อ่าน (ไม่ได้ตรวจสอบด้วยตัวเอง) มือควบคุมไปยัง systemd-networkd แทน ในกรณีนี้คุณควรเรียนรู้วิธีที่ systemd ทำหน้าที่แทนการแทนที่ System V เก่า

หากคุณไปที่เส้นทางนี้คุณยังต้องทำการเปลี่ยนแปลงกับ netplan yaml เนื่องจากในเวอร์ชันเดสก์ท็อปการควบคุมจะมอบให้กับ NetworkManager


3
มีเหตุผลอย่างน้อยหนึ่งข้อ: Netplan ไม่รองรับ openvswitch
Kamilion

5
netplan ไม่รองรับชื่อแทน IP (สไตล์ eth0: 0) ฉันไม่อยากจะเชื่อเลยว่ามันจะหาทางเข้าไปยังเซิร์ฟเวอร์ Ubuntu ได้อย่างไร!
Hamid Fadishei

เพราะnetplanไดเรกทอรีของฉันว่างเปล่า!
dsgdfg

บริการ NetworkManager เริ่มต้นเร็วและไม่ต้องการเซสชันหรือผู้ใช้ที่ล็อกอิน
แทล

1

กุญแจสำคัญคือการรู้ว่าcloud.initเป็นโปรแกรมควบคุมจริง
ที่ถูกกล่าวบรรทัดในnetplanไฟล์ config "ไม่จำเป็น: จริง" เป็นสิ่งจำเป็น
รู้ว่าทำให้มันง่าย

ฉันเพียงแค่ลบออกและคัดลอกไปยัง01-network-manager-all.yaml /root/save/จากนั้นให้ตั้งค่าคอนฟิกที่รู้จักแทน50-cloud-init.yaml: เนื้อหาตาม:

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match: 
        name: enp*
        optional: true
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.2.5/24]
      gateway4: 192.168.2.1
      nameservers:
        addresses: [127.0.0.1, 8.8.4.4]          
      parameters:
        mode: 0          
        mii-monitor-interval: 100

จากนั้นเริ่มต้นใหม่และควรจะทำงานได้ดี

ที่รู้จักกันดีในการตั้งค่ามาจากการกำหนดค่าเครือข่ายผูกมัด 802.3ad ใช้ netplan บน Ubuntu 18.04


1
คำถามที่นี่คือวิธีการเปลี่ยนกลับไปเป็น ifupdown;) ในอนาคตคุณควรพยายามตอบคำถามโดยไม่ก่อให้เกิดมลพิษแม้ว่าจะไม่ใช่เรื่องง่ายที่จะยึดติดกับหัวข้อแรก)
Nuxwin

0

ตามคำตอบนี้การแก้ปัญหาคือการลบไฟล์. yaml ปฏิบัติการทั้งหมด: Ubuntu 17.10 ปิดการใช้งาน netplan

ฉันจะไม่ลบสิ่งใดโดยไม่สำรองข้อมูล เราสามารถทำได้อย่างง่ายดายเพียงแค่เลื่อนไฟล์ไปข้างๆ ก่อนอื่นให้ค้นหาไฟล์:

sudo updatedb
locate netplan | grep yaml

ในระบบ 18.04 ของฉันปรากฏว่าไฟล์การดำเนินงานเพียงอย่างเดียวคือ /etc/netplan/01-network-manager-all.yaml มาย้ายกันเถอะ:

mkdir ~/netplan
sudo mv /etc/netplan/01-network-manager-all.yaml  /home/user/netplan

... โดยที่ผู้ใช้คือชื่อผู้ใช้ของคุณ

ตอนนี้ตรวจสอบเพื่อให้แน่ใจว่าไฟล์หายไปอย่างแท้จริง:

ls /etc/netplan

ตอนนี้ทำการเพิ่มของคุณไปยัง / etc / network / interfaces ตามที่ต้องการ

Reboot

การปรับปรุงใด ๆ

เชิงอรรถ: กระบวนการที่แน่นอนในการทำเช่นนี้หายาก เราอาจต้องปรับแต่งเล็กน้อยในขณะที่เราไป


ฉันจะต้องลองและดูว่ามันจะไปอย่างไร คำถามอื่น ๆ จะเป็นวิธีการใช้การเปลี่ยนแปลงโดยไม่ต้องรีบูตเครื่อง ในอดีตคุณสามารถใช้ifup/ ifdown, /etc/init.d/networking restart, service networking restartและวิธีการ systemd เช่นsystemctl restart networking, systemctl restart Network-Manager.serviceฯลฯ แต่ไม่มีของเหล่านี้เป็นไปได้สำหรับผมหลังจากติดตั้ง Ubuntu 18.04
jdgregson

ผลลัพธ์คืออะไร: sudo ip link set eth0 downตามด้วย: sudo ifup -v eth0แน่นอนแทนที่ส่วนต่อประสานของคุณสำหรับ mythical eth0
chili555

ifupdownไม่ได้ติดตั้งเป็นค่าเริ่มต้นดังนั้นเมื่อคุณเรียกifupมันจะบอกวิธีการติดตั้ง อย่างไรก็ตามsudo ip link set eth0 downตามด้วยsudo ip link set eth0 upจะปิดและเปิดอินเทอร์เฟซใหม่
jdgregson

! น่ากลัว ดังนั้นคุณจะได้รับการแก้ไขและตั้งค่าทั้งหมดหรือไม่
chili555

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