รีเลย์ Tor กับเซิร์ฟเวอร์ VPN: ทำไมแทนกันไม่ได้
พอร์ตที่เปิดอยู่บนรีเลย์ Tor ไม่ใช่จุดปลายทางของ VPN ตรวจสอบก่อนว่าพอร์ตให้บริการอะไร บทบาทของรีเลย์ ขอบเขตของตัวรับฟัง SOCKS และโปรไฟล์
คุณมีที่อยู่ พอร์ตตอบสนอง และไคลเอนต์ยอมรับโดยไม่มีข้อร้องเรียนใด ๆ ไม่มีสิ่งใดในนั้นทำให้รีเลย์ Tor เป็นจุดปลายทางของ VPN และความผิดพลาดนี้มีราคาแพงเพราะโปรไฟล์นำเข้าได้เรียบร้อยแล้วจึงล้มเหลวในภายหลังตอนจับมือ ผมใช้การตรวจสอบสี่ข้อด้านล่างตามลำดับ แต่ละข้อมีเงื่อนไขให้หยุด และการหยุดแต่เนิ่น ๆ คือประเด็นสำคัญ ถ้าการตรวจสอบข้อแรกล้มเหลว ข้อที่เหลือช่วยคุณไม่ได้
ตรวจสอบว่าพอร์ตให้บริการอะไรจริง ๆ
พอร์ตที่เปิดอยู่พิสูจน์ว่ามีตัวรับฟังเท่านั้น ORPort ของรีเลย์พูดคุยด้วยเซลล์ของ Tor เองหลังจากจับมือ TLS ดังนั้นการทดสอบ TLS ที่สำเร็จจึงแทบไม่บอกอะไรเลยว่ามีการยอมรับโปรโตคอล VPN ที่นั่นหรือไม่
nc -vz 203.0.113.20 443
openssl s_client -connect 203.0.113.20:443 -brief < /dev/null
อ่านใบรับรอง ไม่ใช่แค่ความจริงที่ว่ามีอยู่ รีเลย์นำเสนอใบรับรองที่ลงนามเองด้วยชื่อที่ตั้งใจให้ไม่สะดุดตา เพราะการรับส่งของรีเลย์ต้องดูเหมือน HTTPS ทั่วไป ส่วนใบรับรองของเซิร์ฟเวอร์ VPN มีชื่อที่โปรไฟล์ของคุณคาดหวัง ถ้าอีกฝ่ายไม่ตอบแพ็กเก็ตแรกของโปรโตคอล VPN เลย การแก้ไขโปรไฟล์ไม่ว่าจะมากเทใดก็ไม่เปลี่ยนผลลัพธ์
หยุดตรงนี้ถ้าที่อยู่ไม่ทำให้การจับมือที่ไคลเอนต์ของคุณส่งไปสำเร็จ นั่นคือคำตอบของโปรโตคอล ไม่ใช่ปัญหาการตั้งค่า และเป็นสาเหตุที่พบบ่อยที่สุดที่โปรไฟล์ที่นำเข้าแล้วค้างอยู่ที่ 'connecting' ตลอดไป
ตรวจสอบบทบาทของรีเลย์ ไม่ใช่ขนาดของเครือข่าย
บทบาทของรีเลย์ทำงานต่างกัน guard คือการกระโดดครั้งแรกสำหรับไคลเอนต์ รีเลย์กลางส่งต่อวงจรระหว่างรีเลย์อื่น exit คือบทบาทที่แตะปลายทาง และสะพานคือจุดเข้าที่ไม่เปิดเผยซึ่งแจกจ่ายผ่าน BridgeDB อภิธานศัพท์ของ Tor แยกคำจำกัดความเหล่านี้ไว้ และการเข้าถึงได้เป็นส่วนหนึ่งของทุกบทบาท ขณะที่การอนุญาตให้บริการไคลเอนต์ตามอำเภอใจไม่เป็นส่วนหนึ่งของบทบาทใดเลย
นโยบาย exit น่าอ่านเพราะเป็นส่วนเดียวที่คล้ายกฎการส่งต่อ และมันควบคุมปลายทางที่ exit จะอนุญาตให้ออกไป ไม่ใช่ไคลเอนต์ที่ได้รับอนุญาตให้เข้ามา นโยบาย exit ที่เข้มงวดซึ่งบล็อกพอร์ต 25 บอกอะไรบางอย่างเกี่ยวกับการควบคุมการใช้งานในทางที่ผิดขาออก ไม่ใช่เกี่ยวกับว่าคุณชี้ไคลเอนต์ OpenVPN ไปที่เครื่องนั้นได้หรือไม่
หยุดถ้าคุณให้เหตุผลจากชื่อเสียง เพราะรีเลย์ส่งต่อทราฟฟิก ที่อยู่จึงต้องยอมรับของคุณ ซึ่งไม่ถูกต้อง Tor เลือกเส้นทางผ่านฉันทามติและโปรโตคอลของตัวเอง ไคลเอนต์ VPN ไม่ใช่ผู้เข้าร่วมและไม่มีวงจรให้เข้าร่วม
ตรวจสอบว่าตัวรับฟัง SOCKS เป็นแบบท้องถิ่นหรือสาธารณะ
ไคลเอนต์ของ Tor เปิดเผยอินเทอร์เฟซ SOCKS ให้แอปพลิเคชันบนเครื่องเดียวกัน โดยค่าเริ่มต้นอยู่บน loopback ตัวรับฟังนั้นคือความสะดวกในเครื่อง ไม่ใช่บริการที่รีเลย์เสนอให้อินเทอร์เน็ต และการปฏิบัติต่อมันเป็นพร็อกซีสาธารณะคือวิธีที่ผู้คนลงเอยด้วยการรันรีเลย์แบบเปิดที่พวกเขาไม่ได้ตั้งใจ
ss -ltnp | grep 9050
curl --socks5-hostname 127.0.0.1:9050 https://check.torproject.org
ที่อยู่ผูกคือเบาะแส SocksPort บน 127.0.0.1:9050 กำลังทำหน้าที่ของมัน ส่วนตัวที่รับฟังบน 0.0.0.0 และเข้าถึงได้จากภายนอกคือพร็อกซีเปิด และการควบคุมนโยบายการเข้าถึงของ Tor เองมีอยู่ก็เพราะการเปิดเผยนั้นเป็นปัญหาไม่ใช่คุณสมบัติ
สำหรับแอปพลิเคชันที่ต้องการ Tor ให้ชี้ไปที่พอร์ต loopback และปล่อยให้ Tor แก้ชื่อ ซึ่งเป็นสิ่งที่รูปแบบ socks5h ข้างต้นทำ อย่าแทนที่ที่อยู่รีเลย์ด้วยพอร์ตนั้น รีเลย์ไม่ได้เสนออินเทอร์เฟซที่แอปพลิเคชันของคุณขอ
ตรวจสอบว่าโปรไฟล์ VPN ตรงกับจุดปลายทางจริง
โปรไฟล์ VPN คือชุดของความคาดหวัง OpenVPN ต้องมีใบรับรองเซิร์ฟเวอร์หรือ CA ใบรับรองไคลเอนต์และกุญแจ และโดยปกติต้องมีกุญแจ TLS ส่วน WireGuard ต้องมีกุญแจสาธารณะของอีกฝ่าย จุดปลายทาง และ IP ที่อนุญาต ไม่มีสิ่งใดในนั้นที่ได้มาจากที่อยู่และพอร์ตที่เปิดอยู่ นี่คือเหตุผลที่โปรไฟล์ที่สร้างแบบนั้นล้มเหลวในการแลกเปลี่ยนครั้งแรก ไม่ใช่ตอนเชื่อมต่อ
เมื่อมีคนส่งโปรไฟล์ให้คุณ ให้ตรวจสอบกับจุดปลายทางที่คุณควบคุมหรือผู้ให้บริการที่คุณระบุได้
wg show
openvpn --config client.ovpn --verb 4
ในบันทึกของ OpenVPN ข้อผิดพลาดการเจรจา TLS ระบุความไม่ตรงกันโดยตรง ใน wg show อีกฝ่ายที่ไม่มีบรรทัดจับมือไม่เคยทำสำเร็จเลย ทั้งสองให้ข้อมูลมากกว่าตัวบ่งชี้ที่หมุนของไคลเอนต์ และทั้งสองชี้ไปที่วัสดุกุญแจหรือโปรโตคอล ไม่ใช่ Tor
ตรวจสอบว่าคุณต้องการการป้องกันแบบใดจริง ๆ
นี่คือการตรวจสอบที่ตัดสินสถาปัตยกรรม Tor Browser ให้การแยกวงจรและการป้องกันลายนิ้วมือที่ VPN ไม่มี VPN เปลี่ยนที่อยู่ที่ปลายทางเห็นและยืนยันตัวคุณกับผู้ให้บริการ การเลือกระหว่างสองสิ่งนี้เป็นคำถามเรื่องแบบจำลองภัยคุกคาม ไม่ใช่เรื่องความเข้ากันได้ และการผสมทั้งสองเข้าด้วยกันทำให้ได้การตั้งค่าที่ดูเป็นส่วนตัวแต่ไม่ใช่
การต่อแบบลูกโซ่มีลำดับ VPN ที่บรรทุกทราฟฟิก Tor เป็นการจัดวางที่รองรับ เพราะไคลเอนต์ของ Tor ต้องการเพียง TCP ขาออก ไคลเอนต์ VPN ที่ถูกสร้างอุโมงค์ภายใน Tor ไม่ใช่สิ่งเดียวกันและไม่ใช่สิ่งที่ไคลเอนต์ Tor ใช้งานจริง ดังนั้นอย่าวางแผนบนพื้นฐานนั้น
ก่อนนำเข้าอะไรก็ตาม ให้ยืนยันทั้งสี่ข้อ
- พอร์ตทำให้การจับมือของโปรโตคอลคุณสำเร็จ ไม่ใช่เพียงการเชื่อมต่อ TCP
- คุณรู้บทบาทของโฮสต์และไม่ถือว่าการส่งต่อคือการอนุญาต
- ตัวรับฟัง SOCKS ที่คุณใช้เป็น loopback และเป็นของคุณ ไม่ใช่พอร์ตสาธารณะบนรีเลย์ของคนอื่น
- กุญแจหรือใบรับรองของโปรไฟล์เป็นของจุดปลายทางที่คุณเชื่อมต่อ