Windows 7 ใช้ที่อยู่ IP เอาท์พุทผิดเมื่อมีการกำหนดค่า IP หลายตัวให้กับการ์ดเชื่อมต่อเดียวกัน


2

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

ที่อยู่ IP 169.254.1.38/24เริ่มต้นของฉันคือ ใช่เราใช้ช่วง IP ของการกำหนดที่อยู่อัตโนมัติ แต่นี่เป็นที่อยู่ IP ที่กำหนดค่าคงที่และเซิร์ฟเวอร์ DHCP ของเราจะกำหนด IP เดียวกันให้ฉันถ้าฉันเปลี่ยนเป็นการกำหนดค่า DHCP 169.254.1.1เกตเวย์ของฉันอยู่ที่

ฉันได้เพิ่มที่192.168.38.1/24อยู่ IP โดยใช้ปุ่ม 'ขั้นสูง' ในคุณสมบัติอะแดปเตอร์ ทันทีที่ฉันปิดกล่องโต้ตอบ Windows จะเริ่มใช้192.168.38.1เป็นที่อยู่ผลลัพธ์เมื่อพยายามเข้าถึงอินเทอร์เน็ต เนื่องจากเราเตอร์ของเราอยู่ในเครือข่ายย่อยอื่นจึงไม่ตอบสนองต่อคำขอ

