ค้นหาเว็บไซต์

วิธีกำหนดค่าเครือข่าย IP ด้วย 'nmcli' ใน Linux


ในฐานะผู้ดูแลระบบ Linux คุณมีเครื่องมือต่างๆ เพื่อใช้กำหนดค่าการเชื่อมต่อเครือข่ายของคุณ เช่น nmtui, NetworkManager ของคุณด้วยอินเทอร์เฟซผู้ใช้แบบกราฟิก GNOME และแน่นอนว่า nmcli (เครื่องมือบรรทัดคำสั่งตัวจัดการเครือข่าย)

ฉันสังเกตเห็นผู้ดูแลระบบหลายคนใช้ nmtui เพื่อความเรียบง่าย อย่างไรก็ตาม การใช้ nmcli จะช่วยคุณประหยัดเวลา เพิ่มความมั่นใจ อนุญาตให้รวมเข้ากับสคริปต์ และเป็นเครื่องมือหลักสำหรับการแก้ไขปัญหาเครือข่ายเซิร์ฟเวอร์ Linux และคืนค่าฟังก์ชันการทำงานได้อย่างรวดเร็ว

เมื่อสังเกตเห็นความคิดเห็นมากมายที่ขอความช่วยเหลือเกี่ยวกับ nmcli ฉันจึงตัดสินใจเขียนบทความนี้ แน่นอน คุณควรอ่าน man page อย่างละเอียดเสมอ (เป็นแหล่งข้อมูลอันดับ 1 สำหรับคุณ) เป้าหมายของฉันคือการประหยัดเวลาและให้คำแนะนำที่เป็นประโยชน์แก่คุณ

ไวยากรณ์คำสั่ง nmcli

ไวยากรณ์ของ nmcli คือ:

nmcli [OPTIONS] OBJECT {COMMAND | help}

โดยที่ OBJECT เป็นหนึ่งในระบบเครือข่าย วิทยุ การเชื่อมต่อ อุปกรณ์ และเอเจนต์

ตรวจสอบสถานะอุปกรณ์เครือข่ายใน Linux

จุดเริ่มต้นที่ดีคือการตรวจสอบอุปกรณ์ของเรา:

nmcli dev status

DEVICE      TYPE      STATE         CONNECTION 
docker0     bridge    connected     docker0    
virbr0      bridge    connected     virbr0     
enp0s3      ethernet  connected     enp0s3     
virbr0-nic  ethernet  disconnected  --         
lo          loopback  unmanaged     --         

ดังที่เราเห็นในคอลัมน์แรก มีรายการอุปกรณ์เครือข่ายของเรา เรามีการ์ดเครือข่ายหนึ่งใบชื่อ enp0s3 บนเครื่องของคุณ คุณอาจเห็นชื่อที่แตกต่างกัน

การตั้งชื่อขึ้นอยู่กับประเภทของการ์ดเครือข่าย (ไม่ว่าจะเป็นออนบอร์ด การ์ด PCI ฯลฯ) ในคอลัมน์สุดท้าย เราจะเห็นไฟล์การกำหนดค่าซึ่งอุปกรณ์ของเราใช้เพื่อเชื่อมต่อกับเครือข่าย

เป็นเรื่องง่ายที่จะเข้าใจว่าอุปกรณ์ของเราเองไม่สามารถทำอะไรได้เลย พวกเขาต้องการให้เราสร้างไฟล์กำหนดค่าเพื่อแนะนำวิธีการเชื่อมต่อเครือข่าย ไฟล์เหล่านี้เรียกอีกอย่างว่า 'โปรไฟล์การเชื่อมต่อ' และเราพบไฟล์เหล่านี้ในไดเร็กทอรี /etc/sysconfig/network-scripts

cd /etc/sysconfig/network-scripts/
ls
ผลลัพธ์ตัวอย่าง
ifcfg-enp0s3  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo      ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown        ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep   ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth    ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib     ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp   ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6   ifdown-tunnel    ifup-isdn     ifup-TeamPort

ดังที่คุณเห็นที่นี่ ไฟล์ที่มีชื่อขึ้นต้นด้วย 'ifcfg-' (การกำหนดค่าอินเทอร์เฟซ) คือโปรไฟล์การเชื่อมต่อ เมื่อเราสร้างการเชื่อมต่อใหม่หรือแก้ไขการเชื่อมต่อที่มีอยู่ด้วย nmcli หรือ nmtui ผลลัพธ์จะถูกบันทึกที่นี่เป็นโปรไฟล์การเชื่อมต่อ

Ι จะแสดงให้คุณเห็นสองรายการจากเครื่องของฉัน อันหนึ่งมีการกำหนดค่า dhcp และอีกอันมี IP แบบคงที่

cat ifcfg-static1
cat ifcfg-Myoffice1

เราตระหนักดีว่าคุณสมบัติบางอย่างมีค่าที่แตกต่างกัน และคุณสมบัติบางอย่างไม่มีอยู่จริงหากไม่จำเป็น

