Score:0

การกำหนดเส้นทางระหว่างการ์ดเครือข่ายสองการ์ด

ธง ua
Adi

ฉันกำลังพยายามกำหนดเส้นทางการรับส่งข้อมูลระหว่างเครือข่ายต่างๆ และได้ทำตามคำแนะนำที่ฉันพบที่นี่: https://devconnected.com/how-to-add-route-on-linux/

นี่คือไดอะแกรมที่ฉันหวังว่าจะอธิบายการจัดการที่ฉันทำงานด้วยอย่างเพียงพอ:

วินโดวส์ 10 อูบุนตู ลินุกซ์
172.31.0.X <----------> 172.31.0.33 (eno1)
                        10.0.40.1 (enp2s0f0) <----------> 10.0.40.10

ฉันมีเส้นทางถาวรที่ตั้งค่าไว้บนพีซี Windows เพื่อกำหนดเส้นทางการรับส่งข้อมูลสำหรับ 10.0.40.0/24 ผ่าน 172.31.0.33

เอาต์พุตการพิมพ์เส้นทาง

เครื่อง Ubuntu ได้รับการตั้งค่าให้กำหนดเส้นทางการรับส่งข้อมูลสำหรับ 10.0.40.0/24 ผ่าน 10.0.40.1

ip r เอาท์พุท

Pinging 10.0.40.10 จากเครื่อง Ubuntu ทำงานตามที่คาดไว้

ถ้าฉัน ping 10.0.40.10 จาก Windows PC ฉันสามารถเห็นข้อความ ICMP มาถึงอินเทอร์เฟซ 172.31.0.33 บนเครื่อง Ubuntu โดยใช้ tcpdump ฉันไม่เห็นการรับส่งข้อมูลใด ๆ บนอินเทอร์เฟซ 10.0.40.1 บนเครื่องนั้น ปรากฏว่าเครื่อง Ubuntu ไม่ได้กำหนดเส้นทางการรับส่งข้อมูลอย่างที่ฉันคาดไว้ ทุกคนสามารถให้ความกระจ่างเกี่ยวกับสิ่งที่ฉันพลาดไปได้หรือไม่?

การเพิ่มเอาต์พุตของ:

iptables -S

สำหรับเครื่อง Ubuntu:

sudo iptables -S
# คำเตือน: มีตาราง iptables-legacy ให้ใช้ iptables-legacy เพื่อดู
-P อินพุตยอมรับ
-P ยอมรับไปข้างหน้า
-P เอาต์พุตยอมรับ
-A ไปข้างหน้า -i eno1 -j ยอมรับ
-A ไปข้างหน้า -i enp2s0f0 -j ยอมรับ
adi@LabBuildServer:~$ sudo iptables-legacy -S
[sudo] รหัสผ่านสำหรับ adi:
-P อินพุตยอมรับ
-P ไปข้างหน้าลดลง
-P เอาต์พุตยอมรับ
-N นักเทียบท่า
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N นักเทียบท่า-ผู้ใช้
-A ไปข้างหน้า -j นักเทียบท่า-ผู้ใช้
-A ส่งต่อ -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A ไปข้างหน้า -o นักเทียบท่า 0 -j นักเทียบท่า
-A ไปข้างหน้า -i docker0 ! -o นักเทียบท่า 0 -j ยอมรับ
-A ไปข้างหน้า -i docker0 -o docker0 -j ยอมรับ
-A FORWARD -o br-e925d11be2da -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ACCE PT
-A FORWARD -o br-e925d11be2da -j นักเทียบท่า
-ไปข้างหน้า -i br-e925d11be2da ! -o br-e925d11be2da -j ยอมรับ
-A ไปข้างหน้า -i br-e925d11be2da -o br-e925d11be2da -j ยอมรับ
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-e925d11be2da ! -o br-e925d11be2da -j DOCKER-IS OLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j ผลตอบแทน
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-e925d11be2da -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j ผลตอบแทน
-A นักเทียบท่า-ผู้ใช้ -j ผลตอบแทน

ผลลัพธ์ของ:

เส้นทางไอพี

บนโฮสต์ Linux:

เส้นทางไอพี
ค่าเริ่มต้นผ่าน 10.0.40.1 dev br-POE proto static
10.0.40.0/24 dev br-POE ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.40.10

เครื่องอูบุนตู:

