ฉันมีอินเทอร์เฟซจำนวนหนึ่งบนเครื่อง Ubuntu 20.04 ท่ามกลางคนอื่น ๆ enx0c5b8f279a64
และ usb0
โดยภายหลังถูกใช้เป็นค่าเริ่มต้น ฉันต้องการให้แน่ใจว่ากระบวนการเฉพาะที่เริ่มต้นในเทอร์มินัลจะใช้หนึ่งในอินเทอร์เฟซเหล่านี้เท่านั้น (เช่น enx0c5b8f279a64
แม้ว่าอินเทอร์เฟซอื่นจะเป็นค่าเริ่มต้นก็ตาม) หากกระบวนการนี้เริ่มต้นและถูกเลือก enx0c5b8f279a64
อินเทอร์เฟซไม่ทำงาน ไม่ควรลองใช้อินเทอร์เฟซอื่นเป็นทางเลือกสำรอง (ราวกับว่าอินเทอร์เฟซอื่นจะไม่มีอยู่จริงจากมุมมองของกระบวนการนี้).
ฉันคิดว่า ip เน็ต
เป็นวิธีที่จะไป แต่ฉันมีปัญหาในการปรับใช้โซลูชันที่ใช้งานได้ ฉันเหนื่อย https://superuser.com/a/750412 อย่างไรก็ตามฉันได้รับ ไม่สามารถเข้าถึงโฮสต์ปลายทางได้
ถ้าฉันพยายาม ping 8.8.8.8
:(
ส่วนที่เกี่ยวข้องของ ไอพี เอส
เอาต์พุต:
9: enx0c5b8f279a64: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 สถานะ qdisc fq_codel กลุ่ม UP เริ่มต้น qlen 1,000
ลิงค์/อีเธอร์ 12:12:12:12:12:12 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.100/24 brd 192.168.7.255 ขอบเขต global dynamic noprefixroute enx0c5b8f279a64
valid_lft 84611วินาทีที่ต้องการ_lft 84611วินาที
inet6 2323::2323:2323:2323:2323/64 ลิงค์ขอบเขต noprefixroute
valid_lft ตลอดไป reserved_lft ตลอดไป
10: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 34:34:34:34:34:34 brd ff:ff:ff:ff:ff:ff
inet 192.168.42.**47**/24 brd 192.168.42.255 ขอบเขต global dynamic noprefixroute usb0
valid_lft 1858 วินาทีที่ต้องการ_lft 1858 วินาที
inet6 4545:454:545:4545:454:5454:5454:5454/64 ขอบเขตแบบไดนามิกที่เลิกใช้ทั่วโลกชั่วคราว
valid_lft 2461 วินาทีที่ต้องการ_lft 0 วินาที
inet6 5656:565:656:5656:5656:5656:5656:5656/64 ขอบเขตระดับโลกที่เลิกใช้งานแบบไดนามิก mngtmpaddr noprefixroute
valid_lft 2461 วินาทีที่ต้องการ_lft 0 วินาที
inet6 6767::6767:6767:6767:6767/64 ลิงค์ขอบเขต noprefixroute
valid_lft ตลอดไป reserved_lft ตลอดไป
และตารางเส้นทาง:
เส้นทาง -n
ตารางเส้นทางเคอร์เนล IP
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะการอ้างอิงเมตริก ใช้ Iface
0.0.0.0 192.168.7.1 0.0.0.0 UG 100 0 0 enx0c5b8f279a64
0.0.0.0 192.168.42.129 0.0.0.0 UG 101 0 0 usb0
192.168.7.0 0.0.0.0 255.255.255.0 คุณ 100 0 0 enx0c5b8f279a64
192.168.42.0 0.0.0.0 255.255.255.0 คุณ 101 0 0 usb0
จนถึงตอนนี้วิธีแก้ปัญหาทั้งหมดที่ฉันได้ลองเริ่มต้นในลักษณะเดียวกัน:
#สร้างเนมสเปซ
sudo ip netns เพิ่ม nspace0
#สร้างลิงค์
ลิงค์ sudo ip เพิ่ม veth0 ประเภท veth ชื่อเพียร์ veth1
#ลิ้งย้าย
ลิงก์ sudo ip ตั้งค่า veth1 netns nspace0
#ทำเวทมนตร์บางอย่าง
# (ไม่มีวิธีแก้ไขใดที่ฉันพยายามปรับใช้ที่นี่ได้ผลสำหรับฉันจนถึงตอนนี้)
...
# เรียกใช้กระบวนการในเนมสเปซ (ที่นี่ฉันใช้ curl เป็นตัวอย่าง)
sudo ip netns exec nspace0 curl ifconfig.me/ip
แต่ปัญหาคือ มายากล
ส่วนหนึ่ง. ฉันได้เห็นวิธีการมากมายเกี่ยวกับบริดจ์และโซลูชั่นการส่งต่อไอพีอื่นๆ น่าเสียดายที่สิ่งเหล่านี้ไม่ได้ผลสำหรับฉันจนถึงตอนนี้ และฉันไม่เชี่ยวชาญด้านระบบเครือข่ายที่จะสามารถวินิจฉัยและแก้ไขได้