Debian 7 IPv6 link local address ถูกตั้งค่าอย่างไร?


12

ดูเหมือนว่าเมื่อ dhclient ทำงานบน eth0 ฉันได้รับที่อยู่ IPv4 จากเซิร์ฟเวอร์ DHCP และขอบเขต: เชื่อมโยงที่อยู่ IPv6 ที่เชื่อมโยงกับ eth0:

inet6 addr: fe80::a00:27ff:fed0:4d41/64 Scope:Link

แต่ฉันไม่เห็นจาก dhclient-script เกี่ยวกับการเพิ่มที่อยู่นั้น ในอินเทอร์เฟซอื่นที่มีที่อยู่ IP แบบคงที่ฉันต้องการเพิ่มที่อยู่ IPv6 ในเครื่องของลิงก์และฉันสงสัยว่ามีคำสั่งทั่วไปให้ทำเช่นนั้นโดยไม่ทราบว่า mac

แก้ไข:
ดูเหมือนว่าเคอร์เนลจะกำหนดที่อยู่ภายในการเชื่อมโยงเมื่อคุณทำ "ip link set dev ethX up" หรือ "ifconfig ethX up" อย่างไรก็ตามในกรณีของฉันฉันมีสายเคเบิลเชื่อมต่อกับอินเทอร์เฟซที่ DHCP'ing และไม่มีสายเคเบิลเสียบเข้ากับอินเทอร์เฟซที่ฉันตั้งค่าแบบคงที่ ไม่สามารถยืนยันได้จนถึงวันจันทร์ แต่ฉันเดาว่าเคอร์เนลไม่ได้กำหนดที่อยู่ในการเชื่อมโยงไปยังอินเทอร์เฟซหากไม่มีลิงก์


2
ไม่มีอะไรเกี่ยวข้องกับคนอื่น
Michael Hampton

2
ฉันเข้าใจ. และเนื่องจากการใช้ dhclient คุณจะได้รับที่อยู่ IPv6LL แต่เมื่อคุณตั้งค่าที่อยู่ IPv4 แบบคงที่คุณจะไม่ ดังนั้นผลข้างเคียงของคำสั่งบางอย่างที่ถูกเรียกใช้โดย dhclient ทำให้เกิดขึ้น ..
แอรอน

1
ไม่คุณไม่ได้รับที่อยู่ IPv6 link-local จากการเรียกใช้ dhclient
Michael Hampton

คำตอบ:


7

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

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

RFC 4862ระบุกระบวนการที่ต้องปฏิบัติตาม


1
"มันถูกสร้างขึ้นอัตโนมัติโดยเป็นส่วนหนึ่งของการนำอินเตอร์เฟสขึ้นมา" ใช่นี่คือสิ่งที่ฉันกำลังมองหาใครกำลังสร้างอัตโนมัติ? มันไม่ได้สร้างขึ้นโดยอัตโนมัติเมื่อคุณกำหนดที่อยู่ IPv4 แบบคงที่ แต่เป็นเมื่อ dhclient ทำงาน ดังนั้น dhclient ใช้ RFC 4862 หรือมันเป็นผลข้างเคียงของคำสั่งบางอย่างใน dhclient-script? ฉันจะเรพลิเคตบนอินเตอร์เฟสแบบสแตติกได้อย่างไรโดยไม่ต้องเขียนการใช้งาน RFC 4862 ของฉันเอง?
แอรอน

สร้างโดยอัตโนมัติโดยเคอร์เนลดูเหมือนว่าดูการแก้ไขด้านบน
แอรอน

6

พบมัน! คำสั่งนี้ไม่เพียงพอ:

ifconfig eth0 up

แต่ฉันต้องทำ:

ifconfig eth0 up
sysctl -w net.ipv6.conf.eth0.disable_ipv6=0

เฉพาะอันหลังเท่านั้นที่จะเรียกคืนที่อยู่ในท้องถิ่นของลิงค์ IPv6 บน eth0

กล่าวอีกนัยหนึ่ง distro ของฉันดูเหมือนจะมีรหัสบางอย่างซ่อนอยู่ที่ไหนสักแห่งที่เปลี่ยนแปลงแบบไดนามิกnet.ipv6.conf.eth0.disable_ipv6ทุกครั้งที่มีการขอให้นำเครือข่ายขึ้นหรือลง ไมล์สะสมของคุณอาจแตกต่างกันไป

ฉันไปถึงจุดต่ำสุดของสิ่งนี้ต้องขอบคุณเพียง:

sysctl -a | grep ipv6

ด้วยวิธีที่ฉันไม่เข้าใจว่าทำไม distro ของฉันถึงปิดการใช้งาน disable_ipv6: เมื่อการเชื่อมโยงถูกลบมันจะสร้างความแตกต่าง
MarcH

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