adi@LabBuildServer:~$ sudo iptables -t nat -L
[sudo] รหัสผ่านสำหรับ adi:
# คำเตือน: มีตาราง iptables-legacy ให้ใช้ iptables-legacy เพื่อดู
ห่วงโซ่ PREROUTING (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง

เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง

ห่วงโซ่โพสต์ (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
สวมหน้ากากทั้งหมด - ทุกที่ทุกที่
สวมหน้ากากทั้งหมด - ทุกที่ทุกที่

Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
in flag
`/proc/sys/net/ipv4/ip_forward` ตั้งค่าเป็น `1` หรือไม่ ฉันรู้ เรื่องพื้นๆ แต่ฉันลืมนับไปกี่ครั้งแล้วที่ฉันทำให้ชีวิตฉันยากขึ้นด้วยการลืมมัน
Adi avatar
ua flag
Adi
สวัสดี @Lacek ใช่ ตั้งค่าเป็น 1 คุ้มค่าแก่การตรวจสอบเสมอ! ขอบคุณ.
4snok avatar
es flag
คุณมีกฎใด ๆ ใน iptables forward chain บนเครื่อง Ubuntu หรือไม่? เครื่อง Linux รู้จักเครือข่าย 172.31.0.x หรือไม่
Adi avatar
ua flag
Adi
สวัสดี @4snok ฉันยังไม่ได้เพิ่มกฎ iptables เลย ทำตามคำแนะนำที่ฉันเชื่อมโยงไม่มีการพูดถึงว่าจะทำให้ ping ทำงาน นั่นคือสิ่งที่ฉันต้องการ?
A.B avatar
cl flag
A.B
ทำไมคุณไม่ใส่คำถามที่เซิร์ฟเวอร์ผิดพลาดในสิ่งที่คุณทำ (ในข้อความไม่ใช่ภาพหน้าจอ) เราไม่ต้องการไปที่อื่นเพื่อดูบทช่วยสอนเพื่อลองดูสิ่งที่คุณทำจริงหรือไม่ได้ทำ
4snok avatar
es flag
โปรดเพิ่มผลลัพธ์คำถามของ `iptables -S` จากโฮสต์ Ubuntu และ `ip route` จากโฮสต์ Linux
Adi avatar
ua flag
Adi
สวัสดี @4snok ฉันได้เพิ่มผลลัพธ์ตามคำขอแล้ว นั่นบอกอะไรคุณบ้างไหม?
4snok avatar
es flag
ไม่จริง :( คุณสามารถตรวจสอบได้หรือไม่ว่ามีกฎ fw ที่มี `iptables-legacy -S` ตามที่ iptables แนะนำหรือไม่
4snok avatar
es flag
ลอง ping linux จาก Ubuntu 172.31 อินเทอร์เฟซ `ping -S 172.31.0.33 10.0.40.10` ตรวจสอบให้แน่ใจว่ามันใช้งานได้ นอกจากนี้ฉันยังพบว่า routing table บนเครื่อง windows ค่อนข้างสับสนเช่น ในเส้นทางถาวรของคุณ คุณระบุ gw `172.31.0.33` แต่ตามตารางเส้นทาง 172.31.0.33 สามารถเข้าถึงได้ผ่าน 10.255.255.0 ไม่มีกฎบนลิงก์
djdomi avatar
za flag
โดยทั่วไปจะใช้ nat หรือไม่?
Adi avatar
ua flag
Adi
คุณหมายถึง `ping -S` หรือ `ping -I` หรือเปล่า `ping -I 172.31.0.33 10.0.40.10` ทำงานตามที่คาดไว้
Score:1
ธง kz

ทางออกอยู่ที่นั่น:

-P ไปข้างหน้าลดลง

ในของคุณ iptables-มรดก ชุดกฎ นโยบายเริ่มต้นสำหรับการส่งต่อแพ็กเก็ตถูกตั้งค่าเป็น DROP และไม่มีกฎในชุดกฎนั้นที่อนุญาตให้ส่งต่อแพ็กเก็ตจาก อีโน1 ถึง เอ็นพี2เอส0เอฟ0เฉพาะการส่งต่อจาก/ไปยังอินเทอร์เฟซบริดจ์...

เป็นความคิดที่แย่มากที่จะผสม iptables ต่างๆ เข้าด้วยกัน คุณควรตัดสินใจด้วยตัวเองว่าคุณต้องการใช้หรือไม่ iptables หรือ iptables-มรดก - แต่ละแพ็กเกตของเครือข่ายจะผ่านชุดกฎทั้งสอง ทำให้เกิดความสับสนค่อนข้างมาก

อัปเดต:
คำตอบของฉันไม่ควรหมายความว่าคุณต้องติดตั้งนโยบายเริ่มต้นเป็นยอมรับ ฉันแค่ชี้ไปที่เหตุผล แน่นอน คุณสามารถเพิ่มกฎเพื่ออนุญาตการส่งต่อทราฟฟิกไปยัง IP เฉพาะเหล่านี้เท่านั้น ตัวอย่างเช่น:

-A ไปข้างหน้า -i eno1 -s 172.31.0.0/24 -o enp2s0f0 -d 10.0.40.0/24 -j ยอมรับ
-A ไปข้างหน้า -i enp2s0f0 -s 10.0.40.0/24 -o eno1 -d 172.31.0.0/24 -j ยอมรับ
Adi avatar
ua flag
Adi
ขอบคุณ. ใช่ มันดูชัดเจนเมื่อคุณรู้ว่าจะต้องดูที่ไหน! แทนที่จะเปลี่ยนเป็น `-P FORWARD ACCEPT' จะเป็นไปได้ไหมที่จะปล่อยให้เป็น DROP แล้วเพิ่มกฎเฉพาะเพื่อส่งต่อทราฟฟิกจาก 172.31.0.0/24 เป็น 10.0.40.0/24
Martin avatar
kz flag
แน่นอนเป็นไปได้! ฉันได้เพิ่มตัวอย่าง ลักษณะของกฎ ลงในคำตอบ...
A.B avatar
cl flag
A.B
อย่าลืมว่าทั้งหมดนี้เกิดจากการที่ Docker โต้ตอบกับการตั้งค่าเครือข่าย: https://docs.docker.com/network/iptables/ เมื่อแก้ไขปัญหาบางอย่างที่ไม่ได้ขึ้นอยู่กับ Docker บนระบบที่ Docker ทำงานอยู่ สิ่งแรกที่ควรทำคือปิดการใช้งาน Docker และรีบูต จากนั้นลองอีกครั้ง การหยุด Docker (และไม่รีบูต) จะไม่ลบทุกอย่าง (เช่น: โมดูลที่โหลด `br_netfilter` สามารถสร้างการตั้งค่าอื่น ๆ ที่จะใช้บริดจ์ของตัวเองล้มเหลวโดยไม่มีเหตุผลที่ชัดเจน)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา