ลองพิจารณาสถานการณ์ต่อไปนี้:
- VPS ของคุณมีอินเตอร์เฟซอีเธอร์เน็ตเดียวกำหนดค่าด้วยที่อยู่ IP 4.3.2.1/24;
- VPS ของคุณสามารถเข้าถึงอินเทอร์เน็ตผ่านเกตเวย์เริ่มต้น 4.3.2.254
- VPS ของคุณยังไม่ได้เปิดใช้งานการเชื่อมต่อ OpenVPN ดังนั้นจึงไม่มีอินเตอร์เฟสอินเตอร์เฟส tun ที่ใช้งานอยู่
ในสถานการณ์ดังกล่าวจากเครื่องของคุณ (สมมติว่าเครื่องของคุณคือ 9.8.7.6/24 พร้อม def-gw 9.8.7.254) คุณสามารถสร้างการเชื่อมต่อ SSH เป็น 4.3.2.1 ได้สำเร็จ ดังนั้นทั้งโฮสต์ 4.3.2.1 และ 9.8.7.6 สามารถเข้าถึงซึ่งกันและกันได้สำเร็จ
ตอนนี้ด้วยการเชื่อมต่อ SSH ที่จัดตั้งขึ้นมาสมมุติว่า:
- คุณเรียกใช้การเชื่อมต่อ OpenVPN จาก VPS 4.3.2.1 ของคุณ
- ดังนั้นอินเทอร์เฟซ tun0 ใหม่จะได้รับการกำหนดค่าแบบ Dinamically (สมมติว่ามันจะถูกกำหนด 10.10.10.2 IP พร้อม 10.10.10.1 PTP)
ที่เวทีนี้:
หากไม่มีการส่งเส้นทางจากเซิร์ฟเวอร์ OpenVPN ระยะไกลไปยัง VPS ในพื้นที่ของคุณจะไม่มีการเปลี่ยนแปลงใด ๆ ในแง่ของการกำหนดเส้นทางและการเชื่อมต่อ SSH ของคุณจะอยู่รอดได้โดยไม่มีปัญหาเลย ในกรณีนี้การรับส่งข้อมูลภายใน VPN เพียงอย่างเดียวคือสิ่งที่ส่งไปยังเซิร์ฟเวอร์ OpenVPN ระยะไกล (10.10.10.1)
ถ้า OpenVPN เซิร์ฟเวอร์ระยะไกลจะผลักดันกลับเส้นทางบางส่วนและโดยเฉพาะถ้า VPS เริ่มต้นเกตเวย์จะถูกแทนที่ด้วย 10.10.10.1 (ระยะไกลปลายทาง OpenVPN) แล้วคุณจะมีปัญหา ในกรณีนี้คุณกำลังทำการรับส่งข้อมูล IP ทั้งหมดที่ส่งออก (ยกเว้น OpenVPN เอง) ภายใน VPN
ในกรณีที่สองนี้ (แทนที่ def-gw ทันทีหลังจากสร้างการเชื่อมต่อ VPN) การเชื่อมต่อ SSH ก่อนหน้าของคุณจะ "หยุด" เนื่องจากการกำหนดเส้นทางแบบอสมมาตร:
- การรับส่งข้อมูลจากเครื่องของคุณ (9.8.7.6) ไปยัง VPS (4.3.2.1) จะไหลผ่านเส้นทางก่อนหน้าไม่เคยเปลี่ยนเส้นทาง
- การรับส่งข้อมูลจาก VPS (4.3.2.1) ไปยังเครื่องของคุณ (9.8.7.6):
- หากไม่มี VPN (ตอนแรก) จะถูกส่งผ่านเกตเวย์ 4.3.2.254
- หลังจากการสร้างลิงก์ VPN พร้อมการเปลี่ยน def-gw ที่เกี่ยวข้องแล้วจะถูกส่งผ่าน VPN (10.10.10.1)
กล่าวอีกนัยหนึ่ง: ทันทีที่มีการสร้างลิงก์ VPN เส้นทางการส่งคืนของคุณจาก VPS ไปยังเครื่องของคุณกำลังจะเปลี่ยนและ ... มันไม่ได้เป็นสิ่งที่ดี เส้นทางและเพียงวางแพ็กเก็ต)
นอกจากนี้มีโอกาสสูงที่เซิร์ฟเวอร์ OpenVPN ระยะไกลของคุณทำหน้าที่เป็น NAT-box: ทราฟฟิกทั้งหมดที่มาจาก VPN จะถูก NATted ด้วย IP-Address สาธารณะของ OpenVPN Server ระยะไกล หากสิ่งนี้เป็นจริงมากกว่าสิ่งไม่มีอีกแล้ว ... "ไม่ดี" แต่แน่นอนว่า "ไม่ดี" สำหรับการเชื่อมต่อ SSH ของคุณ: ส่งคืนการรับส่งข้อมูลนอกเหนือจากการกลับไปตามเส้นทางอื่นกำลังกลับมาที่เครื่องของคุณด้วย IP ต้นทางอื่น (หนึ่งในอินเตอร์เฟสสาธารณะของเซิร์ฟเวอร์ VPN)
วิธีแก้ปัญหานี้
ค่อนข้างง่ายอย่างแน่นอน
เพียงแค่สั่งให้เซิร์ฟเวอร์ VPS ของคุณไม่กำหนดเส้นทางการรับส่งข้อมูลไปยังเครื่องของคุณตาม VPN แต่ให้ใช้เส้นทางก่อนหน้าแทน มันควรจะง่ายพอ ๆ กับการเพิ่มก่อนเริ่ม OpenVPN:
route add -host 9.8.7.6 gw 4.3.2.254
ที่อยู่:
- 9.8.7.6 เป็นที่อยู่ IP สาธารณะของเครื่องของคุณ
- 4.3.2.254 เป็นเกตเวย์เริ่มต้นดั้งเดิมของ VPS ของคุณ
ป.ล. : โดยการให้คำถามที่ละเอียดมากขึ้นคุณจะได้คำตอบที่รวดเร็วกว่า :-)