คำถามหลักคือวิธีเชื่อมต่อกับเซิร์ฟเวอร์ VPN ผ่านไคลเอนต์ VPN ซึ่งเป็นอินสแตนซ์ NAT ให้ฉันอธิบายเกี่ยวกับเรื่องนี้
ฉากที่ 1:
ฉันมีกลุ่มอินสแตนซ์บริการ (ubuntu 18.04) ชื่อ A
หนึ่งอินสแตนซ์ที่ฉันใช้สำหรับอินสแตนซ์ NAT ชื่อ B
ทั้งกลุ่ม A และอินสแตนซ์ B อยู่ใน vpc เดียวกัน A ไม่มี ip สาธารณะ B มี pulibc ip เดียว และที่ฉันทำคือใช้ B เป็น NAT และตั้งค่า SNAT ใน vpc เพื่อให้กลุ่ม A สามารถเข้าถึงอินเทอร์เน็ตโดย B
แบบนี้:
และสำหรับกลุ่ม A คือ (10.0.0.0/16) ฉันวาดเพียงสองตัวอย่างในกลุ่ม A แต่ก็มีมากมาย
ดังนั้นในบริการของฉัน B ฉันเพิ่มกฎ iptables: iptables -A โพสต์ -t แนท -s 10.0.0.0/16 -j MASQUERADE
มันได้ผล
# แสดงเส้นทาง ip
ค่าเริ่มต้นผ่าน 10.0.1.253 dev eth0 proto dhcp src 10.0.1.157 เมตริก 100
10.0.1.0/24 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.1.157
10.0.1.253 dev eth0 proto dhcp ขอบเขตลิงก์ src 10.0.1.157 เมตริก 100
ฉากที่ 2:
เช่นเดียวกับฉากด้านบน แต่ตอนนี้ฉันไม่สามารถใช้ ip สาธารณะของ B (X) เพื่อเข้าถึงอินเทอร์เน็ตได้ แทนที่ด้วยการเชื่อมต่อ VPN (openvpn)
ซึ่งเป็น:
โปรดทราบว่าบริการ C เป็นอินสแตนซ์บริการ VPN ซึ่งฉันไม่สามารถควบคุมได้
และฉันมีไฟล์กำหนดค่าไคลเอนต์ซึ่งสามารถเชื่อมต่อจาก B ถึง C และแน่นอน การเชื่อมต่อถูกสร้างขึ้น. ตอนนี้ B สามารถเล่นอินเทอร์เน็ตผ่าน C และตอนนี้ในบริการ B ของฉัน ฉันมี
# แสดงเส้นทาง ip
0.0.0.0/1 ผ่าน 10.8.0.1 dev tun0
ค่าเริ่มต้นผ่าน 10.0.1.253 dev eth0 proto dhcp src 10.0.1.157 เมตริก 100
10.0.1.0/24 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.1.157
10.0.1.253 dev eth0 proto dhcp ขอบเขตลิงก์ src 10.0.1.157 เมตริก 100
10.0.2.0/24 ผ่าน 10.0.1.157 dev eth0
10.0.3.0/24 ผ่าน 10.0.1.157 dev eth0
10.8.0.0/24 dev tun0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.8.0.2
{ที่อยู่ IP สาธารณะของ C ที่นี่} ผ่าน 10.0.1.253 dev eth0
128.0.0.0/1 ผ่าน 10.8.0.1 dev tun0
ตกลง ฉันหวังว่าคำอธิบายของฉันจะชัดเจน
ดังนั้น ในกรณีนี้ ฉันคิดว่าสิ่งที่ฉันต้องทำคือจัดการกับบริการ B ทั้งหมด
ตัวอย่างเช่น B ฉันส่งต่อการรับส่งข้อมูลทั้งหมดจาก eth0 ไปยัง tun0 ดังนั้นการรับส่งข้อมูลจาก eth0 จะส่งต่อไปยัง tun0 และกลุ่ม A ควรมีอินเทอร์เน็ตผ่าน B:
iptables -A FORWARD -i eth0 -o tun0 -j ยอมรับ
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED -j ยอมรับ
iptables -t nat -A โพสต์ -o tun0 -j MASQUERADE
แต่ไม่ได้ไม่ทำงานอย่างที่ฉันคาดไว้
จากนั้นฉันจะดีบักโดยการวิเคราะห์ทราฟฟิกใน B อย่างคร่าว ๆ ฉันได้รับข้อมูลว่า B อาจได้รับการเข้าชมจาก A แต่ไม่มีการตอบกลับ