ปิดการใช้งาน 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.