วิธีการตั้งค่า IP แบบคงที่บน Ubuntu Server 18.04


29

ฉันเคยเห็นบางคนบอกว่าไฟล์เพื่อตั้งค่าสแตติก ip ยังคง /etc/network/interfaces

และฉันเคยเห็นคนอื่นพูดว่าใน 18.04 ตอนนี้มันเปิดอยู่/etc/netplan(ซึ่งคนดูไม่พอใจ)

ฉันได้ลองใส่สิ่งนี้:

version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.9/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

ในของฉัน/etc/netplan/50-cloud-init.yamlและทำsudo netplan applyแต่เพียงฆ่าเซิร์ฟเวอร์เชื่อมต่อกับอินเทอร์เน็ต


มันเป็นเดสก์ท็อปหรือเซิร์ฟเวอร์หรือไม่?
user68186

นี่เป็นการติดตั้งหรืออัปเกรด 18.04 ใหม่จากเวอร์ชันอื่นหรือไม่
WinEunuuchs2Unix

ขอโทษฉันควรจะพูดในข้อความนี้มันเป็นเซิร์ฟเวอร์ 18.04 ติดตั้งใหม่
รอบสุดท้าย 20

ทางออกที่ง่ายที่สุดสำหรับฉันคือการระบุที่อยู่ IPv4 แบบคงที่ในระหว่างการติดตั้ง (พร้อมกับซับเน็ตเกตเวย์ ฯลฯ ) เพียงกรอกฟิลด์ตัวช่วยสร้างบางอย่างโดยไม่ยุ่งกับไฟล์กำหนดค่า
Uwe Keim

คุณยังสามารถทำสิ่งนี้กับเราเตอร์ ขั้นตอนอธิบายตนเองในการกำหนดค่าเราเตอร์
เจ้าหน้าที่ EODCraft

คำตอบ:


13

นี่เป็นการตั้งค่าคำสั่ง IP แบบคงที่ในUbuntu-Server 18.04

$ sudo nano /etc/netplan/50-cloud-init.yaml

จากนั้นแทนที่คอนฟิกูเรชันของคุณตัวอย่างเช่นบรรทัดต่อไปนี้:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
     dhcp4: no
     addresses: [192.168.1.137/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]

ใช้การเปลี่ยนแปลง:

$ sudo netplan apply

ในกรณีที่คุณพบปัญหาบางอย่างรัน:

$ sudo netplan --debug apply

[ หมายเหตุ ]:

  • /24 เทียบเท่ากับ 255.255.255.0
  • ens160 เป็นชื่ออีเธอร์เน็ตของคุณคุณสามารถใช้มันได้ $ ifconfig
  • อูบุนตู 16.04 และ 14.04เครือข่ายอินเตอร์เฟซการตั้งค่ามีวิธีการที่แตกต่างกัน
  • ไฟล์อยู่ในรูปแบบ YAML : ใช้ช่องว่างไม่มีแท็บ

ไม่สามารถ ping หลังจากกำหนดที่อยู่ IP แบบคงที่
user2763554

ตกลง .... ฉันสามารถ ping ได้หลังจากทำservice networking restart
user2763554

1
ฉันจะไม่ทำเช่นนั้นเนื่องจากไฟล์นั้นสร้างโดย CloudInit
Ludovic Kuty

13

คำตอบทั้งหมดบอกให้คุณแก้ไขโดยตรง/etc/netplan/50-cloud-init.yamlผิดเนื่องจาก CloudInit ถูกใช้และจะสร้างไฟล์นั้น ใน Ubuntu 18.04.2 มีการเขียนไว้ชัดเจนในไฟล์:

$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eno1:
            dhcp4: true
    version: 2

ดังนั้นคุณไม่ควรแก้ไขไฟล์นั้น แต่ไฟล์ภายใต้/etc/cloud/cloud.cfg.d/หากคุณยังต้องการใช้ CloudInit

