ปิดการใช้งาน IPv6 บนที่อยู่ Loopback (Localhost, ชื่อคอมพิวเตอร์, ... )


16

เราพยายามติดตั้งผลิตภัณฑ์ซอฟต์แวร์ของบุคคลที่สามบนเครื่อง Windows Server 2008 R2 ใหม่และพบว่าทุกอย่างทำงานได้ยกเว้นการเข้าถึงบริการในพื้นที่ผ่านที่อยู่ลูปแบ็คเช่นlocalhostหรือชื่อคอมพิวเตอร์ (เช่น: VPS-Webซึ่งแก้ไขได้localhost) เราไม่ได้ใช้ IPv6 และต้องการปิดการใช้งานจนกว่าซอฟต์แวร์จะเข้ากันได้

ฉันพยายามใช้คำแนะนำเหล่านี้สำหรับการปิดการใช้งาน IPv6 บน Windows 2008 R2localhostแต่มันไม่ได้ปิดการใช้งานโปรโตคอลสำหรับ กระตุกlocalhostหรือVPS-Webจะยังคงกลับมาแทน::1: 127.0.0.1ฉันสามารถใช้ping localhost -4เพื่อรับที่อยู่ที่ถูกต้อง แต่ IPv6 มีความสำคัญมากกว่า IPv4 ดังนั้นซอฟต์แวร์บุคคลที่สามจะได้รับที่อยู่ IPv6 เท่านั้น


คุณได้ลองติดต่อผู้ขายเพื่อดูว่าพวกเขามีวิธีแก้ปัญหาหรือไม่? Ping ร้องขอที่อยู่ IPv6 ดังนั้นมันจะได้รับ :: 1 แอปพลิเคชันที่ไม่สนับสนุน IPv6 จะไม่รับที่อยู่เหล่านั้น
— Chris S

ซอฟต์แวร์เป็นสิ่งที่น่ารังเกียจของส่วนประกอบต่าง ๆ (JAVA, Tomcat, Apache, MSSQL, SAP, JDBC, WMI) ซึ่งอาจเป็นปัญหาอย่างใดอย่างหนึ่ง ฉันไม่ได้ใช้ IPv6 ดังนั้นฉันต้องการปิดการใช้งาน นอกจากนี้ยังเกี่ยวข้องกับฉันว่าไม่มีตัวเลือกในการทำเช่นนี้สำหรับอะแดปเตอร์ย้อนกลับ
— Greg Bray

คำตอบ:


12

ฉันเริ่มตรวจสอบไฟล์โฮสต์ตามที่แนะนำ SilverbackNet แต่บนเซิร์ฟเวอร์ Windows 2008 R2 นี่เป็นไฟล์เริ่มต้น:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

#ระบุความคิดเห็นในไฟล์โฮสต์ดังนั้นรายการทั้งหมดจะถูกใส่ความคิดเห็นและบรรทัดแรกนั้นค่อนข้างสับสน จากนั้นฉันสังเกตเห็นว่ามีสองรายการสำหรับ localhost ที่ถูกคอมเม้นท์ดังนั้นฉันจึงลองยกเลิกการใส่เครื่องหมายข้อคิดเห็น IPv4 หนึ่งและทำงานได้! ฉันควรลองครั้งแรก แต่ฉันถูกโยนออกนอกเส้นทางโดยบรรทัดแรก การใช้ไฟล์โฮสต์ด้านล่างส่ง Ping ไปที่ชื่อคอมพิวเตอร์หรือ localhost จะส่งคืนที่อยู่ IPv4 เสมอซึ่งจะแก้ไขปัญหาของซอฟต์แวร์ของบุคคลที่สาม!

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web

สิ่งนี้ลบ ipv6 ([::]) ที่ฟังใน netstat หรือไม่?
— Jared Burrows

มันไม่ใช่. [::] เท่ากับ IPv6 เท่ากับ 0.0.0.0 ซึ่งแสดงที่อยู่ IP ที่มีอยู่ทั้งหมดในระบบ การแก้ไขข้างต้นใช้สำหรับที่อยู่ลูปแบ็คภายใน localhost โดยเฉพาะ ฉันมีทั้งการตั้งค่าข้างต้นและ DisabledComponents = 0xffffffff รีจิสตรีคีย์และฉันยังเห็นแอปพลิเคชันที่ฟังอยู่ใน [::] ฉันไม่ทราบว่ามีวิธีการปิดการใช้งาน IPv6 อย่างเต็มที่หรือไม่
— Greg Bray

ขอบคุณสำหรับการยืนยันปัญหาของฉัน! ฉันแค่ทำให้แน่ใจ :)
— Jared Burrows

สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันล้างแคช DNS และการรีบูต แต่ก็ยังส่งกลับที่อยู่ IPv6 ...
— jj_

5

การตั้งค่า "DisabledComponents" = 0x20 ใต้

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters \

จะตั้งค่าเครื่องให้ใช้ IPv4 แทน IPv6 ในนโยบายคำนำหน้า

สร้างคีย์รีจิสทรีหากไม่มีอยู่


2

เธรด ServerFault เริ่มต้นเกี่ยวกับการใช้DisabledComponentsค่ารีจิสทรีเป็นวิธีที่ดีที่สุดในการทำเช่นนี้ การปรับแต่งไฟล์โฮสต์ไม่ควรจำเป็นในเครือข่ายที่ใช้งานได้ดี การปรับแต่งรีจิสตรีนั้นง่ายกว่ามากในการปรับใช้และย้อนกลับผ่านนโยบายกลุ่มหากคุณมี Active Directory

