ฉันสามารถ จำกัด ผู้ใช้ (และแอพของตน) ไปยังอินเทอร์เฟซเครือข่ายเดียวได้หรือไม่


15

ฉันมีสองสถานการณ์ที่จะใช้สิ่งนี้:

  1. Multiseat Desktop: การเชื่อมต่อเครือข่ายสองรายการทั้งที่มีเกตเวย์อินเทอร์เน็ตและสองบัญชีที่ใช้งานแบนด์วิดท์สูงในแต่ละบัญชี ฉันต้องการแยกพวกเขาออกเพื่อให้บัญชีเดียวใช้ eth0 และบัญชีที่สองใช้ eth1 เท่านั้น

  2. เซิร์ฟเวอร์: ฉันมีสอง IP บนเซิร์ฟเวอร์และฉันต้องการตรวจสอบให้แน่ใจว่าผู้ใช้จดหมายส่งอีเมลจาก IP ที่สองเท่านั้น (นามแฝง eth0: 1)

อย่างที่สองอาจเป็น IPTabled (ฉันไม่รู้วิธี) ในการกำหนดเส้นทางการรับส่งอีเมลผ่านอินเทอร์เฟซนั้น แต่อันแรกจะจัดการกับปริมาณการใช้งานทุกประเภท หากมีวิธีการแก้ปัญหาผู้ใช้ฉันสามารถใช้สิ่งนี้ในทั้งสองสถานที่

คำตอบ:


6

คุณจะต้องการใช้โมดูลเจ้าของ iptables และบางทีอาจมีบางแพ็กเก็ตที่ฉลาด

owner โมดูลนี้พยายามจับคู่คุณสมบัติต่าง ๆ ของผู้สร้างแพ็กเก็ตสำหรับแพ็กเก็ตที่สร้างขึ้นในเครื่อง มันใช้ได้เฉพาะในห่วงโซ่ OUTPUT และแม้กระทั่งบางแพ็กเก็ต (เช่นการตอบสนองการ ping ICMP) อาจไม่มีเจ้าของและดังนั้นจึงไม่ตรงกัน

--uid-user userid ตรงกันถ้าแพ็กเก็ตถูกสร้างโดยกระบวนการที่มี ID ผู้ใช้ที่มีประสิทธิภาพ (ตัวเลข) ที่กำหนด

--gid-groupid groupid ตรงกันถ้าแพ็กเก็ตถูกสร้างขึ้นโดยกระบวนการที่มี id กลุ่มที่มีประสิทธิภาพ (ตัวเลข) ที่กำหนด

--pid เจ้าของ processid ตรงกันถ้าแพ็กเก็ตถูกสร้างขึ้นโดยกระบวนการที่มี id กระบวนการที่กำหนด

--sid-owner sessionid ตรงกันถ้าแพ็กเก็ตถูกสร้างขึ้นโดยกระบวนการในกลุ่มเซสชันที่กำหนด


คุณสามารถใช้ iptables เพื่อกำหนดเครื่องหมายซึ่งคุณสามารถใช้ในตารางเส้นทาง ดูเป้าหมายของ MARK และ CONNMARK ใน iproute แล้ว 'ip ip เพิ่ม fwmark X ... ' ฉันจะไม่แปลกใจจริง ๆ ถ้า iproute2 เพียงอย่างเดียวสามารถทำสิ่งนี้ได้
Derobert

3
การเป็นคนที่ทำงานอย่างกว้างขวางกับการจับคู่ของเจ้าของฉันสามารถพูดได้ว่าสิ่งนี้จะไม่ให้ผลลัพธ์ที่ต้องการเสมอไป คือแพ็คเก็ตไม่ได้มีเจ้าของอย่างที่คุณคาดหวัง ICMP และ ESP เป็นชนิดที่เป็นของเคอร์เนล (หรือราก) โดยไม่คำนึงถึงแอพลิเคชันที่มีต้นกำเนิดและจะไม่-m ownerได้รับการจับคู่โดย มันค่อนข้างเชื่อถือได้กับ TCP และ UDP แต่ประเภทอื่นไม่น่าเชื่อถือ วิธีเดียวที่เชื่อถือได้ในการบรรลุผล 100% นี้คือการใช้ VM หรือคอนเทนเนอร์
bahamat

7

คุณสามารถตั้งค่าเครื่องเสมือนสองเครื่องบนเครื่องจริงและตั้งค่าบริดจ์เชื่อมต่อเครือข่ายเพื่อให้หนึ่ง VM ใช้ eth0 และ VM อื่น ๆ ใช้ eth1 ดูเอกสารประกอบกล่องเสมือนบนเครือข่ายสะพาน


1

ฉันไม่แน่ใจว่าเป็นไปได้สำหรับจุดแรก คุณต้องการจัดการการจัดเส้นทางบางอย่างตามหมายเลขผู้ใช้ของผู้ใช้ ครั้งล่าสุดที่ฉันตรวจสอบฉันไม่เห็นความเป็นไปได้นี้

สำหรับจุดที่สองนั่นไม่ใช่ iptables ที่คุณต้องการใช้ แต่เป็น iproute2 (http://lartc.org/howto/ และhttp://www.policyrouting.org/iproute2.doc.htmlสำหรับเอกสารฉบับสมบูรณ์) เป็นการแทนที่คำสั่ง ifconfig / route เนื่องจากถือว่าล้าสมัย iproute2 อนุญาตให้ yo จัดเส้นทางแพ็กเก็ตตามแหล่งที่มา นั่นคือสิ่งที่คุณต้องการ

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