ฉันจะตั้งค่า IP แบบคงที่ใน Ubuntu ได้อย่างไร


56

ฉันใหม่กับ Linux มีประสบการณ์กับเซิร์ฟเวอร์ Windows / เดสก์ท็อปและมีปัญหาในการตั้งค่า IP แบบคงที่ ฉันใช้วิธีที่ใช้กับ Ubuntu รุ่นก่อนหน้าซึ่งดูเหมือนจะไม่ทำงานกับ 16.04

ฉันใช้คำสั่งsudo nano /etc/network/interfaceแล้วเพิ่มสิ่งต่อไปนี้

iface enp0s25 inet static
address 10.10.8.2
netmask 255.255.0.0
gateway 10.10.1.1
dns-nameservers 8.8.8.8 8.8.4.4

ฉันรีบูทระบบแล้วอีเธอร์เน็ตก็ค่อนข้างจะตาย ping ใช้งานไม่ได้เลย ฉันพยายามแก้ไข/etc/NetworkManager/NetworkManager.confและทำการเปลี่ยนแปลงต่อไปนี้

#dns=dnsmasq (comment out the dnsmasq)
[ifupdown]
managed=true (changed from false)

ด้วยสิ่งนี้ฉันสามารถทำให้อีเธอร์เน็ตทำงานเป็นระยะได้ แต่ในที่สุดมันก็ล้มเหลว

ฉันได้ลองกำหนดค่านี้บนเครื่องอื่นสองเครื่องรวมถึงเครื่องเสมือนจริงและทั้งหมดก็มีผลลัพธ์เหมือนกัน ฉันสามารถยืนยันการตั้งค่าเหล่านี้ทำงานได้ดีเมื่อฉันติดตั้ง Windows บนเครื่องเหล่านี้ เช่นกันเมื่อฉันให้ DHCP กำหนดค่าอัตโนมัติทุกอย่างทำงานได้ดีไม่มีปัญหา

ฉันคิดว่าฉันขาดอะไรบางอย่างที่นี่การตั้งค่าสแตติก IP ไม่ควรยากเลย


สิ่งเดียวที่ผมแจ้งให้ทราบและมันอาจจะเป็นเพียงแค่พิมพ์ผิดนี่ แต่ฉันจะเปลี่ยนDns-nameserversไปdns-nameserversอาจจะไม่ได้ทำอะไรเพื่อแก้ปัญหานี้ แต่อาจหยุดปัญหาอื่น ๆ ที่เกิดขึ้น
จอห์น Orion

1
Dns-nameservers เป็นไวยากรณ์ที่ยอมรับได้ดังนั้นจึงไม่ควรมีปัญหา เมื่อทำงานกับ DHCP คุณเรียกใช้ifconfigเพื่อตรวจสอบชื่ออินเทอร์เฟซหรือคุณคิดว่าเป็น enp0s25 หรือไม่ คุณมีauto enp0s25ไฟล์ด้านบนของไฟล์กำหนดค่าด้วยหรือไม่ หากคุณทำไม่ได้อาจเป็นไปได้ว่าอินเทอร์เฟซนั้นไม่ได้เกิดขึ้นตอนบูท
Andrew

โปรดแก้ไขคำถามของคุณและโพสต์เนื้อหาที่แน่นอนของ/etc/network/interfacesไฟล์ของคุณ ในขณะที่แก้ไขข้อความของคุณให้ไฮไลต์ข้อความของไฟล์นี้จากนั้นคลิกที่{}ลิงค์รหัสที่ด้านบนของเครื่องมือแก้ไขข้อความเพื่อให้รูปแบบข้อความถูกต้องทำให้เราอ่านเนื้อหาได้ง่ายขึ้น ยังรันคำสั่งนี้ip addressและทำตามขั้นตอนเดียวกันกับ{}(รูปแบบรหัส) ที่ส่งออก
LD James

คำตอบ:


83

ฉันมีปัญหาเดียวกันและนี่คือทางออกของฉัน:

sudo nano /etc/network/interfaces

และวาง (แก้ไขสำหรับเครือข่ายของคุณ) สิ่งนี้ภายใต้# The primary network interface:

auto enp0s25
iface enp0s25 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.4.4 8.8.8.8

คุณสามารถรับชื่ออินเตอร์เฟสที่ถูกต้องโดยใช้คำสั่ง Terminal ifconfig -aบน ubuntu 16.04 หรือip address18.04+

ปิดเครื่องเสมือนของคุณแล้ว !!! ไปที่การตั้งค่าเครือข่ายและคลิกที่ปุ่มรีเฟรช MAC address สองสามครั้ง :)

ป้อนคำอธิบายรูปภาพที่นี่

และเริ่ม VM ของคุณและคุณควรได้รับอินเทอร์เน็ต!

อัพเดท 20.02.2019

สำหรับ Ubuntu 18.04+ คุณต้องแก้ไขไฟล์นี้

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.55/24]
            gateway4: 192.168.0.1
            dhcp4: no
            nameservers:
              addresses: [1.1.1.1,8.8.8.8]
            optional: true
    version: 2

2
ขอบคุณมากฉันขอบคุณมัน ดูเหมือนว่าจะทำงานตอนนี้โดยไม่มีปัญหา ตอนนี้มันแข็งแกร่งมาก!
TeeStar

นอกเหนือจากการdns-nameserversแก้ไขฉันต้องใช้การแก้ไขนี้: askubuntu.com/questions/574569/… ISP ของฉันคือ monkeybrains.net
BSalita

56

