การสลับระหว่าง Network Interfaces


0

ฉันพยายามเขียนสคริปต์เพื่อสลับระหว่างสองอินเตอร์เฟสบนเครื่อง Linux, wlan0 และ eth0

ข้อมูลอ้างอิงหลักของฉันคือ: https://askubuntu.com/questions/338100/forwarding-traffic-between-2-interfaces

-A FORWARD -i eth0 -o wlan0 -j ACCEPT

คำถามของฉันคือหลังจากคำสั่งข้างต้นแพ็กเก็ตดั้งเดิมยังคงไหลผ่าน eth0 หรือไม่ ถ้าใช่จะหยุดพวกเขาได้อย่างไรและปล่อยให้พวกเขาไหลผ่าน wlan0 เท่านั้น?

และเมื่อฉันต้องการเปลี่ยนกลับไปเป็น eth0 (และส่งต่อ wlan0 ไปยัง eth0) จะต้องทำอย่างไร

ในที่สุดวิธีการวางกฎทั้งหมดและกลับสู่ปกติ?

ขอบคุณ


คำสั่งนั้นไม่ได้ "สลับ" อะไรเลย มันบอกให้ไฟร์วอลล์อนุญาตให้แพ็กเก็ตไหลจากeth0ไปwlan0และกลับไปยังปลายทางบางแห่งที่นั่น ไม่อนุญาตให้แพ็กเก็ตส่งคืนตามเส้นทางเดียวกันและไม่อนุญาตให้ส่งต่อในและของตัวเอง
roaima

คุณหวังว่าจะสามารถเปลี่ยนระบบของคุณเพื่อกำหนดเส้นทางปริมาณการใช้งานผ่านeth0หรือwlan0ไม่ การรับส่งข้อมูล LAN หรือ "ทุกอย่าง"
roaima

ฉันหวังว่าจะกำหนดเส้นทางทุกอย่างไปยัง eth0 หรือ wlan0 ในลักษณะที่คล้ายกับระบบปฏิบัติการให้เลือก eth0 บน wlan0 แม้ว่าทั้งคู่จะทำงานอยู่ก็ตาม
Lingyuan เขา

คำตอบ:


1

หากคุณต้องการกำหนดเส้นทางผ่านอินเทอร์เฟซต่าง ๆ ให้ข้ามไฟร์วอลล์ (โซลูชันที่คุณพบนั้นเป็นข้อกำหนดที่แตกต่างอย่างสิ้นเชิง) ให้มองไปที่ตารางเส้นทางแทน

คำสั่งnetstat -rnจะแสดงอินเทอร์เฟซที่จะยอมรับปลายทางที่กำหนด คำสั่งrouteสามารถใช้ในการปรับเปลี่ยนตารางเส้นทางรวมถึงการกำหนดเกตเวย์เริ่มต้นสำหรับการรับส่งข้อมูล

นี่คือตัวอย่างของตารางเส้นทาง

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.2.254   0.0.0.0         UG        0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
224.0.0.0       0.0.0.0         240.0.0.0       U         0 0          0 eth1

นี้แสดงให้เห็นว่าการเข้าชมสำหรับเครือข่ายย่อย LAN 192.168.1.0/24 จะใช้eth0และ 192.168.2.0/24 eth1จะใช้ การจราจรอื่น ๆ ทั้งหมดจะใช้ "เกตเวย์เริ่มต้น" (ปลายทาง 0.0.0.0) eth1ซึ่งเป็น อินเทอร์เฟซของคุณอาจเป็นได้อย่างง่ายดายeth0และwlan0; มันไม่สำคัญหรอก

เพื่อสลับเกตเวย์เริ่มต้นจากeth1ไปeth0และ presupposing ว่าที่อยู่ IP ท้องถิ่นสำหรับระบบนี้จะ 192.168.1.254 บนeth1และ 192.168.2.254 บนeth0,

route delete default gw 192.168.2.254
route add default gw 192.168.1.254

ขอบคุณมาก. อีกหนึ่งคำถามฉันจะรู้ได้อย่างไรว่า 192.168.1.254 เป็น GW สำหรับ eth1 เมื่อไม่ปรากฏใน netstat ของคุณ?
Lingyuan เขา

@Lingyuan เขาเส้นทางเริ่มต้นคือแถวบนสุดนั้น (เริ่มต้นด้วยปลายทาง0.0.0.0) อินเตอร์เฟซที่เป็นขาออกeth1(คอลัมน์ขวามือ) 192.168.2.254และเกตเวย์ท้องถิ่นของมันคือ คุณต้องรู้ที่อยู่เกตเวย์จากที่อื่น - ISP ของคุณเราเตอร์ในพื้นที่ของคุณ ฯลฯ และจะต้องสามารถเข้าถึงได้จากอินเทอร์เฟซเครือข่ายท้องถิ่นของคุณ โดยทั่วไป (แต่ไม่เฉพาะ) หมายความว่าสามส่วนแรกของที่อยู่ IP จะเหมือนกัน
roaima

ฉันรู้ว่ามันใช้เวลานานแล้ว แต่นี่คือการค้นพบที่น่าสนใจ: ฉันใช้เราเตอร์เพื่อให้การเชื่อมต่อสำหรับทั้ง wlan0 และ eth0 แต่ IP ที่แตกต่างกัน (192.168.1.115 และ 130) โดยปกติแล้ว eth0 เป็นค่าเริ่มต้นจากนั้นฉันจะลบเส้นทาง gw 192.168.1.1 eth0 และเส้นทางเพิ่ม gw 192.168.1.1 wlan0 ที่น่าสนใจถึง 115 ตอนนี้เป็น IP ที่โดดเด่น แต่ฉันเห็นการรับส่งข้อมูลที่เข้ามาใน eth0 ที่มี 115 เป็น IP และแพ็คเก็ตขาออกใน wlan0 ตามที่คาดไว้เบาะแสใด ๆ
Lingyuan He

ไม่แน่ใจว่าปิดส่วนบนของหัวฉัน นั่นอาจทำให้คำถามที่ดีแม้ว่า
roaima
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.