การตัดการเชื่อมต่อเป็นระยะเมื่อใช้ OpenVPN ผ่านช่องทาง SSH ปัญหา iptables ที่เป็นไปได้?


1

ฉันเพิ่งตั้งเซิร์ฟเวอร์ Debian Wheezy กับ OpenVPN เพื่อช่วยเพื่อนในพื้นที่ที่การเซ็นเซอร์อินเทอร์เน็ตเป็นปัญหา (รวมถึงการบล็อกการรับส่งข้อมูล VPN โดยทั่วไป) เพื่อเอาชนะสิ่งนี้ลูกค้าต้องสร้างอุโมงค์ SSH ไปยังเซิร์ฟเวอร์ก่อนจากนั้นเชื่อมต่อกับ VPN ที่อยู่เหนือนั้น

เซิร์ฟเวอร์เปิดพอร์ต SSH 40001 และพอร์ต 40002 สำหรับเซิร์ฟเวอร์ OpenVPN ที่มีโปรโตคอล TCP ดูเหมือนว่าทั้งสองอย่างนี้จะถูกกำหนดค่าอย่างถูกต้องบนเราเตอร์

ฉันให้สคริปท์แก่ลูกค้าของฉันซึ่งจะติดตาม localhost ของพวกเขา: 8080 ถึง myserver: 40001 จากนั้นเชื่อมต่อกับ VPN ไคลเอ็นต์การกำหนดค่า OpenVPN ของพวกเขามีการตั้งค่า 'ระยะไกล' เป็น 'localhost 8080' ดังนั้นการเชื่อมต่อ VPN จะถูกส่งไปยังอุโมงค์ SSH นี้

ปัญหาของฉันคืออุโมงค์นี้ดูเหมือนว่าจะทำงานบางครั้ง (ดูเหมือนจะสุ่มเวลา) แต่มักจะล้มเหลวในการเชื่อมต่อ ฉันเคยเห็นมันทำงานพร้อมกันในคอมพิวเตอร์บางเครื่อง (ของตัวเองส่วนใหญ่) แต่ไม่ใช่คนอื่น ๆ เมื่อล้มเหลวไคลเอนต์จะเชื่อมต่อกับ VPN แต่จะไม่สามารถเข้าถึงอินเทอร์เน็ตและหลังจากนั้นประมาณ 30-40 วินาทีกระบวนการอุโมงค์ SSH ก็จะสิ้นสุดเพียงแค่ (การเปิดอุโมงค์ด้วยตนเองให้ผลเท่านั้น "ข้อผิดพลาดการเขียน: ท่อแตก" เมื่อมันตาย) ฉันไม่พบสิ่งใด ๆ ในบันทึกของเซิร์ฟเวอร์หรือไคลเอนต์เพื่อแนะนำว่าทำไมสิ่งนี้ถึงเกิดขึ้นหรือสิ่งที่กำลังฆ่าอุโมงค์

ฉันรู้ว่ามันไม่ใช่ความผิดของการเชื่อมต่อ VPN เพราะถ้าฉันเปลี่ยน IP ระยะไกลจาก localhost: 8080 เป็นที่อยู่สาธารณะจริงและพอร์ต OpenVPN ของเซิร์ฟเวอร์ของฉันมันจะทำงานได้อย่างถูกต้องสม่ำเสมอ

ความสงสัยของฉันคือกฎ iptables ของฉันนั้นรองรับการเชื่อมต่อขาเข้ากับ VPN โดยตรง แต่การเชื่อมต่อกับ VPN ที่มาจากภายในเซิร์ฟเวอร์ตัวเอง (เนื่องจากอุโมงค์ SSH) ได้รับการปฏิบัติแตกต่างกัน อย่างไรก็ตามหากเป็นกรณีนี้ฉันไม่เห็นว่าทำไมมันจึงใช้ได้เฉพาะบางครั้งเท่านั้น มีอะไรอีกที่ทำให้การเชื่อมต่อเหล่านี้ลดลง ฉันไม่พบสิ่งใดที่เกี่ยวข้องใน /var/log/auth.log, /etc/openvpn/openvpn.log หรือบันทึกลูกค้าใด ๆ

/etc/iptables/rules.v4 ของฉันเป็นดังนี้:

*nat
:PREROUTING ACCEPT [211:13875]
:INPUT ACCEPT [3:371]
:OUTPUT ACCEPT [5:348]
:POSTROUTING ACCEPT [5:348]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [7937:9042429]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10987:15593548]
:fail2ban-ssh - [0:0]
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A INPUT -p tcp -d localhost --destination-port 40001 -j ACCEPT
COMMIT

แก้ไข: ฉันพบสิ่งที่ทำให้เกิดปัญหา แต่ฉันยังไม่ทราบวิธีการแก้ไข เมื่อไคลเอนต์ใช้ VPN การรับส่งข้อมูลทั้งหมดรวมถึงอุโมงค์ SSH นั้นจะถูกส่งไป นี่เป็นวงกลมแน่นอนและอุโมงค์ล่ม ฉันแค่ต้องแยกอุโมงค์ SSH ออกจากการกำหนดเส้นทางของ OpenVPN อย่างใด ...


ทำไมคุณใช้ OpenVPN ผ่าน SSH ข้อดีอย่างหนึ่งของ OpenVPN ก็คือดูเหมือนว่าปริมาณการใช้ SSL ปกติ (คิดว่า HTTPS) เพียงแค่ติดตั้งเซิร์ฟเวอร์ของคุณเพื่อใช้ TCP แทน UDP และฟังพอร์ต 443 แทนพอร์ตเริ่มต้น ไม่มีเหตุผลที่จะทำทั้ง SSH และ OpenVPN
หนัก

1
เห็นได้ชัดว่าไม่มาก (ดูตัวอย่างที่นี่หรือที่นี่ ) ตัวอย่างเช่น ISP ของจีนใช้การตรวจสอบแพ็คเก็ตลึกเพื่อแยกการรับส่งข้อมูล OpenVPN จาก SSL จริงและจะบล็อก นั่นเป็นเหตุผลที่ฉันใช้มันผ่าน SSH
user3145309

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