การตั้งค่าที่อยู่ IP แบบคงที่ดังกล่าวข้างต้นในคำตอบที่ยอมรับได้ที่นี่ทำงานได้ แต่จะต้องล้างการตั้งค่า IP addr เก่าแล้วเริ่มระบบเครือข่ายบริการ:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

จากนั้นตรวจสอบว่าถูกต้อง:

ip add

2
การลบทิ้งจำเป็นต้องหลีกเลี่ยงที่อยู่เดิมที่มีอยู่บนอินเทอร์เฟซ (ตามip addr) รีสตาร์ท systemctl ก็ทำงานเช่นกันแม้ว่าifdownและifupบนอินเทอร์เฟซจะทำงานได้ดีกว่าเดิม
RichVel

2
ขอบคุณ @Grant เพิ่ม flush ทำให้งานนี้
Paweł Madej

3
ใน Ubuntu 16.04 จำเป็นต้องมี flush ใหม่กว่า!
Diego Duarte

5

sudo vim /etc/network/interfaces

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

sudo ifdown eth0 && sudo ifup eth0


9
สวัสดี @ lanni654321 บางทีคุณควรแก้ไขคำตอบของคุณและเพิ่มคำสองสามคำอธิบายสิ่งที่คุณกำลังทำอยู่และทำไม? ฉันคิดว่านั่นจะทำให้คำตอบของคุณมีประโยชน์มากขึ้นคุณคิดอย่างไร?
Tshilidzi Mudau

5
# interfaces(5) file used by ifup(8) and ifdown(8)
# auto lo
# iface lo inet loopback
auto enp2s0 
iface enp2s0 inet static
    address 172.16.9.124
    netmask 255.255.240.0
    gateway 172.16.0.9
dns-nameservers 8.8.8.8

1
ifcace ควรเป็น iface ในบรรทัดที่ 5
twoleggedhorse

@twoleggedhorse: แก้ไขการพิมพ์ผิดสำหรับคำตอบ แต่ฉันต้องเพิ่มบางอย่าง#ในบรรทัดแรกเพราะคุณไม่สามารถแก้ไขได้หากไม่มีตัวอักษรเปลี่ยนแปลงอย่างน้อย 6 ตัวที่ไม่ใช่ช่องว่าง
Andrei Rînea

3

ฉันมีปัญหาเดียวกันและวิธีแก้ปัญหา "ก็คือ" แค่ ... สำหรับฉันอย่างน้อยที่สุด

auto ens160
iface ens160 inet static
address 172.31.0.164/22
netmask 255.255.252.0
gateway 172.31.0.2
network 172.31.0.0
broadcast 172.31.3.255
dns-nameservers 172.31.0.21 172.31.0.18

#Add internal route
up route add -net 172.16.168.0/21 gw 172.31.0.20 dev ens160

และสร้างไฟล์เปล่าโดยใช้ชื่อของเน็ตเวิร์กอินเตอร์เฟสใน:

~$ touch /etc/network/interfaces.d/ens160

มันได้ผล...


2

ฉันมีปัญหาเดียวกันและนี่คือวิธีการแก้ปัญหาของฉัน: /etc/network/interfaceเอาบรรทัดว่างทั้งหมดในตอนท้ายของแฟ้ม


0

ฉันเคยตั้ง IP แบบคงที่บนเครื่อง Ubuntu ของฉันแล้วฉันสังเกตเห็นว่าฉันสามารถกำหนดที่อยู่ IP โดยใช้เราเตอร์ของฉัน นี่อาจเป็นวิธีที่ง่ายที่สุด เพียงเข้าสู่เราเตอร์ของคุณค้นหาอุปกรณ์ที่แนบมาและกำหนดที่อยู่ IP ที่นั่น


0

หากเซิร์ฟเวอร์ของคุณแสดง IP เดิมนั้นและ IP ที่กำหนดใหม่เพียงรีสตาร์ทเซิร์ฟเวอร์ของคุณ มันจะล้าง IP เก่าโดยอัตโนมัติและยืนยันใหม่
และถ้าคุณไม่ต้องการรีสตาร์ทเซิร์ฟเวอร์ให้ใช้คำสั่งนี้:


sudo ip addr flush <your-interface-here>


0

เรียกใช้คำสั่งง่าย ๆ นี้เพื่อดูว่าอินเทอร์เฟซเครือข่ายของคุณถูกตั้งค่าให้ปรากฏขึ้นเมื่อเครื่องบูท / รีสตาร์ท

grep "auto" /etc/network/interfaces

หากไม่มีการพิมพ์บรรทัดใด ๆ ไปยังเอาต์พุตมาตรฐานให้เปิด/etc/network/interfacesด้วยโปรแกรมแก้ไขข้อความ (vi, nano, sed) และหวังว่าคุณจะเห็นสิ่งที่คล้ายกับภาพด้านล่าง

ไฟล์ / etc / network / interfaces เริ่มต้น

เห็นได้ชัดว่าถ้าgrepไม่ส่งคืนบรรทัดใด ๆ ไปที่หน้าต่างเทอร์มินัลรูปแบบของ / etc / network / interfaces ของคุณจะไม่สามารถคล้ายกันได้เลย :-) อย่างไรก็ตามทำตามรูปแบบของบรรทัดอัตโนมัติ

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

====================

ตอนนี้ในเครื่องของคุณ

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

ไม่ทราบชื่อส่วนต่อประสานที่มีอยู่? เรียกใช้คำสั่งนี้

ifconfig -a

คำสั่งต่อไปนี้จะส่งกลับเฉพาะชื่อของเน็ตเวิร์กอินเตอร์เฟส

ifconfig -a | grep encap | awk {'print $1'}

ป้อนคำอธิบายรูปภาพที่นี่

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