ข้ามไปที่เนื้อหาหลัก

Predictable Network Interface Names #3

Predictable Network Interface Names


ภาคสุดท้ายปิดตำนานยาจกซูกับไม้ตีสุนัข ไม่ใช่ละ อันนี้มันเกี่ยวกับระบบปฏิบัติการ จิงต้องบอกว่ามันไม่เกี่ยวกับหัวข้อเลยที่กล่าวถึง แต่ขอมัดรวมเป็นเรื่องเดียวกันหน่อยครับ เพราะมันมีบางส่วนที่ทำต่อเนื่องกัน โดยในบทความนี้ จะกล่าวถึงการตั้งชื่อ อินเตอร์เฟสแลนการ์ด โดยแมฟกับ MAC Address

จากตอนที่แล้วจะเห็นว่าอินเตอร์เฟสมันไม่เรียงเลย ถึงแม้เราจะเปลี่ยนชื่อเป็นแบบเก่า ก็จะยังเป็นแบบตามรูปด้านล่างที่ยังมีปัญหาอยู่ขึ้นอยู่ ทำให้ตอนใช้งานก็จะยังลำบากเหมือนเดิม


ปัญหาที่ตามมาคงไม่ต้องบอกกันนะ คนเขียนโปรแกรมถึงกลับร้องไห้ ผมจะเขียนยังไงอะพี่ โดยในลีนุกส์จะใช้การเรียงลำดับจากเลข MAC Address พอ chip คนละตัว และเลขน้อยกว่า ทำให้มันไปพอร์ตที่ 5 เป็น eth0 ตามด้านบน 

วิธีแก้ไขจะมีอยู่ 2 แบบ ขึ้นกับว่าโอเอสที่ใช้

  • แบบเก่า UDEV (Dynamic Device Management)
    ขั้นตอน
     - export INTERFACE=eth0
     - export MATCHADDR=xx:xx:xx:xx:xx:xx
     - /lib/udev/write_net_rules

    คำสั่ง /lib/udev/write_net_rules จะทำการไปสร้างไฟล์ /etc/udev/rules.d/70-persistent-net.rules  ซึ่งไฟล์นี้เราสามารถเข้าไปสร้างเองได้ ถ้าเรารู้รูปแบบ

  ตัวอย่างไฟล์

  ตัวอย่าง script ง่ายๆ

    หมายเหตุ
     * ทำไปเรื่อยๆ จนครบพอร์ตทั้งหมด
     * xx:xx:.. คือ เลข MAC Address ที่กำหนด

  • แบบใหม่สำหรับระบบปฏิบัติการที่ใช้ systemd (Network Device Configuration)
    ขั้นตอน
     - nano /etc/systemd/network/10-eth0.link
     - และใส่ข้อความ
[Match]
MACAddress=00:90:0b:xx:xx:xx
[Link]
Name=eth0
     - บันทึกไฟล์ และ update-initramfs -u
     - และทำการรีบูตเครื่อง

ปล. จริงมีอีกแบบ คือ ใช้โปรแกรม ifrename แก้ไขที่ไฟล้ /etc/iftab แต่วิธีจะเก่ามากๆ แล้วครับ
หมายเหตุ ทุกคำสั่งใช้สิทธิ์ root ในการทำ หรือจะใช้คำสั่ง sudo นำหน้าก็ได้ครับ  แบบ udev ก็ยังสามารถใช้ได้นะครับ แค่ไม่มีคำสั่ง write_net_rules

ลิงค์อ้างอิง UDEV
https://www.hellovinoth.com/ubuntu-14-04-renaming-ethernet-interfaces-from-p1p1%E2%80%B3-to-eth0%E2%80%B3/

http://fewstreet.com/2015/06/09/ubuntu-udev-naming-rules.html

ลิงค์อ้างอิง SystemD
https://www.freedesktop.org/software/systemd/man/systemd.link.html#id-1.8.3

