เชื่อมต่อกับเซิร์ฟเวอร์ IPv6 เท่านั้นโดยใช้ WinSCP


2

สมาชิกครอบครัวบางคนขอให้ฉันช่วยกำหนดค่า WinSCP พวกเขาจำเป็นต้องเชื่อมต่อกับเซิร์ฟเวอร์หลายตัวซึ่งบางตัวเป็นแบบสองสแต็กและบางตัวเป็นแบบ IPv6 เท่านั้น

สิ่งที่เราทำจนถึงตอนนี้คือ:

  • ติดตั้ง WinSCP จาก https://winscp.net/
  • สร้างรหัสคู่
  • บันทึกชื่อโฮสต์และชื่อผู้ใช้ร่วมกันใน Login หน้าต่าง.

วิธีนี้ใช้งานได้ดีสำหรับการเชื่อมต่อกับโฮสต์สแต็กคู่ แต่การพยายามเชื่อมต่อกับโฮสต์ IPv6 เท่านั้นใด ๆ จะส่งผลให้เกิดข้อผิดพลาด:

Host "hostname.example.net" does not exist.

แต่ชื่อโฮสต์ที่ฉันใช้นั้นถูกต้อง สำหรับการตรวจสอบเพิ่มเติมฉันได้เชื่อมต่อเครื่อง Ubuntu 14.04 กับ LAN เดียวกัน และในเครื่อง Ubuntu ฉันพิมพ์:

ssh hostname.example.net

เครื่อง Ubuntu เชื่อมต่อกับชื่อโฮสต์เดียวกันโดยไม่มีปัญหาใด ๆ

ฉันดูการกำหนดค่าเครือข่ายและในทั้งสองเครื่องฉันสังเกตเห็นสิ่งเดียวกัน:

  • อินเทอร์เฟซไร้สายมีที่อยู่ IPv4
  • อินเทอร์เฟซไร้สายไม่มีที่อยู่ IPv6
  • มีอินเตอร์เฟส Teredo ซึ่งได้รับที่อยู่ IPv6 ที่ถูกต้องสำเร็จแล้ว

เซิร์ฟเวอร์ IPv6 เท่านั้นที่เราต้องเชื่อมต่ออยู่บน LAN ที่มีรีเลย์ Teredo โดยเฉพาะดังนั้นการเชื่อมต่อที่เชื่อถือได้ควรเป็นไปได้และแน่นอนมันทำงานได้จากไคลเอนต์ Ubuntu

เราต้องเปลี่ยนแปลงอะไรในการกำหนดค่าของ Windows และ / หรือ WinSCP เพื่อเชื่อมต่อกับโฮสต์ IPv6 เท่านั้นอย่างประสบความสำเร็จ

(Teredo ไม่ใช่ข้อกำหนดหากมีทางเลือกที่ดีกว่ามันเกิดขึ้นเป็นที่อยู่ IPv6 เท่านั้นที่กำหนดค่าไว้ในเครื่อง Windows โดยค่าเริ่มต้น)


อย่างน้อยคุณสามารถ ping โฮสต์ผ่าน Teredo (โปรดทราบว่า Microsoft อยู่ใกล้กับการปิดบริการ Teredo ของพวกเขาและผู้ให้บริการหลายรายได้ปิดรีเลย์ของพวกเขาแล้ว)
grawity

@grawity ping -6 hostname.example.net บนเครื่อง Windows ก็อ้างสิทธิ์เช่นกัน could not find host. ping -6 2600:: กล่าวว่า Request timed out.. จากที่อยู่ IPv6 ฉันเห็นได้ว่าเซิร์ฟเวอร์ Teredo ที่ใช้อยู่นั้น 157.56.106.189. หากฉันกำหนดค่าเครื่อง Ubuntu ให้ใช้ 157.56.106.189 เนื่องจากการเชื่อมต่อเซิร์ฟเวอร์ Teredo ยังคงใช้งานได้จากเครื่อง Ubuntu ดังนั้น Ubuntu และ Windows บน LAN เดียวกันโดยใช้เซิร์ฟเวอร์ Teredo เดียวกันพยายาม ping ที่อยู่ IPv6 เดียวกันทำงานบน Ubuntu และล้มเหลวบน Windows
kasperd

@grawity หากฉันรู้วิธีสลับเซิร์ฟเวอร์ Teredo บน Windows ฉันจะลองใช้เซิร์ฟเวอร์ Teredo อีกเครื่อง ท้ายที่สุด Teredo ไม่ใช่ข้อกำหนดมันเพิ่งเกิดขึ้นเป็นโปรโตคอลเดียวที่ฉันรู้ว่าอนุญาตให้ไคลเอนต์ที่อยู่เบื้องหลัง NAT4 ของ IPv4 เท่านั้นเพื่อสื่อสารกับเซิร์ฟเวอร์ IPv6 เท่านั้นโดยไม่ต้องเจาะผ่านบุคคลที่สาม
kasperd

แต่ ... เทเรโด ทำ อุโมงค์ผ่านบุคคลที่สาม ... (เซิร์ฟเวอร์ 'ตัวควบคุม' สามารถเปลี่ยนแปลงได้ผ่าน netsh interface ipv6 teredo set … สมมติว่าคุณสามารถหาเซิร์ฟเวอร์ที่ใช้งานได้ ฉันคิดว่า Remlab ยังคงทำงานอยู่ ฉันคิดว่าการถ่ายทอดข้อมูลจริงถูกเลือกโดยเซิร์ฟเวอร์เดียวกัน)
grawity