ลองมาดูสิ่งที่สำคัญที่สุดอย่างรวดเร็ว

  • TYPE – เรามีประเภท Ethernet ที่นี่ เราอาจมี WiFi ทีม พันธบัตร และอื่นๆ
  • DEVICE – ชื่ออุปกรณ์เครือข่ายที่เชื่อมโยงกับโปรไฟล์นี้
  • BOOTPROTO – หากมีค่า “dhcp ” แสดงว่าโปรไฟล์การเชื่อมต่อของเราได้รับ IP แบบไดนามิกจากเซิร์ฟเวอร์ DHCP หากมีค่า “none ” แสดงว่าไม่ได้ใช้ IP แบบไดนามิก และเราน่าจะกำหนด IP แบบคงที่
  • IPADDR – คือ IP แบบคงที่ที่เรากำหนดให้กับโปรไฟล์ของเรา
  • PREFIX – ซับเน็ตมาสก์ ค่า 24 หมายถึง 255.255.255.0 คุณสามารถเข้าใจซับเน็ตมาสก์ได้ดีขึ้นโดยการเขียนรูปแบบไบนารี่ลงไป ตัวอย่างเช่น ค่า 16, 24 และ 26 หมายความว่าค่า 16 แรก, 24< หรือ 26 บิตตามลำดับ ถูกตั้งค่าเป็น 1 และส่วนที่เหลือเป็น 0 ซึ่งกำหนดที่อยู่เครือข่ายและช่วงของที่อยู่ IP ที่สามารถกำหนดได้
  • เกตเวย์ – IP เกตเวย์
  • DNS1, DNS2 – เซิร์ฟเวอร์ DNS สองเครื่องที่เราต้องการใช้
  • ONBOOT – หากมีค่า “ใช่ ” หมายความว่าเมื่อบูตคอมพิวเตอร์ของเราจะอ่านโปรไฟล์นี้และพยายามกำหนดโปรไฟล์นี้ให้กับอุปกรณ์

ตรวจสอบการเชื่อมต่อเครือข่ายใน Linux

ตอนนี้ มาดูการเชื่อมต่อของเรากันต่อ:

nmcli con show

คอลัมน์สุดท้ายของอุปกรณ์ช่วยให้เราเข้าใจว่าการเชื่อมต่อใดคือ 'ขึ้น' และการเชื่อมต่อใดกำลังทำงานอยู่ และการเชื่อมต่อใดไม่ทำงาน ในภาพด้านบน คุณจะเห็นการเชื่อมต่อที่ใช้งานอยู่สองรายการ: Myoffice1 และ enp0s8

คำแนะนำ: หากคุณต้องการดูเฉพาะการเชื่อมต่อที่ใช้งานอยู่ ให้พิมพ์:

nmcli con show -a

คำแนะนำ: คุณสามารถใช้การกดปุ่ม Tab เติมข้อความอัตโนมัติได้เมื่อคุณใช้ nmcli แต่ควรใช้ดีกว่า รูปแบบคำสั่งขั้นต่ำ

ดังนั้นคำสั่งต่อไปนี้จึงเท่ากัน:

nmcli connection show
nmcli con show
nmcli c s

ตรวจสอบที่อยู่ IP ใน Linux

หากฉันตรวจสอบที่อยู่ IP ของอุปกรณ์ของฉัน:

ip a

ฉันเห็นว่าอุปกรณ์ของฉัน enp0s3 รับ IP 192.168.1.6 จากเซิร์ฟเวอร์ dhcp เนื่องจากโปรไฟล์การเชื่อมต่อ Myoffice1 ที่มีอยู่มีการกำหนดค่า dhcp

หากฉันนำ “up ” โปรไฟล์การเชื่อมต่อของฉันชื่อ static1 อุปกรณ์ของฉันจะใช้ IP แบบคงที่ 192.168.1.40 ตามที่กำหนดไว้ใน โปรไฟล์การเชื่อมต่อ

nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show

มาดูที่อยู่ IP กันอีกครั้ง:

ip a

เราสามารถสร้างโปรไฟล์การเชื่อมต่อครั้งแรกได้ คุณสมบัติขั้นต่ำที่เราต้องกำหนดคือ ประเภท, ifname และ con-name:

  • type – สำหรับประเภทการเชื่อมต่อ
  • ifname – สำหรับชื่ออุปกรณ์ที่กำหนดให้กับการเชื่อมต่อของเรา
  • con-name – สำหรับชื่อการเชื่อมต่อ

การสร้างการเชื่อมต่ออีเทอร์เน็ตใหม่ใน Linux

มาสร้างการเชื่อมต่ออีเทอร์เน็ตใหม่โดยใช้ชื่อ Myhome1 ซึ่งกำหนดให้กับอุปกรณ์ enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

ตรวจสอบการกำหนดค่า:

cat ifcfg-Myhome1