https://tomsalmon.eu/2017/12/debian-9-stretch-systemd-network-interface-names/

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Dynamic Kernel Module Support (DKMS) ภาค 3

Dynamic Kernel Module Support เกริ่นมา 2 บทความแล้ว หวังว่าผู้อ่านจะเข้าใจนะครับ สรุปง่ายๆ คือ เจ้าพระเอกของเรา DKMS คำสั่งนี้จะช่วยให้เราจะทำการไฟล์ติดตั้งไดว์เวอร์ให้เราอัตโนมัติ เมื่อมีการอัพเดต kernel ให้เรา ทำให้เราไม่เจอปัญหาเวลาอัพเดตระบบปฏิบัติการแล้วใช้งานไดว์เวอร์การ์ดแลนได้ ปล. มันไม่ใช้แค่ช่วยเรื่องไดว์เวอร์ ยังช่วยทำให้เราเพิ่มความสามารถให้กับ kernel อีกด้วย ขั้นตอนการทำดังนี้ ก่อนทำ เราจะเช็คดูก่อนเพื่อสำรองไฟล์เดิมหรือทำการเช็คเวอร์ชั่นที่ใช้อยู่ได้ เช่น modinfo e1000e (เช็คตำแหน่งที่เก็บไฟล์ไดว์เวอร์) ethtool eth0 (ดูเวอร์ชั่นของไดว์เวอร์) ฯลฯ สามารถใช้ผู้ใช้งาน root ในการทำได้  และก่อนทำบนเครื่องต้องมีคำสั่งและ kernel header ด้วยในที่นี้ผู้เขียนทำตัวอย่างบนระบบปฏิบัติการ Debian ก็ได้ทำการติดตั้งดังนี้  apt-get install dkms deb-helper build-essential linux-headers-$(uname -r) make  cd /usr/src/ sudo wget https://downloadmirror.intel.com/15817/eng/e1000e-3.4.0.2.tar.gz sudo tar xvfz e1000e-3.4.0.2.tar.gz cd e1000e-3.4.0.2 sudo ...

Software Development Life Cycle

ตอนที่แล้วพูดถึงเกี่ยวกับงานของ System Analyst แล้วมีคำศัพท์ว่า System Development Lifecycle (SDLC) ไหนๆ ก็มีคำนี้ขึ้นมาก็ขอเขียนถึงสะหน่อย  ก่อนเข้าเรื่อง ผู้เขียน จบมาจากคณะบริหารธุรกิจ สาขาการจัดการสารสนเทศคอมพิวเตอร์ มหาลัยเซนต์จอห์น ปัจจุบันดำรงตำแหน่งผู้ช่วยผู้อำนวยการฝ่ายพัฒนาผลิตภัณฑ์ โดยบริษัทที่ทำงานอยู่เกี่ยวกับพัฒนาผลิตภัณฑ์ด้าน IT Security ทำไมถึงออกนอกเรื่อง แค่จะบอกว่าจริงๆ สาขาที่ผู้เขียนบทความเรียนเป็นสาขาที่จบออกมาเพื่อมาเป็น System Analyst โดยเฉพาะๆ เลย ด้วยที่ว่าเรียนเกี่ยวกับสายวิชาเกี่ยวกับธุรกิจ ไม่ว่าจะเป็นบัญชีการเงิน ภาษี การตลาด เศรษฐศาตร์ สถิติ และวิชาทางสายไอทีไม่ว่าโปรแกรมมิ่ง ฐานข้อมูล เครือข่าย และวิชาการวิเคราะห์และออกแบบ ซึ่งวิชาการวิเคราะห์และออกแบบนี้และที่จะมาพูดถึง เพราะวิชานี้จะทำให้คุณรู้จักขั้นตอนการพัฒนาซอฟต์แวร์ หรือที่เรียกว่า  System Development Lifecycle (SDLC)