การเชื่อมต่อ OpenVPN ผ่านช่องทาง SSH


1

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

ฉันคิดว่าอาจเป็นตัวเลือกในการใช้อุโมงค์ SSH ไปยังเซิร์ฟเวอร์อื่นและเพื่อเชื่อมต่อ VPN ผ่านสิ่งนั้นเพื่อป้องกันการรับส่งข้อมูล VPN ด้วยวิธีนี้ก่อนการรับส่งข้อมูลจะอ่านเป็นการเชื่อมต่อ SSH กับผู้ให้บริการ

ดังนั้นฉันเชื่อมต่อกับเซิร์ฟเวอร์เช่นนี้:

ssh peter@some-server -L 4444:vpn-server:1194 -N

แล้วเพิ่มสิ่งนี้ในการกำหนดค่าไคลเอนต์ openvpn ของฉัน:

remote localhost 1194

น่าเศร้านี่มันใช้ไม่ได้ การเชื่อมต่อรับรองความถูกต้อง แต่หลังจากนั้นฉันไม่สามารถเชื่อมต่อกับด้านในของ VPN ( ping 10.8.0.1) หรือภายนอก ( ping 8.8.8.8) ควรทำงานนี้หรือฉันเข้าใจผิดบางอย่าง?

มีกฎ iptables nat บ้างไหมที่ฉันควรเพิ่ม? กฎ nat เดียวที่ฉันเพิ่มเข้าไปคือ:

-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

เซิร์ฟเวอร์ VPN หายไปเนื่องจากเซิร์ฟเวอร์ของรัฐบาลจีนระบุว่าคุณกำลังใช้ VPN คำถามคือคุณต้องการ VPN นี้จริงๆหรือ ทั้งๆที่มีความท้าทายทางเทคนิคมีเหตุผลเพียงพอที่จะทำสิ่งที่ผิดกฎหมายหรือไม่? หากพวกเขาติดตามการใช้งาน VPN และมาหาคุณพวกเขาสามารถจับกุมคุณในการใช้ VPN จีนไม่ใช่ประเทศต่างประเทศที่คุณต้องการถูกจับกุม พวกเขาสามารถเข้าคุกคุณได้หลายเดือนโดยแทบไม่มีอะไร มันจะคุ้มหรือไม่
mguima

@mguima ฉันคิดว่าคุณเคยดูหนังมากเกินไป
ปีเตอร์

อาจจะ. โปรดจำไว้ว่าพวกเขาไม่ใช่ชาวตะวันตก มันเชื่อมโยงโลกอีกประเภทหนึ่ง
mguima

คำตอบ:


2

วิธีการง่าย ๆ ในการตั้งค่าการเชื่อมต่อ VPN ของคุณผ่านอุโมงค์ SSH จะไม่ทำงาน ปัญหาแรก: คุณเพียงแค่ทำการเชื่อมต่อกับเซิร์ฟเวอร์ VPN เท่านั้นซึ่งไม่อนุญาตให้มีการกำหนดเส้นทางการรับส่งข้อมูลอื่น ๆ ทั้งหมดผ่านเซิร์ฟเวอร์ VPN ผ่านการsshเชื่อมต่อ (ทำให้การเชื่อมต่อแย่ลง) การแก้ไขสำหรับสิ่งนี้คือการใช้พร็อกซี SOCKS แบบไดนามิก [5] และแจ้งให้ OpenVPN เชื่อมต่อผ่านพร็อกซีนั้น เพิ่มลงในไฟล์กำหนดค่า OpenVPN ของคุณ:

socks-proxy localhost 6886
socks-proxy-retry

จากนั้นเริ่มsshเซสชันของคุณด้วยพร็อกซี SOCKS แบบไดนามิก:

ssh -D 6886 -N REMOTE

จากนั้นคุณสามารถเริ่มการเชื่อมต่อ OpenVPN ของคุณ อย่างไรก็ตามนี่ยังมีอีกหนึ่งความล้มเหลวอย่างน้อยสมมติว่าคุณต้องการเปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมดผ่าน VPN (คำสั่ง OpenVPN redirect-gateway def1) เพื่อให้สามารถใช้งานได้คุณต้องบำรุงรักษาเส้นทางไปยังจุดสิ้นสุดพร็อกซี SOCKS ที่ไม่ได้ถูกปกปิดโดยเส้นทางที่เพิ่มโดยไคลเอนต์ OpenVPN หากต้องการทำสิ่งนี้ให้เพิ่มคำสั่งอื่นในการกำหนดค่า OpenVPN ของคุณที่มีลักษณะดังนี้:

route REMOTE-IP 255.255.255.255 net_gateway default

คุณอาจจะสามารถที่จะใช้ REMOTE ชื่อโฮสต์ในคำสั่งว่า แต่คุณอาจต้องแก้ไขไปยังที่อยู่ IP ด้วยตนเอง

อย่างน้อยก็สำหรับการรับส่งข้อมูล ipv4 การค้นหา google อย่างรวดเร็วจะเปิดโพสต์บล็อกนี้ซึ่งทำสิ่งเดียวกันโดยมีคำอธิบายที่ดีว่าเกิดอะไรขึ้น แต่ดูเหมือนจะซับซ้อนกว่าในการแก้ปัญหา (โดยใช้สคริปต์การเชื่อมต่อ)

หรือคุณอาจมองการใช้obfs4proxy(เช่นนี้และสิ่งนี้หรือแพคเกจสำหรับ Ubuntu )


0

ฉันสามารถสร้างการเชื่อมต่อกับ Raspberry Pi ของฉัน (กับ PiVPN) ผ่าน TCP และ VPS ภายนอกได้สำเร็จ จากนั้นฉันก็ทำสิ่งนี้:

อนุญาตให้ส่งต่อสู่สาธารณะบนเซิร์ฟเวอร์ของคุณ (VPS / VPN) เปลี่ยนGatewayPortsเป็นyesหรือเพิ่มถ้ายังไม่มี

/etc/ssh/sshd_config:
GatewayPorts yes

เปลี่ยนproto udpเป็นtcp(เนื่องจาก ssh ใช้โปรโตคอล tcp)

/etc/openvpn/server.conf:
proto tcp

เปลี่ยนproto udpเป็นtcp-client:

openvpn-client.ovpn:
proto tcp-client

ตอนนี้เริ่มต้นการส่งต่อ ssh (0.0.0.0 เพื่ออนุญาตการเชื่อมต่อ IPv4 ทั้งหมด; -N ที่จะไม่เริ่มทุบตีบนเซิร์ฟเวอร์)

ssh -R 0.0.0.0:1194:localhost:1194 user@server -N

คุณควรตรวจสอบว่า VPS / VPN- เซิร์ฟเวอร์ของคุณอนุญาตการเชื่อมต่อและมีการตั้งค่าไฟร์วอลล์ที่ถูกต้อง หากคุณใช้ ufw สำหรับ iptables เพียงทำสิ่งนี้:

ufw allow 1194/tcp
ufw enable

นี่อาจไม่ใช่วิธีที่เร็วที่สุด แต่ใช้งานได้สำหรับฉัน

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