ฉันมี IP บล็อกจาก RIR
ฉันใช้ผู้ให้บริการสองรายเพื่อสร้าง anycast เป็น IP "บางส่วน" ฉันจะเรียกสิ่งนี้ว่า A และ B
ฉันต้องการส่งต่อไปยังผู้ให้บริการรายอื่นเมื่อ IP นั้นไม่ได้อยู่ที่ตำแหน่งนั้น ฉันใช้เซิร์ฟเวอร์ Ubuntu สองตัวเพื่อประกาศและส่งต่อแพ็กเก็ต BGP และเครื่อง pfSense ระหว่างผู้ให้บริการ A และปลายทางแบบ unicasted
Anycasted IP ใช้งานได้ดี อย่างไรก็ตาม หากไคลเอ็นต์ใกล้กับผู้ให้บริการ B แพ็กเก็ตนั้นไปไม่ถึงปลายทาง
นี่คือวิธีการกำหนดค่า:
ลูกค้า --> ผู้ให้บริการ B -(GRE, เส้นทางคงที่)-> ผู้ให้บริการ A -(GRE, เส้นทางคงที่)-> pfSense --> จุดสิ้นสุด
^ นี่คือปัญหา
ปัญหาที่แท้จริงคือแพ็กเก็ตไม่ได้ส่งต่อจากผู้ให้บริการ A ไปยัง pfSense ฉันสามารถดูแพ็กเก็ต ICMP ได้ที่เซิร์ฟเวอร์ผู้ให้บริการ tcpdump แต่ไม่ใช่ที่ pfSense tcpdump ฉันอนุญาตไฟร์วอลล์และไม่เห็นบันทึกที่ถูกบล็อก การรับส่งข้อมูลปลายทางทั้งหมดผ่านอุโมงค์ GRE ที่อยู่ระหว่าง pfSense และผู้ให้บริการ A
หากฉันทำการ ping โดยใช้ Provider B Server นั่นก็ใช้งานไม่ได้เช่นกัน อย่างไรก็ตาม หากฉันทำการ ping ด้วย GRE Interface IP ระหว่างผู้ให้บริการ A มันใช้งานได้แม้ว่าจะไม่มี NAT ก็ตาม
แน่นอน ฉันสามารถ ping ไปยังปลายทางได้เมื่อฉันทำการ ping ใกล้กับผู้ให้บริการ A
อะไรใช้งานได้ (ตัวมันเองหมายถึงเซิร์ฟเวอร์ที่ผู้ให้บริการ):
ลูกค้า (หรือตัวมันเอง) -> ผู้ให้บริการ A หรือ B -(GRE, Static Route)-> pfSense -(GRE, Static Route)-> Anycast IP
ลูกค้า (หรือตัวมันเอง) -> ผู้ให้บริการ A -(GRE, Static Route)-> pfSense -(GRE, Static Route)-> Unicast IP ที่ใกล้กับผู้ให้บริการ A
ผู้ให้บริการ B -(GRE, Static Route, GRE IP หรือ IP เครือข่ายย่อยเดียวกัน ยกเว้น Anycasted)-> pfSense -(GRE, Static Route)-> Unicast IP ที่ใกล้กับผู้ให้บริการ A
Unicast IP ที่ใกล้กับผู้ให้บริการ A --> pfSense -(GRE, Static Route)-> ผู้ให้บริการ A
ผู้ให้บริการ B --> เซิร์ฟเวอร์ใกล้กับผู้ให้บริการ B
อะไรไม่ทำงาน:
ลูกค้า (หรือตัวมันเอง) --> ผู้ให้บริการ B -(GRE, เส้นทางคงที่)-> ผู้ให้บริการ A -(GRE, เส้นทางคงที่, การจราจรหยุดที่นี่)-> pfSense -(GRE, เส้นทางคงที่)-> Unicast IP ที่ใกล้กับผู้ให้บริการ A
Unicast IP ที่ใกล้กับผู้ให้บริการ A --> pfSense -(GRE, เส้นทางคงที่)-> ผู้ให้บริการ B --> เซิร์ฟเวอร์ใกล้กับผู้ให้บริการ B --> ผู้ให้บริการ B --> ผู้ให้บริการ A -(การจราจรหยุดที่นี่)-> pfSense --> จุดสิ้นสุด
ที่นี่คือ sysctl -p
ผล:
ผู้ให้บริการ ก
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.accept_source_route = 1
net.ipv6.conf.all.accept_source_route = 1
net.ipv6.conf.all.accept_ra = 2
net.core.default_qdisc = ความถี่
net.ipv4.tcp_congestion_control = bbr
ผู้ให้บริการ B
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.accept_source_route = 1
net.ipv6.conf.all.accept_source_route = 1
หากต้องการข้อมูลเพิ่มเติม โปรดแจ้งให้เราทราบ ขอบคุณ.