วิธีที่เหมาะสมสำหรับการเปลี่ยนที่อยู่ MAC ใน linux VM?


13

ฉันพยายามเปลี่ยนที่อยู่ MAC ใน ubuntu VM (virtualbox) แต่หลังจากนั้นก็เกิดข้อผิดพลาดมากมายระหว่างการบู๊ตจากนั้นฉันก็ไม่มีการเชื่อมต่ออินเทอร์เน็ต

จากนั้นฉันเห็นว่าอินเทอร์เฟซถูกเปลี่ยนชื่อเป็น eth1 ดังนั้นฉันจึงแก้ไข / etc / network / interfaces เพื่อเปลี่ยน eth0 เป็น eth1 รีบูตเครื่อง (ไม่รู้วิธีการรีสตาร์ทเครือข่าย) และการบูตก็เร็วขึ้นและอินเทอร์เน็ตทำงานได้ดี

แต่หลังจากทุกครั้งที่ฉันเข้าสู่ระบบฉันได้รับข้อความแสดงข้อผิดพลาด 1 หรือ 2 ข้อซึ่งไม่ได้พูดอะไรพวกเขาถามฉันว่าต้องการรายงานพวกเขาหรือไม่

ดังนั้นฉันสงสัยว่ามีวิธีที่เหมาะสมในการเปลี่ยนที่อยู่ MAC เพื่อหลีกเลี่ยงปัญหาเหล่านี้หรือไม่


1
มีหลายปัจจัยที่เกี่ยวข้องกับการเปลี่ยนที่อยู่ mac ใน VM หรืออื่น ๆ คุณสามารถอธิบายว่าทำไมคุณต้องการที่จะเปลี่ยนแม็คก็อาจช่วยให้มีการหาทางออกที่ดีที่สุด ( meta.stackexchange.com/questions/66377/what-is-the-xy-problem )
พอล

@Paul ฉันพยายามเรียนรู้ว่าโปรแกรมต่าง ๆ ติดตามกิจกรรมของคุณทำอย่างไรและหลีกเลี่ยงได้อย่างไร เช่น IP คุกกี้ลายนิ้วมือของเบราว์เซอร์ ฯลฯ ตอนนี้ฉันต้องการดูว่าบางโปรแกรมตอบสนองต่อการเปลี่ยนที่อยู่ MAC
HappyDeveloper

คำตอบ:


15

คุณน่าจะใช้วิธี "ถูกต้อง" เพื่อเปลี่ยนที่อยู่ MAC หากคุณทำเช่นนี้ในการตั้งค่าเครือข่ายขั้นสูงใน VirtualBox อย่างไรก็ตามการเปลี่ยนแปลงชั่วคราวเช่นเดียวกับคำตอบอื่น ๆ ของ Zuul อาจเป็นการดีที่สุดสำหรับวัตถุประสงค์ของคุณเนื่องจากจะเปลี่ยน MAC โดยไม่ทำให้เกิดปัญหาเพิ่มเติมมากเกินไป - อย่างไรก็ตามจะไม่สามารถรีบูตได้

การเปลี่ยนแปลงใน VirtualBox แน่นอนจะอยู่รอดรีบูต udevแต่ปัญหาที่คุณกำลังเผชิญอยู่กับ นี่คือกระบวนการที่ดูที่ฮาร์ดแวร์และตั้งค่าฮาร์ดแวร์นั้นใน/dev(หรือสิ่งอื่นที่อาจต้องทำ) หนึ่งในสิ่งที่ทำโดยค่าเริ่มต้นคือพยายามรักษาชื่อถาวรสำหรับการ์ดเชื่อมต่อเครือข่าย [นิคส์] นี่เป็นเพราะเมื่อคุณมีนิคส์หลายตัวคุณต้องการให้พวกเขามีชื่อ EthX เหมือนกันเสมอดังนั้น/etc/network/interfacesการกำหนดค่าของคุณจะกำหนดเป้าหมายที่ถูกต้องในแต่ละบูต ระบบปฏิบัติการไม่สามารถพึ่งพาพวกเขาเพียงแค่อยู่ในจุดเดียวกันในแต่ละครั้ง - คุณอาจย้ายไปรอบ ๆ ตัวอย่างเช่นหรือบางระบบไม่รายงานการเชื่อมต่อทางกายภาพตามลำดับเดียวกันในการบู๊ตแต่ละครั้ง