อีกวิธีหนึ่งคือปิดการใช้งาน CloudInit ก่อนโดยการสร้างไฟล์เปล่า/etc/cloud/cloud-init.disabled(ดูที่https://cloudinit.readthedocs.io/en/latest/topics/boot.html ) จากนั้นคำตอบอื่น ๆ ก็ใช้ได้ ภายใต้ Ubuntu 18.04.2 ผมใช้จะปล่อยให้มันคำนึงไฟล์dpkg-reconfigure cloud-init /etc/cloud/cloud-init.disabledฉันคิดว่านี่เป็นเรื่องแปลกเล็กน้อย

ฉันแนะนำให้คุณเปลี่ยนชื่อไฟล์ (ไม่ใช่ชื่อที่ถูกต้องเพราะ50-cloud-init.yamlให้เราคิดว่ามันยังใช้ CloudInit)

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

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      addresses: [192.168.1.246/24]
      gateway4: 192.168.1.1
      nameservers:
         addresses: [192.168.1.1]

2
มันใช้งานได้ดี นี่ควรเป็นคำตอบที่ดีที่สุด ไม่ควรแก้ไข 50-cloud-init.yaml ตามที่ระบุไว้
ระลึก

2
หากยังคงใช้ CloudInit คุณต้องทำsudo cloud-init clean -rเพื่อให้การเปลี่ยนแปลงเป็นไปตามคำตอบของ veperr (อย่างน้อยสำหรับฉันใน Ubuntu Server 18.04.3)
Stuart Rossiter

1
... บวกกับrendererบรรทัดที่ไม่ถูกต้องดูเหมือนว่า (และหายไปในเวอร์ชันฐานของไฟล์ที่คุณแก้ไข)
Stuart Rossiter

6

อูบุนตู 18.04 การใช้งานในขณะนี้ Netplan การกำหนดค่าการเชื่อมต่อเครือข่ายเพื่อให้การกำหนดค่าที่จะต้องทำในแฟ้มเอกสารให้คำแนะนำที่จะไม่ยุ่งอีกต่อไปกับแฟ้มเก่า/etc/netplan/50-cloud-init.yaml /etc/network/interfacesฉันใช้การกำหนดค่านี้กับเครื่องเสมือนของ Ubuntu Server ของฉันและใช้งานได้จนถึงเพียงตรวจสอบให้แน่ใจว่าข้อมูลถูกต้อง การoptional: trueตั้งค่าที่คาดคะเนจะเพิ่มความเร็วในการบูทโดยไม่ตรวจสอบว่าอินเตอร์เฟสนั้นเชื่อมต่อหรือไม่นี่เป็นค่าเริ่มต้นและไม่จำเป็นต้องประกาศค่าที่ไม่ได้ใช้ตัวอย่างเช่น DHCP หากไม่มีอยู่จะถูกปิดการใช้งานเช่นกัน renderer เริ่มต้นในเซิร์ฟเวอร์ Ubuntu networkdจึงไม่จำเป็นต้องประกาศ รับข้อมูลจากโพสต์ของคุณควรเป็นดังนี้:

network:
    ethernets:
        eht0:
            addresses:
            - 192.168.1.9/24
            gateway4: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
            optional: true
    version: 2

เมื่อคุณบันทึกไฟล์แล้วการรันsudo netplan --debug applyการdebugตั้งค่าสถานะจะให้ข้อมูลมากกว่านี้และสามารถช่วยตรวจจับข้อผิดพลาดได้ ตรวจสอบสายอีเธอร์เน็ตหากอยู่ในสถานะเสมือนให้ตรวจสอบการกำหนดค่า VM หากใช้ WLAN ฉันได้อ่านแล้วว่ามันค่อนข้างยุ่งยากในการตั้งค่า แต่ฉันยังไม่ได้ตั้งค่าเครื่องที่เชื่อมต่อกับ WiFi ด้วยเซิร์ฟเวอร์เวอร์ชันนี้

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับ Netplan มีเว็บไซต์ก็มีตัวอย่างการกำหนดค่าพื้นฐานบางอย่าง

https://netplan.io/


5

ไฟล์กำหนดค่าอยู่ในรูปแบบ YAML : อย่าใช้TABเมื่อกำหนดค่าไฟล์ ใช้งานได้กับSPACEเท่านั้น

นี่คือปัญหาของฉัน


4

ฉันพบวิธีอื่นโดยใช้ cloud-init

  1. แก้ไขไฟล์/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg- เนื้อหาดูเหมือนจะเหมือนกับใน / etc / netplan
  2. ทำความสะอาดรีบูตและเริ่มต้นใหม่cloud-initด้วยคำสั่งนี้:

    sudo cloud-init clean -r
    
  3. แค่นั้นแหละ! ระบบของคุณจะรีบูตcloud-initจะเริ่มต้นใหม่และรับการเปลี่ยนแปลง/etc/cloud/cloud.cfg.d/50-curtin-networking.cfgและนำไปใช้กับพวกเขา/etc/netplan/50-cloud-init.yamlและทุกอย่างจะดี ifconfigตรวจสอบกับ


0

นี่คือการตั้งค่าสิ่งที่ทำให้มันทำงาน

$sudo nano /etc/netplan/50-cloud-init.yaml

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
  version: 2  

$sudo netplan apply

รีสตาร์ทเซิร์ฟเวอร์

เปลี่ยน eth0 เป็นอะแดปเตอร์ของคุณค้นหาอะแดปเตอร์ของคุณโดยใช้ ifconfig


0

หากต้องการค้นหาอินเตอร์เฟสอีเธอร์เน็ตที่ใช้ได้ให้ใช้ ip link show

จากนั้นแก้ไขไฟล์ 50-cloud-init.yaml โดยใช้ $sudo nano /etc/netplan/50-cloud-init.yaml

เพิ่มการกำหนดค่าสำหรับส่วนต่อประสานที่มีอยู่เช่น eth0: และ eth1:

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
     eth0:
     addresses:
     - 192.168.1.9/24
     dhcp: false
  version: 2  

จากนั้นใช้คำสั่ง$sudo netplan applyเพื่อใช้การเปลี่ยนแปลง


0

วิธีการตั้งค่า IP แบบคงที่บน Ubuntu Server 18.04

จากนั้นแก้ไขไฟล์ 50-cloud-init.yaml โดยใช้$sudo vim /etc/netplan/50-cloud-init.yaml


network:
  ethernets:
    eno1:
        addresses:
        - 10.0.1.10/24
        dhcp4: false
        gateway4: 10.0.1.1
        nameservers:
            addresses:
            - 10.0.1.2
            search: []
version: 2

ใช้การเปลี่ยนแปลง:

$ sudo netplan apply


ฉันจะไม่ทำเช่นนั้นเนื่องจากไฟล์นั้นสร้างโดย CloudInit
Ludovic Kuty

เหตุใดจึงมีคำแนะนำในการตั้งค่า IP แบบคงที่ใน 18.04 บอกให้ฉันแก้ไขไฟล์ yaml ที่บอกว่ามันเป็นไฟล์ที่สร้างขึ้นแบบไดนามิกที่จะไม่คงอยู่? อีกเรื่องตลกที่โหดร้ายจากนักพัฒนา Ubuntu ที่คิดว่ามันโอเคที่จะทำลายสิ่งต่าง ๆ ตามค่าเริ่มต้น ...
Bigtexun

0

การกำหนดค่าเครือข่ายใน 18.04 ได้รับการจัดการผ่าน netplan และกำหนดค่าด้วย cloud-init เปลี่ยนการตั้งค่าเครือข่ายแก้ไขของคุณแฟ้มใน50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/หากไฟล์นี้ไม่มีอยู่ให้สร้างมันขึ้นมา

ค้นหาชื่อส่วนต่อประสานของคุณ

ip address show

แก้ไข / สร้างไฟล์กำหนดค่าเครือข่าย cloud-init

sudo nano /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg

ในการตั้งค่าที่อยู่ IP แบบคงที่ให้ใช้คีย์ที่อยู่ซึ่งรับรายการ (IPv4 หรือ IPv6) ที่อยู่พร้อมกับความยาวของคำนำหน้าซับเน็ต (เช่น / 24) สามารถให้ข้อมูล Gateway และ DNS ได้เช่นกัน:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.9/24
      gateway4: 192.168.1.1
      nameservers:
          addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

คุณสามารถค้นหาตัวเลือกการกำหนดค่าเพิ่มเติมได้ที่https://netplan.io/examples

โหลดการกำหนดค่าเริ่มต้นระบบคลาวด์อีกครั้ง นี่จะรีบู๊ตเซิร์ฟเวอร์ของคุณ

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