Bạn có thể gán cấu hình mạng khác nhau cho một quá trình sử dụng không gian tên mạng linux . Về lý thuyết, có thể định cấu hình PAM * để đặt từng người dùng trong không gian tên mạng riêng của mình, nhưng có thể đơn giản hơn để khởi chạy ứng dụng được đề cập trong không gian tên của chính nó.
Một thiết lập chung có thể mô tả việc tạo giao diện cầu Linux để kết nối các không gian tên với mạng. Thiết lập đơn giản hơn một chút có thể được lưu trữ bằng ipvlan (có trong phiên bản kernel 3.19 trở lên) hoặc thiết bị macvlan (đối với không dây, bạn không thể sử dụng macvlan ). Tài liệu nhân Linux có một ví dụ chi tiết để thiết lập ipvlan trong không gian tên mạng.
Theo ví dụ trong tài liệu:
Tạo một không gian tên mạng ns0
ip netns add ns0
Tạo nô lệ ipvlan trên eth0 (thiết bị chính)
ip link add link eth0 ipvl0 type ipvlan mode l2
Gán nô lệ cho không gian tên mạng ns0
ip link set dev ipvl0 netns ns0
Cấu hình thiết bị nô lệ trong không gian tên mạng ns0
ip netns exec ns0 ip link set dev ipvl0 up
ip netns exec ns0 ip link set dev lo up
ip netns exec ns0 ip -4 addr add 127.0.0.1 dev lo
ip netns exec ns0 ip -4 addr add $IPADDR dev ipvl0
ip netns exec ns0 ip -4 route add default via $ROUTER dev ipvl0
Cung cấp địa chỉ máy chủ và bộ định tuyến trong $IPADDR
và $ROUTER
.
Chạy ứng dụng của bạn trong không gian tên mạng bằng cách sử dụng ip exec
ip netns exec ns0 <command>
Để chạy lệnh như người dùng khác, sử dụng thông thường su <user> -c -- <command>
.
* EDIT: Từ lý thuyết đến thực tiễn: Tôi đã viết một mô-đun PAM đơn giản để trình bày cách thay đổi không gian tên mạng cho mỗi người dùng. Bạn cần định cấu hình một tên nơi mạng ip netns
như ở trên và ánh xạ người dùng cụ thể đến một không gian tên cụ thể. Sau đó, tất cả các quy trình người dùng sẽ ở trong không gian tên được cấu hình của họ thay vì mặc định. Mã được lưu trữ trên github . Sử dụng lúc nguy hiểm của riêng bạn.
ubuntu 14.04
Tôi chỉ nhận được :Garbage instead of arguments "mode ...". Try "ip link help"
.