ผลลัพธ์ของroute printคือ (ผลลัพธ์เป็นภาษาโปรตุเกสฉันได้แปลป้ายกำกับ:

...
IPv4 route table
===========================================================================
Active routes:
Network address            Mask         Gateway addr.      Interface   Cost
          0.0.0.0          0.0.0.0      169.254.1.1     192.168.38.1    266
...

และทันทีที่ฉันลบ IP ตัวที่สองค่าอินเทอร์เฟซของเส้นทาง169.254.1.38จะกลับสู่

มีวิธีใดบ้างที่ฉันสามารถเปลี่ยนเส้นทางนี้เพื่อเริ่มใช้ที่อยู่ IP ที่ถูกต้อง route addคำสั่งเพียงแค่ยอมรับอินเตอร์เฟซที่เป็นพารามิเตอร์และไม่ adresses IP

ฉันใช้ Windows 7 64 บิต

คำตอบ:


4

IPv4 link-local subnet ตามที่กำหนดไว้ในRFC 3927นั้นควรจะเป็น 169.254 / 16 (หมายเหตุ: / 16 ไม่ใช่ / 24) และค่า "0" และ "255" ใน octet ที่สามจะถูกสงวนไว้เมื่อคุณ กำลังกำหนดค่าที่อยู่ลิงก์ท้องถิ่นของ IPv4 ค่าอื่น ๆ ทั้งหมดสำหรับออคเต็ตที่สามนั้นสงวนไว้สำหรับการกำหนดเองโดยอัตโนมัติไม่ใช่การกำหนดด้วยตนเอง ดังนั้นถ้าฉันเป็นคุณฉันจะเปลี่ยน 169.254.1.38/24 เป็น 169.254 0 .38 / 16และฉันจะเปลี่ยน 169.254.1.1/24 เป็น 169.254 0 .1 / 16

หากคุณมีเซิร์ฟเวอร์ DHCP คุณไม่ควรใช้ link-local คุณควรใช้ซับเน็ตส่วนตัวRFC 1918 (10/8, 172.16 / 12 หรือ 192.168 / 16) ดังนั้นแทนที่จะเปลี่ยนเป็น "0" หรือ "255" octet ตัวที่สามใน subnet link-local ตามที่อธิบายไว้ข้างต้นคุณควรเปลี่ยนไปใช้ subnet ส่วนตัวของ RFC 1918 และหยุดใช้ IPv4 link-local address พื้นที่ทั้งหมด ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับปัญหาของคุณ แต่ฉันคิดว่าคุณอาจต้องการทราบวิธีปฏิบัติตามมาตรฐานสำหรับพื้นที่ที่อยู่ที่คุณพยายามใช้งานได้ดีขึ้น การแก้ไขในตอนนี้อาจหลีกเลี่ยงปัญหาบางอย่างในภายหลัง

โปรดทราบว่าเนื่องจากคุณใช้พื้นที่ที่อยู่ IPv4 link-local ของ RFC 3927 สแต็ค IP ของคุณอาจใช้พฤติกรรม "subnets ทั้งหมดเป็น local" ที่กำหนดใน RFC 3927 เนื่องจากพฤติกรรม "subnets ทั้งหมดเป็น local" ของ IPv4 link local ที่อยู่มันสมบูรณ์ดีที่จะใช้ที่อยู่ IP ส่วนตัว RFC 1918 เช่น 192.168.38.1 เพื่อพูดคุยกับที่อยู่ IP ท้องถิ่นของ IPv4 link เช่น 169.254.1.1 ในโดเมนออกอากาศเดียวกัน (เช่น Ethernet LAN)


ฉันไม่ได้ใช้ RFC 3927 ทั้ง บริษัท ได้รับการกำหนดค่าโดยใช้ 169.254.1 / 24 นานมาแล้วและการเปลี่ยนสิ่งต่าง ๆ ไม่ใช่เรื่องง่าย ถ้าฉันเปลี่ยน IP ของฉันเป็น 192.168 / 16 ต่อตัวอย่างมันจะทำงานได้ดี แต่การใช้ 169.254.1 / 24 ไม่ได้
วาร์กัส

@Vargas ความจริงที่ว่ามันทำงานได้ดีเมื่อคุณแก้ไข subnet mask เป็นหลักฐานว่าสแต็ค IP ของคุณเรียกใช้พา ธ โค้ดที่เกี่ยวข้องกับ RFC 3927 ที่อยู่ 169.254.xx ถูกสงวนไว้สำหรับการกำหนดแอดเดรส link-local RFC 3927 IPv4 สแต็ค IP สมัยใหม่เขียนขึ้นโดยคำนึงถึงสิ่งนั้น หากคุณใช้ที่อยู่เหล่านั้นรหัส RFC 3927 ของสแต็ค IP ของคุณจะเปิดขึ้นโดยอัตโนมัตินั่นเป็นสาเหตุที่ฉันแนะนำให้คุณใช้พื้นที่ที่อยู่อย่างถูกต้อง เครือข่ายย่อยของ RFC 1918 เป็นอุปกรณ์ที่ถูกต้องสำหรับสิ่งที่คุณทำไม่ใช่ RFC 3927 169.254.xx ได้รับการจัดการเป็นพิเศษเช่น 0.xxx และ 127.xxx และ 224.xxx และ 255.xxx
Spiff

1

อันดับแรกฉันจะทำสิ่งนี้ด้วยการ์ดเครือข่ายสองอัน ... ง่ายกว่ามาก

ฉันเพิ่งเพิ่มสิ่งนี้เป็นหลักฐานว่าคุณไม่ได้รับ bahavior (ฉันรู้ว่ามันใช้ไม่ได้กับ Windows 7 แต่สิ่งประเภทนี้ไม่เปลี่ยนบ่อย): "การ์ดเครือข่ายอินเทอร์เฟซเดียว (NIC) กำหนดค่าด้วยที่อยู่ IP หลายแห่ง กำหนดไว้ในเครือข่ายย่อยที่แตกต่างกันเสมอจะใช้ที่อยู่ IP แรกที่กำหนดไว้ในการกำหนดค่า TCP / IP เป็นที่อยู่ต้นทางโดยไม่คำนึงถึงปลายทาง "

http://support.microsoft.com/kb/149399

ฉันจะตรวจสอบ

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \

จากนั้นค้นหาอินเทอร์เฟซของคุณและเปลี่ยนลำดับที่อยู่ IP ด้วยตนเองในคีย์ "IPAddress" ฉันสงสัย แต่คุณอาจต้องปิดการใช้งานและเปิดใช้งานส่วนต่อประสานอีกครั้ง


ฉันพบว่า Windows จะไม่ใช้ IP แรกในคีย์ "IPAddress" ถ้าอันแรกอยู่ในช่วง RFC 3927 (169.254 / 16) (และอันที่สองไม่ได้) อาจเป็นไปได้จากการออกแบบใน Windows 7 แต่ฉันไม่ทราบ Windows XP ทำงานได้ดี
วาร์กัส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.