Sẽ rất khó khăn (nhưng không phải là không thể) để có một hệ thống Linux, sử dụng một ngăn xếp định tuyến duy nhất, thực hiện định tuyến nhiều gói từ chính nó đến chính nó mà không cần sử dụng lo
giao diện.
Nhưng Linux rất dễ tạo các ngăn xếp mạng bổ sung để mô phỏng nhiều hệ thống trong một hệ thống: bằng cách sử dụng không gian tên mạng.
Tại đây, người ta có thể từ bỏ một trong hai NIC cho một không gian tên mạng mới sẽ ngang hàng với không gian tên mạng (máy chủ) ban đầu. Họ sẽ không giao tiếp trực tiếp mà chỉ thông qua bộ định tuyến bên ngoài. Giả sử các giao diện thực sự được đặt tên Một
và b
và bộ định tuyến sử dụng địa chỉ 10.0.1.1/24
+ 10.0.2.1/24
.
tạo một không gian tên mạng mới với sự quản lý thuận lợi bổ sung khi sử dụng iproute2 các công cụ (dưới mui xe, các tệp giả không gian tên được gắn để giữ tài nguyên xung quanh mà không cần xử lý, v.v.).
ip netns thêm bênB
di chuyển giao diện b
vào không gian tên mạng mới:
liên kết ip được đặt dev B netns sideB
lưu ý: giao diện không dây yêu cầu sử dụng tôi
lệnh thay thế.
định cấu hình không gian tên mạng mới:
Tất cả các cài đặt mạng của nó bị mất khi một giao diện thay đổi không gian tên (cả trên máy chủ nơi giao diện biến mất khiến các địa chỉ kích hoạt biến mất khiến các tuyến kích hoạt biến mất và trên không gian tên mạng mới):
ip -n sideB liên kết thiết lập dev B lên
địa chỉ ip -n sideB thêm 10.0.2.5/24 dev B
Không cần thiết nhưng trong trường hợp iperf3 bị nhầm lẫn, hãy có giao diện loopback chức năng:
thiết lập liên kết ip -n sideB
định cấu hình các tuyến giữa hai bên (không gian tên khởi tạo/máy chủ lưu trữ có thể đã có nó thông qua tuyến mặc định, nhưng hãy nói rõ ràng)
tuyến ip thêm 10.0.2.0/24 qua 10.0.1.1 dev A
ip -n sideB route thêm 10.0.1.0/24 qua 10.0.2.1 dev B
Bây giờ một cái có thể chạy (trong hai thiết bị đầu cuối):
iperf3 -s
ip netns exec sideB iperf3 -c 10.0.1.5
với máy khách đang chạy trong không gian tên mạng mới.
Sau khi quá trình đo kết thúc, việc xóa không gian tên mạng sẽ đưa NIC trở lại không gian tên máy chủ. Nhưng nếu có bất kỳ quy trình nào bị bỏ lại do nhầm lẫn khi sử dụng không gian tên mạng này (đại loại như ip netns exec bên B setsid ngủ 9999
) các ip netns xóa bênB
bên dưới sẽ chỉ xóa không gian tên khỏi chế độ xem của iproute2 tools, nhưng không thực sự xóa không gian tên cho đến khi quá trình kết thúc, khiến NIC khó khôi phục trở lại. Vì vậy, tốt hơn là di chuyển nó trở lại trước:
ip -n sideB liên kết thiết lập dev B netns 1
ip netns xóa bênB
ở đâu 1
có nghĩa là không gian tên mạng của PID 1: không gian tên ban đầu/máy chủ lưu trữ. Ngoài ra, điều này cho phép thực hiện thử nghiệm bên trong một vùng chứa đã được cung cấp NIC vật lý (vì có 1
không gian tên mạng là không gian tên của bộ chứa, thay vì không gian tên của máy chủ thực tế) hoặc NIC vật lý sẽ xuất hiện lại trên máy chủ và bị mất vĩnh viễn đối với bộ chứa nếu không có quyền truy cập vào máy chủ.
Nếu không có công cụ (như udev + nếu updown'S cho phép cắm nóng
hoặc NetworkManager) phát hiện sự xuất hiện của NIC, nó sẽ lại phải được cấu hình lại khi quay trở lại.