ฉันมีเซิร์ฟเวอร์ที่มีที่อยู่ IPv4 และซับเน็ต IPv6 /64 (สมมติว่า 2544:db8::/64
) ทั้งแบบสาธารณะ เซิร์ฟเวอร์มีที่อยู่ IPv6 ดังต่อไปนี้: 2544:db8::1/64
. เกตเวย์คือ fe80::1
(ซึ่งทำให้เกิดปัญหากับ docker/podman เนื่องจากไม่ได้อยู่ใน subnet เดียวกัน)
เป้าหมายของฉันคือสร้างคอนเทนเนอร์ docker/podman (เช่น เซิร์ฟเวอร์ WWW) ด้วย IPv6 สาธารณะของตัวเอง (สมมติว่า 2544:db8::2/64
). จากความเข้าใจของฉัน การตั้งค่าดังกล่าวต้องการเครือข่าย macvlan ดังนั้นการตั้งค่าจะมีลักษณะดังนี้:
ฉันจัดการเพื่อเติมเต็มการตั้งค่านี้บางส่วนโดยใช้เครือข่ายบริดจ์และคำสั่งต่อไปนี้:
เครือข่าย sudo podman สร้าง --subnet 2001:db8::/64 --ipv6 mynet
คอนเทนเนอร์ภายในเครือข่ายนี้สามารถเข้าถึงได้จากอินเทอร์เน็ตผ่าน IP ที่ถูกต้อง (2544:db8::2
) แต่ IP สาธารณะ (สำหรับ http, ping เป็นต้น) นั้นผิด - มันคือ 2544:db8::1
ซึ่งเป็นที่เข้าใจได้โดยสิ้นเชิงเมื่อใช้เครือข่ายบริดจ์
สิ่งต่าง ๆ ซับซ้อนขึ้นเมื่อฉันลองใช้ macvlan ปัญหาแรกคือเกตเวย์ที่ต้องตั้งค่าเป็น fe80::1
. นักเทียบท่า
ปฏิเสธที่จะสร้างเครือข่ายดังกล่าวโดยมีข้อผิดพลาด "ไม่มีซับเน็ตที่ตรงกันสำหรับเกตเวย์ fe80::1" พ็อดแมน
สร้างเครือข่ายสำเร็จโดยใช้คำสั่งต่อไปนี้:
เครือข่าย sudo podman สร้าง -d macvlan --subnet 2001:db8::/64 --gateway fe80::1 --ipv6 -o parent=eth0 mynet
น่าเสียดายที่คอนเทนเนอร์ภายในเครือข่ายนี้ไม่มีการเชื่อมต่อในทุกทิศทาง แม้ว่าจะมีการระบุ IP และเกตเวย์ที่ถูกต้องก็ตาม
เซิร์ฟเวอร์กำลังทำงานบน Ubuntu โดยเปิดใช้งานการกำหนดเส้นทาง IP ในเคอร์เนล
ความคิดใด ๆ ว่าการตั้งค่านี้สามารถทำได้จะได้รับการชื่นชมอย่างมาก ขอบคุณ.