เหตุผลที่มันไม่ทำงานเป็นเพราะDisabledComponentsการตั้งค่ารีจิสทรีที่อ่านเป็นชุดของค่าสถานะบิตและไม่เพียงเปิดหรือปิด นี่คือเอกสารอย่างเป็นทางการจาก Microsoft ในเรื่อง:
วิธีการปิดการใช้งาน IP รุ่น 6 (IPv6) หรือส่วนประกอบเฉพาะใน Windows 7, Windows Vista, Windows Server 2008 R2 และ Windows Server 2008

รุ่นสั้น ๆ ว่าจะปิดการใช้งาน IPv6 อย่างสมบูรณ์ใน Vista / 2008 และเกินกว่ากำหนดค่าของการที่จะDisabledComponents 0xffฉันทำสิ่งนี้ในทุกเครื่องที่ฉันจัดการซึ่งเราไม่ได้ใช้ IPv6 อย่างชัดเจน มันมีผลข้างเคียงที่ดีของการย่อเอาต์พุตของipconfigคำสั่งอย่างมีนัยสำคัญ


2
ตามลิงค์ของคุณ ( support.microsoft.com/kb/929852#letmefixit ) รายการรีจิสตรีนี้อนุญาตให้ปิดการใช้งาน IPv6 ในหลาย ๆ ที่ยกเว้นการวนลูปกลับ ...
— Frank Nocke

1
คุณถูก. อย่างไรก็ตามมีค่าที่เปลี่ยนการทำงานของเครือข่ายเริ่มต้นให้ชอบ IPv4 มากกว่า IPv6 ซึ่งจะแก้ปัญหาของ OP ได้อย่างมีประสิทธิภาพเมื่อเชื่อมต่อกับ localhost หรือชื่อคอมพิวเตอร์ NetBIOS
— Ryan Bolger

สิ่งเหล่านี้ไม่ได้ผลกับฉันใน Windows Server 2012R2 ซึ่งรวมถึงการลองปรับเปลี่ยนโฮสต์การตั้งค่ารีจิสทรี DisabledComponents นอกเหนือจากแนวคิดอื่น ๆ อีกมากมายที่ฉันเคยเห็นที่อื่น ใช้งานได้บน Windows Server 2008 แต่ฉันไม่มีวิธีแก้ปัญหาสำหรับ 2012R2
— สกอตต์ไวท์

คุณต้องรีบู๊ตหลังจากแก้ไขค่า DisabledComponents หากคุณตั้งค่าเป็น 0xffffffff จะไม่มีวิธีที่จะไม่ทำงานแม้ใน 2012R2 ผลลัพธ์ของการรัน ipconfig ไม่ควรส่งคืนสิ่งใดที่เกี่ยวข้องกับ IPv6 และดังนั้นการส่ง localhost ควรส่ง Ping ไปยังที่อยู่ v4
— Ryan Bolger

การค้นพบใหม่แสดงว่าค่าที่ถูกต้องควรเป็น 0xFF แทนที่จะเป็น 0xFFFFFFF เพื่อหลีกเลี่ยงความล่าช้าในการบูต 5 วินาที ดู Microsoft KB929852 ที่ปรับปรุงแล้ว (นี่ยังไม่ปิดการใช้งานลูปแบ็ค)
— wandersick

2

คุณได้ลองลบรายการออกจากไฟล์โฮสต์ใน% systemroot% \ system32 \ drivers \ etc หรือไม่ ควรทำเช่นนั้นหากคุณต้องการ "localhost" เป็น IPv4 เสมอ อย่างไรก็ตามหากเป็นไปตามชื่อเซิร์ฟเวอร์สิ่งนี้อาจไม่ทำงาน


1
ไฟล์โฮสต์บน windows อยู่ภายใต้% systemroot% \ system32 \ drivers \ etc และแม้ว่าจะไม่มีการอ้างอิง ipv6 สำหรับ localhost pinging localhost จะได้รับการตอบสนอง :: 1
— Helvick

คุณจะได้รับการตอบกลับ 127.0.0.1 ถ้าคุณจับ
— คู่โลคัลโฮสต์

0

คุณยังสามารถเข้าสู่คุณสมบัติของ NIC และยกเลิกการเลือกช่อง IPv6 โดยเปิดใช้งาน IPv4 ควรทำเคล็ดลับ


3
ไม่ทำงานสำหรับที่อยู่ย้อนกลับ ...
— เกร็กเบรย์

awww! :( ฮ่าฮ่า !!
— JohnThePro

นี่เป็นการปิดการใช้งานอินเตอร์เฟส LAN เท่านั้น ช่องสัญญาณและลูปแบ็คยังคงเชื่อมต่อที่นี่ (ตรวจสอบผ่านอินเทอร์เฟซ netsh ipv6> แสดงอินเทอร์เฟซ)
— Chadddada

-3

ลองเพิ่มบรรทัดลงในไฟล์โฮสต์ของคุณเช่น:

::1 VPW-Web

สิ่งนี้ควรเปิดใช้งานตัวแก้ไขเพื่อVPW-Webใช้เป็นชื่อสำหรับการวนรอบ IPv6

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