Linux: มีวิธีที่สะดวกในการดำเนินการโปรแกรมที่เชื่อมโยงกับที่อยู่ IP ของตัวเลือกหรือไม่?


11

ใน FreeBSD 4.9 มันง่ายมากที่จะทำสำเร็จด้วยเพียงคำสั่งเดียวเช่น

jail [-u username]  path hostname ip-number command

หากพา ธ/คุณใช้งานโปรแกรมเดียวกันตามปกติ แต่การสื่อสารเครือข่ายทั้งหมดนั้นถูก จำกัด ให้ใช้เฉพาะที่อยู่ IP ที่ให้มาเท่านั้น บางครั้งมันมีประโยชน์มาก

ตอนนี้ใน Linux มี LXC ซึ่งดูคล้ายกับ FreeBSD's jail(หรือ Solaris 'โซน) - คุณคิดวิธีที่คล้ายกันในการรันโปรแกรมหรือไม่?


คุณพยายามทำสิ่งใดกับโปรแกรมนี้ หลายโปรแกรมสามารถกำหนดค่าได้มากพอที่จะสามารถบอกได้ว่า IP ใดที่ต้องเชื่อมโยง
Warren Young

@WarrenYoung ขอบคุณ KO แต่ "มาก"! = "all"
poige

กรณีการใช้งานที่ดีสำหรับ "การคุก" ผู้ปฏิบัติการที่จะใช้ IP เฉพาะกำลังเรียกใช้เซิร์ฟเวอร์เกมหลายเครื่องในเครื่องเดียวในระบบ LAN เช่นเกม Valve มีการแพร่ภาพในพอร์ต 27015-27020 เท่านั้นดังนั้นต่อ IP คุณสามารถมีเซิร์ฟเวอร์ได้เพียง 6 ตัวเท่านั้น ดังนั้นคุณจึงเพิ่ม IP เสมือนบน NIC แต่จากนั้นคุณต้องระบุ "+ ip <address>" บนบรรทัดคำสั่งของเซิร์ฟเวอร์เกมซึ่งหยุดออกอากาศการแสดงตนต่อลูกค้า => ไม่มีเซิร์ฟเวอร์ที่มองเห็นในเบราว์เซอร์ LAN ดังนั้น "+ ip" จะไม่ทำงาน ดังนั้นเราต้องจำคุกแต่ละเซิร์ฟเวอร์ในสภาพแวดล้อมที่สามารถหาได้เพียง 1 ที่อยู่ IP ผลลัพธ์: ไม่ จำกัด ใน #servers + ไคลเอ็นต์ดูเซิร์ฟเวอร์ทั้งหมด
Timmos

คำตอบ:


12

การเริ่มต้นกระบวนการภายในเนมสเปซเครือข่ายที่สามารถเห็นได้เฉพาะที่อยู่ IP ที่ต้องการเท่านั้นที่สามารถทำสิ่งที่คล้ายกันได้ ตัวอย่างเช่นฉันต้องการเพียง localhost พร้อมใช้งานกับโปรแกรมเฉพาะ

ก่อนอื่นฉันสร้างเนมสเปซเครือข่าย:

ip netns add limitednet

เนมสเปซมีอินเทอร์เฟซแบบวนรอบโดยค่าเริ่มต้นดังนั้นต่อไปฉันก็ต้องนำมาขึ้น:

sudo ip netns exec limitednet ip link set lo up

ตอนนี้ฉันสามารถเรียกใช้โปรแกรมโดยใช้ip netns exec limitednetและจะสามารถเห็นอินเทอร์เฟซย้อนกลับเท่านั้น:

sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

ถ้าฉันต้องการ จำกัด ที่อยู่อื่นที่ไม่ใช่ localhost ฉันสามารถเพิ่มอินเทอร์เฟซอื่น ๆ ลงในเนมสเปซโดยใช้:

ip link set DEVICE_NAME netns NAMESPACE

ฉันต้องทดลองอีกเล็กน้อยเพื่อหาวิธีเพิ่มที่อยู่ IP เดียวในเนมสเปซในกรณีที่อินเทอร์เฟซอาจมีที่อยู่ IP มากกว่าหนึ่งแห่ง

บทความ LWN ใน namespacesยังเป็นประโยชน์


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