อย่างที่คุณเห็นว่ามี BOOTPROTO=dhcp เนื่องจากเราไม่ได้ให้ที่อยู่ IP แบบคงที่

คำแนะนำ: เราสามารถแก้ไขการเชื่อมต่อใดๆ ได้ด้วยคำสั่ง “nmcli con mod“ อย่างไรก็ตาม หากคุณแก้ไขการเชื่อมต่อ dhcp และเปลี่ยนเป็นแบบคงที่ อย่าลืมเปลี่ยน “ipv4.method ” จาก “auto ” เป็น “manual ” . มิฉะนั้นคุณจะพบที่อยู่ IP สองแห่ง: หนึ่งรายการจากเซิร์ฟเวอร์ dhcp และที่อยู่แบบคงที่

มาสร้างโปรไฟล์การเชื่อมต่ออีเทอร์เน็ตใหม่ด้วยชื่อ static2 ซึ่งจะถูกกำหนดให้กับอุปกรณ์ enp0s3 ที่มี IP แบบคงที่ 192.168.1.50 ซึ่งเป็นซับเน็ต มาสก์ 255.255.255.0=24, และเกตเวย์ 192.168.1.1

nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

ตรวจสอบการกำหนดค่า:

cat ifcfg-static2

แก้ไขเซิร์ฟเวอร์ DNS ใน Linux

มาแก้ไขโปรไฟล์การเชื่อมต่อล่าสุดและเพิ่มเซิร์ฟเวอร์ DNS สองเครื่อง

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

คำแนะนำ: มีบางสิ่งที่นี่ที่คุณต้องใส่ใจ: คุณสมบัติของที่อยู่ IP และเกตเวย์มีชื่อที่แตกต่างกันเมื่อคุณเพิ่มและเมื่อคุณแก้ไขการเชื่อมต่อ เมื่อคุณเพิ่มการเชื่อมต่อ คุณจะใช้ “ip4 ” และ “gw4 ” ในขณะที่เมื่อคุณแก้ไขการเชื่อมต่อ คุณจะใช้ “ipv4 ” และ “ gwv4 ”.

สร้างการเชื่อมต่ออีเทอร์เน็ตใน Linux

ตอนนี้เรามาแสดงโปรไฟล์การเชื่อมต่อนี้:

nmcli con down static1 ; nmcli con up static2

อย่างที่คุณเห็น ขณะนี้อุปกรณ์ enp0s3 มีที่อยู่ IP เป็น 192.168.1.50

ip a

คำแนะนำ: มีคุณสมบัติมากมายที่คุณสามารถแก้ไขได้ หากคุณจำพวกเขาไม่ได้จริงๆ คุณสามารถช่วยตัวเองได้โดยพิมพ์ “nmcli con show ” และหลังจากนั้นชื่อการเชื่อมต่อ:

nmcli con show static2

คุณสามารถแก้ไขคุณสมบัติทั้งหมดนี้ที่เขียนด้วยตัวพิมพ์เล็กได้

ตัวอย่าง: เมื่อคุณดึงโปรไฟล์การเชื่อมต่อลงมา NetworkManager จะค้นหาโปรไฟล์การเชื่อมต่ออื่นและเรียกขึ้นมาโดยอัตโนมัติ (ผมทิ้งไว้เป็นแบบฝึกหัดในการตรวจสอบนะครับ) หากคุณไม่ต้องการให้โปรไฟล์การเชื่อมต่อของคุณเชื่อมต่ออัตโนมัติ:

nmcli con mod static2 connection.autoconnect no

แบบฝึกหัดสุดท้ายมีประโยชน์มาก: คุณสร้างโปรไฟล์การเชื่อมต่อ แต่คุณต้องการให้ผู้ใช้บางรายใช้ เป็นการดีที่จะจำแนกผู้ใช้ของคุณ!

ตั้งค่าสิทธิ์การเชื่อมต่ออีเธอร์เน็ตให้กับผู้ใช้ใน Linux

เราอนุญาตให้เฉพาะผู้ใช้ stella ใช้โปรไฟล์นี้:

nmcli con mod static2 connection.permissions stella

คำแนะนำ: หากคุณต้องการให้สิทธิ์แก่ผู้ใช้มากกว่าหนึ่งราย คุณต้องพิมพ์ user:user1,user2 โดยไม่มีช่องว่างระหว่างพวกเขา:

nmcli con mod static2 connection.permissions user:stella,john

หากคุณเข้าสู่ระบบในฐานะผู้ใช้รายอื่น คุณจะไม่สามารถนำโปรไฟล์การเชื่อมต่อนี้ "ขึ้น" ได้:

nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts

ข้อความแสดงข้อผิดพลาดแจ้งว่าไม่มีการเชื่อมต่อ 'static2' แม้ว่าเราจะเห็นว่ามีการเชื่อมต่ออยู่ก็ตาม นั่นเป็นเพราะผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการเชื่อมต่อนี้

บทสรุป: อย่าลังเลที่จะใช้ nmcli ง่ายและมีประโยชน์