เครือข่ายซ้อนทับฝูงนักเทียบท่าพร้อมการกำหนดเส้นทาง vxlan บน openvpn

ฉันได้ตั้งค่ากลุ่มนักเทียบท่าด้วย 3 โหนด (นักเทียบท่า 18.03) โหนดเหล่านี้ใช้เครือข่ายซ้อนทับเพื่อสื่อสาร

node1:  
  laptop   
  host tun0 172.16.0.6 --> openvpn -> nat gateway
  container n1
    ip = 192.169.1.10  

node2: 
  aws ec2
  host eth2 10.0.30.62
  container n2
    ip = 192.169.1.9

node3:
  aws ec2
  host eth2 10.0.140.122
  container n3
    ip = 192.169.1.12

nat-gateway:
  aws ec2
  tun0 172.16.0.1 --> openvpn --> laptop
  eth0 10.0.30.198

รูปแบบการทำงานบางส่วน:
1. คอนเทนเนอร์สามารถ ping ซึ่งกันและกันโดยใช้ชื่อ (n1, n2, n3)
2. คำสั่ง Docker swarm ใช้งานได้ สามารถใช้บริการต่างๆ ได้

การซ้อนทับใช้งานได้บางส่วน บางโหนดไม่สามารถสื่อสารระหว่างกันได้โดยใช้ tcp/ip หรือ udp ฉันลองการรวมกันของ 3 โหนดด้วย udp และ tcp/ip:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันทำ tcpdump บนเกตเวย์ nat เพื่อตรวจสอบกิจกรรมเครือข่าย vxlan ที่ซ้อนทับ (พอร์ต 4789):

tcpdump -l -n -i eth0 "port 4789"
tcpdump -l -n -i tun0 "port 4789"

จากนั้นฉันลองใช้การสื่อสาร tcp/ip จาก node2 ถึง node3 บน node3: nc -l -s 0.0.0.0 -p 8999 บน node1: telnet 192.169.1.12 8999

Node1 จะพยายามเชื่อมต่อกับ node3 ฉันเห็นแพ็กเก็ตเข้ามาบน nat-gateway ผ่านอินเทอร์เฟซ tun0:

ป้อนคำอธิบายรูปภาพที่นี่

บนอินเทอร์เฟซ nat-gateway eth0:

ป้อนคำอธิบายรูปภาพที่นี่

ดูเหมือนว่า nat-gateway ไม่ได้ส่งการตอบกลับผ่านอินเทอร์เฟซ tun0

iptables กำหนดค่า nat-gateway

ป้อนคำอธิบายรูปภาพที่นี่

การกำหนดเส้นทางของ nat-เกตเวย์

ป้อนคำอธิบายรูปภาพที่นี่

คุณช่วยฉันแก้ปัญหานี้ได้ไหม?


person dwjbosman    schedule 13.04.2018    source แหล่งที่มา


คำตอบ (1)


ฉันสามารถแก้ไขปัญหาได้โดยใช้การกำหนดค่าต่อไปนี้บนเกตเวย์ NAT:

ป้อนคำอธิบายรูปภาพที่นี่

และ

ป้อนคำอธิบายรูปภาพที่นี่

  1. ไม่จำเป็นต้องปลอมแปลง 172.16.0.0/22 ผู้ปฏิบัติงานและผู้จัดการทุกคนจะกำหนดเส้นทางการรับส่งข้อมูลสำหรับ 172.16.0.0/22 ​​ผ่านเกตเวย์ NAT และรู้วิธีส่งแพ็กเก็ตผ่าน tun0
  2. การปลอมตัวของ eth0 นั้นผิด ...

ขณะนี้คอนเทนเนอร์ทั้งหมดสามารถ ping และสร้างการเชื่อมต่อ tcp/ip ระหว่างกันได้

person dwjbosman    schedule 15.04.2018