@grawity Teredo ทำการส่งผ่านเฉพาะบุคคลที่สามหากคุณไม่มีการถ่ายทอดของคุณเอง นั่นเป็นเหตุผลที่ฉันกล่าวโดยเฉพาะว่าเซิร์ฟเวอร์เฉพาะ IPv6 อยู่บน LAN ที่มีการถ่ายทอด Teredo ดังนั้นในกรณีของฉันไม่มีอุโมงค์ผ่านบุคคลที่สาม และเซิร์ฟเวอร์ Remlab ยังคงมีอยู่ นั่นเป็นสิ่งที่อูบุนตูใช้อยู่เป็นค่าเริ่มต้น อย่างไรก็ตามทางเลือกของเซิร์ฟเวอร์ Teredo ไม่ควรสร้างความแตกต่าง ไม่ใช่เซิร์ฟเวอร์ Teredo ที่เลือกรีเลย์ มันเป็นโฮสต์ IPv6 ดั้งเดิมที่เลือกรีเลย์ Teredo ที่จะใช้
kasperd

คำตอบ:


1

ปัญหาคือว่า Windows ไม่ได้พยายามทำการค้นหาด้วย AAAA อย่างใดอย่างหนึ่งน่าจะเป็นเพราะมันไม่คุ้มค่าที่จะทำการค้นหา AAAA เมื่อที่อยู่ IPv6 เท่านั้นที่เป็นที่อยู่ของ Teredo

การเชื่อมต่อ IPv6 ทำงานได้ตราบใดที่มีการระบุที่อยู่อย่างชัดเจน

ดังนั้นฉันจัดการเพื่อรับการเชื่อมต่อโดยแทนที่ชื่อในฟิลด์ชื่อโฮสต์ด้วยที่อยู่ IPv6 จริงของเซิร์ฟเวอร์ หลังจากทำ WinSCP นั้นก็สามารถเชื่อมต่อได้

ในกรณีของฉันเซิร์ฟเวอร์มีที่อยู่ IPv6 แบบคงที่ (อย่างน้อยก็ตราบใดที่ยังคงอยู่กับผู้ให้บริการปัจจุบัน) ดังนั้นการมีที่อยู่ IPv6 แบบคงที่ในการเข้าสู่ระบบที่บันทึกไว้ของ WinSCP จึงไม่ใช่ปัญหาใหญ่


โซลูชันนี้ทำงานเมื่อฉันกำหนดค่าเริ่มแรก อย่างไรก็ตามตั้งแต่นั้นมาก็หยุดทำงาน ฉันสงสัยว่า Microsoft ขัดข้องด้วยการผลักดันการอัปเดตเป็น Windows หรือเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ Teredo ที่ลูกค้าใช้บน Windows
kasperd

1

ตามที่อธิบายไว้ในบันทึกทางเทคนิคของ Microsoft ( http://technet.microsoft.com/en-us/library/bb727035.aspx ) ไคลเอนต์ Windows Vista หรือ Windows 7 จะไม่ค้นหา DNS สำหรับที่อยู่ IPv6 (สอบถามชื่อ DNS สำหรับระเบียน AAAA) หากอินเทอร์เฟซ IPv6 ภายในเครื่องเดียวเท่านั้นคือการเชื่อมต่อแบบโลคัลและอินเตอร์เฟส Teredo . กล่าวอีกนัยหนึ่งในขณะที่ Teredo อาจเปิดใช้งานในระบบปลายทางจำนวนมากที่เชื่อมต่อกับอินเทอร์เน็ตและอยู่ด้านหลัง NATs ระบบดังกล่าวจะไม่เรียกใช้ Teredo เพื่อเข้าถึง URL IPv6 เท่านั้นในช่วงเวลาปกติเพราะจะไม่ สอบถาม DNS สำหรับที่อยู่ IPv6 ที่จะใช้

เจฟฟ์ฮัส ทดสอบ Teredo

อย่างไรก็ตามเป็นไปได้ที่จะเปลี่ยนแปลงพฤติกรรมนี้ ในตัวแก้ไขรีจิสทรีที่คุณชื่นชอบให้นำทางไปที่ปุ่ม HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters และเพิ่มค่า DWORD AddrConfigControl ตั้งค่าให้ 0.

น่าเสียดาย, ไม่ปรากฏว่ามีเอกสารอย่างเป็นทางการสำหรับการตั้งค่านี้ .


ฉันอาจตัดสินใจลองในภายหลัง แต่ตอนนี้ฉันจะไม่ทำการเปลี่ยนแปลงทั้งระบบ โดยเฉพาะอย่างยิ่งฉันกังวลเกี่ยวกับแอปพลิเคชันที่อาจจะชอบ Teredo มากกว่า IPv4 ถ้าฉันใช้การเปลี่ยนแปลงที่คุณแนะนำ หากฉันสามารถเปิดใช้งานสำหรับ WinSCP เท่านั้นและปล่อยให้ปิดการใช้งานสำหรับส่วนที่เหลือของระบบที่ฉันต้องการ มันจะดียิ่งขึ้นถ้าฉันสามารถกำหนดค่าให้ใช้เฉพาะระเบียน AAAA เมื่อแบบสอบถาม A สร้างคำตอบที่ระบุว่าโดเมนนั้นมีอยู่ แต่ไม่มีระเบียน A
kasperd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.