ฉันสงสัยว่าจะรับส่งข้อมูลช่องสัญญาณ tcp / ipv6 ผ่านช่องสัญญาณ ssh / ipv4 (การเชื่อมต่อ ptp) อย่างไร เป็นไปได้ไหม? ฉันจะบรรลุสิ่งนั้นได้อย่างไร
ฉันสงสัยว่าจะรับส่งข้อมูลช่องสัญญาณ tcp / ipv6 ผ่านช่องสัญญาณ ssh / ipv4 (การเชื่อมต่อ ptp) อย่างไร เป็นไปได้ไหม? ฉันจะบรรลุสิ่งนั้นได้อย่างไร
คำตอบ:
ใช่เป็นไปได้และไม่ยากเกินไป แต่การแก้ปัญหานั้นไม่ดีนักเนื่องจาก SSH ทำงานบน TCP และมีค่าใช้จ่ายที่สมเหตุสมผล
เซิร์ฟเวอร์ต้องมีในไฟล์กำหนดค่าsshd_config
:
PermitTunnel point-to-point
จากนั้นคุณจะต้องรูทเครื่องทั้งสองเครื่อง คุณเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้:
ssh -w any root@server
หลังจากเชื่อมต่อให้ใช้คำสั่งip link
ในทั้งสองระบบเพื่อทราบว่าอุปกรณ์tunN ใดที่ถูกสร้างขึ้นในแต่ละเครื่องและใช้ในคำสั่งต่อไปนี้ โปรดทราบว่าฉันใช้ตัวอย่างที่อยู่ไซต์ท้องถิ่นซึ่งล้าสมัย แต่ก็ใช้ได้สำหรับบทนำนี้
บนเซิร์ฟเวอร์:
server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0
เกี่ยวกับลูกค้า:
client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0
นี่ก็เพียงพอแล้วที่คุณจะสามารถ ping ด้านอื่น ๆ ผ่านทางอุโมงค์ถ้าไม่มีกฎไฟร์วอลล์ปิดกั้น ขั้นตอนต่อไปคือการตั้งค่าเส้นทางผ่านอุโมงค์ (อย่าลืม net.ipv6.conf.default.forwarding = 1) จากนั้นปรับ MTU ลิงก์เพื่อรับประสิทธิภาพที่ดีที่สุด
server# sysctl net.ipv6.conf.all.forwarding=1
client# ip -6 route add default via fec0:1::1
สิ่งนี้จะช่วยให้ไคลเอนต์ของคุณ ping เครือข่ายอื่น ๆ ที่เซิร์ฟเวอร์มีการเข้าถึงเนื่องจากเป้าหมายมีเส้นทางกลับไปยังไคลเอนต์ระยะไกลของคุณ
คุณจะต้องแก้ไขลิงก์ MTU เพื่อที่ลูกค้าจะไม่ส่งแพ็กเก็ตที่เซิร์ฟเวอร์จะไม่สามารถส่งต่อได้ ขึ้นอยู่กับ MTU ของลิงก์ IPv6 ของเซิร์ฟเวอร์เอง อย่าพึ่งพาการค้นพบพา ธ MTU เนื่องจากไม่สามารถทำงานได้อย่างถูกต้องเหนืออุโมงค์ SSH หากมีข้อสงสัยเริ่มต้นด้วยค่า MTU ต่ำเช่น 1280 (MTU ขั้นต่ำที่อนุญาตสำหรับ IPv6)
ip
คำสั่งดังนั้นตั้งค่าที่อยู่ ip ด้วย sudo ifconfig tun0 inet6 fec0:1::2/112 up
และตั้งค่าเส้นทางด้วย sudo route add -inet6 -mtu 1280 default fec0:1::1