แอปพลิเคชัน (เช่น Firefox) จะถูกบังคับให้ใช้อินเทอร์เฟซเครือข่ายบางอย่างได้อย่างไร


20

ฉันมีอินเทอร์เฟซสอง: eth0 และ wlan0 บนโน้ตบุ๊ก

กรณีการใช้งานที่เป็นไปได้:

  • eth0 ให้สิทธิ์ฉันในการเข้าถึงอินเทอร์เน็ตและ wlan0 เชื่อมต่อกับเราเตอร์ซึ่งไม่มีการเชื่อมต่ออินเทอร์เน็ต เพื่อวัตถุประสงค์ในการพัฒนาฉันต้องเชื่อมต่อกับ wlan0 เป็นค่าเริ่มต้น แต่ใช้ eth0 สำหรับการท่องเว็บ
  • eth0 และ wlan0 เชื่อมต่อกับอินเทอร์เน็ตทั้งคู่ สำหรับแอปพลิเคชั่นฝนตกหนักควรใช้ eth0 เพื่อความเร็ว แต่สำหรับการพกพาของโน้ตบุ๊ก SSH ควรมีการเชื่อมต่อผ่าน wlan0
  • eth0 เป็นการเชื่อมต่อแบบสาย wlan0 เป็นแบบไร้สาย ข้อมูลที่มีเหตุผลควรถูกถ่ายโอนผ่าน eth0 แต่ทราฟฟิกอื่นสามารถข้าม wlan0 ได้เช่นกัน

มีวิธีบังคับให้แอปพลิเคชั่น (เช่นnc.traditionalหรือfirefox) ใช้อินเทอร์เฟซเครือข่ายบางอย่างหรือไม่? wrapper like example-wrapper eth0 programก็ใช้ได้เช่นกันหากมีโปรแกรมดังกล่าวอยู่ มันจะดีถ้ามันสามารถกำหนดค่าภายใน Firefox (ในขณะทำงาน) ฉันต้องการหลีกเลี่ยงการแก้ปัญหา IPTables ถ้าเป็นไปได้


4
สิ่งนี้ยังมีประโยชน์สำหรับการเชื่อมต่ออินเทอร์เน็ตหลายครั้งโดยใช้ฝนตกหนักขณะที่อื่น ๆ ถูกใช้เพื่อการท่องอินเทอร์เน็ต
iamgopal

คุณต้องการใช้เส้นทางที่แตกต่างกันขึ้นอยู่กับโปรโตคอล / แอปพลิเคชันคุณจะต้อง iptables
João Pinto

1
ฉันไม่รู้ว่าคุณสามารถทำสิ่งนี้ได้อย่างไรโดยไม่มีสิ่งใดที่แมปการรับส่งข้อมูลของเลเยอร์ 7 (แอปพลิเคชัน) ไปยังพอร์ตเฉพาะหรือตัวกรองตามข้อมูลแอปพลิเคชันระดับสูงกว่า ดังนั้นในขณะที่ iptables โดยเฉพาะไม่จำเป็นต้องแก้ปัญหาใด ๆ ที่เกี่ยวข้องกับเสื้อคลุมจะต้องมีการโต้ตอบกับนโยบาย TCP หรือ IP ในบางแฟชั่น ฉันไม่ทราบวิธีการทำเช่นนี้หากไม่มีเครือข่าย layer2 หรือ layer3 ที่ควบคุมปริมาณการใช้งานที่อื่น
belacqua

คำตอบ:


1

สิ่งที่คุณกำลังมองหาคือ LS_PRELOAD shim โปรดดูรายการบล็อกของ Daniel Langeสำหรับคำอธิบายโดยละเอียดและรหัสตัวอย่าง


3
ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Stormvirux

1

คุณสามารถใช้วิธีการที่ซับซ้อนยิ่งขึ้นในการทำเครื่องหมายการเชื่อมต่อและนโยบายเส้นทาง
มันจะทำงานได้ดีถ้าคุณมีผู้ใช้ที่รันหนึ่งซอฟต์แวร์และอับละอองเกสร
วิธีนี้คุณสามารถทำเครื่องหมายการเชื่อมต่อของผู้ใช้รายหนึ่งและใช้ตารางเส้นทางที่เฉพาะเจาะจงสำหรับมันในขณะที่คนอื่น ๆ ทั้งหมดจะใช้ค่าเริ่มต้น
เอกสารพื้นฐานที่จะเข้าใจทุกอย่างอยู่ที่: http://www.lartc.org/lartc.html
นอกจากนี้ยังมีตัวอย่างสำหรับการเชื่อมต่อสองแบบที่คุณสามารถดูได้ที่นี่: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interfaces
คุณสามารถใช้โมดูล "เจ้าของ" iptables ซึ่งจะทำเครื่องหมายการเชื่อมต่อเพื่อให้นโยบายการกำหนดเส้นทาง


การกำหนดเส้นทางนโยบายทำงานสำหรับผู้ใช้ที่แตกต่างกัน แต่ไม่ใช่สำหรับแอปพลิเคชันที่ทำงานภายใต้ผู้ใช้หนึ่งราย (ดังอธิบายใน OP) LD_PRELOADดูเหมือนจะเป็นไปได้ (ไม่ใช่สำหรับโปรแกรมที่เป็นอันตราย / เพื่อเหตุผลด้านความปลอดภัย) บางทีใครบางคนสามารถอธิบายอย่างละเอียดเกี่ยวกับ Bob Lebins ได้?
Lekensteyn

0

นี่คือตัวอย่างโซลูชัน มันใช้เซิร์ฟเวอร์ SOCKS การตั้งค่าบนเครื่องปัจจุบันเพื่อเส้นทางกรวย แต่ละแอปพลิเคชันควรได้รับการกำหนดค่าให้ใช้แต่ละเซิร์ฟเวอร์


3
ดูเหมือนว่าพร็อกซี HTTP นั้นใช้งานได้กับโปรโตคอลอื่นเช่นการเชื่อมต่อระหว่างอินสแตนซ์ netcat สองตัวหรือไม่
Lekensteyn

0

คุณยังสามารถใช้เครื่องเวิร์กสเตชัน VMware เพื่อแบ่งปันอินเทอร์เฟซเครือข่ายที่แตกต่างกันซึ่งฉันทำมากเพื่อดาวน์โหลดจากอินเทอร์เฟซหนึ่งและปล่อยให้ Netflix ของฉันอีกอันหนึ่ง

คุณจำเป็นต้องตั้งค่าทั้ง ethX และ wlanX บน VMware แต่เมื่อคุณกำหนดค่าแล้วคุณก็พร้อมที่จะดาวน์โหลดหรือเรียกดู

มันค่อนข้างเรียบ คุณยังสามารถใช้ไฟร์วอลล์เพื่อเชื่อมต่ออินเทอร์เฟซที่ใช้งานได้ดี


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