ดังนั้นudevใช้กฎการคงอยู่ตามที่อยู่ MAC ของการ์ดเครือข่าย หากมีรายการสำหรับ eth1 ที่มีที่อยู่ MAC ที่รู้จักและการ์ดปรากฏขึ้นพร้อมกับที่อยู่ MAC ที่แตกต่างกันก็จะจัดสรรชื่ออุปกรณ์ ethX อื่นให้กับอินเตอร์เฟส

หากต้องการตอบโต้คุณต้องอัปเดตudevกฎ แก้ไข:

vi /etc/udev/rules.d/70-persistent-net.rules

และมองหาบรรทัดที่มี MAC ปัจจุบันของคุณ:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

หากคุณเปลี่ยนที่อยู่ MAC ที่นี่เป็นที่อยู่ใหม่ที่คุณเลือกในการตั้งค่า VirtualBox จากนั้นจะเก็บหมายเลข ethX dev เดิมไว้ในการบูตครั้งถัดไป

ลำดับที่ดีที่สุดอาจจะแก้ไขได้ที่นี่ก่อนจากนั้นปิด VM จากนั้นแก้ไขการตั้งค่า VB MAC จากนั้นบูตเครื่อง


การแก้ไขไฟล์ด้วยตนเองไม่ได้ผลสำหรับฉัน แต่ฉันจำได้ว่าการอ่านว่าคุณสามารถลบไฟล์นี้ได้ทั้งหมดและหลังจากรีบูตเครื่องไฟล์จะถูกสร้างขึ้นโดยอัตโนมัติ และมันก็ใช้งานได้จริง :) +1 เพื่อแสดงตำแหน่งไฟล์
Eduard Luca

@ พอลทำไมจึงเป็นเช่นนั้นฉันสามารถโคลนระบบ Linux จากเครื่องหนึ่งไปยังอีกเครื่องที่มีประเภทเดียวกัน (แต่ที่อยู่ MAC ที่แตกต่างกัน) และไม่พบปัญหาดังกล่าว?
arney

1
@arney ฉันคิดว่านั่นเป็นเพราะมันเป็น NIC ที่แตกต่างกันโดยสิ้นเชิงไม่เพียง แต่การเปลี่ยนแปลงที่อยู่ MAC ATTR{dev_id}=="0x0"ในแฟ้มที่ถูกกล่าวถึงโดยพอลคุณสามารถดู: สิ่งนี้ผูกพันที่จะแตกต่าง
MarioDS

@arney ฉันคิดว่าคุณพูดถูก Arney ถ้าไม่มี nic กฎ udev จะไม่ถูกนำมาใช้ เหมือนกับว่าเป็นเครื่องใหม่ ไม่มีข้อผิดพลาดมันยากที่จะพูด แต่การลบกฎการคงอยู่จะช่วยได้ถ้ามันเป็น udev
พอล

8

คุณสามารถเปลี่ยนที่อยู่ MAC ได้ด้วย 4 ขั้นตอนง่ายๆโดยใช้ifconfig :

เปิดเทอร์มินัล (แป้นพิมพ์ลัด: ctrl+ alt+ t)

  1. ค้นหาที่อยู่ mac ปัจจุบัน:

    ifconfig | grep HWaddr
    
  2. ปิดอินเทอร์เฟซ(สมมติว่าเป็นeth0ขั้นตอนถัดไป) :

    ifconfig eth0 down
    
  3. ตั้งค่าที่อยู่ mac ใหม่:

    ifconfig eth0 hw ether 00:1E:68:35:FF:91
    
  4. ตั้งค่าสถานะเป็นสาเหตุให้อินเตอร์เฟสเปิดใช้งาน:

    ifconfig eth0 up
    

ตอนนี้คุณสามารถตรวจสอบที่อยู่ mac ของอินเทอร์เฟซของคุณได้อีกครั้ง:

ifconfig eth0 |grep HWaddr

หมายเหตุ:คุณสามารถเลือกที่อยู่เลขฐานสิบหก 48 บิตใดก็ได้เป็นที่อยู่ MAC ของคุณ


เพื่อความสมบูรณ์คุณสามารถรวมขั้นตอนที่ 2 และ 3 เป็นหนึ่งบรรทัด:

ifconfig eth0 down hw ether 00:00:00:00:00:01

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