Vài ngày trước, tôi gặp một vấn đề/snag thú vị. Vâng, hơn là một operational challenge củng cố niềm thích VirtualBox của tôi. Cụ thể, tôi muốn setup một private network nhỏ với vài VM. Một máy là server, các máy kia là client chạy agent software và report đến server. Nghe đơn giản. Ngoại trừ tất cả máy NAT-ed của tôi đều lấy cùng địa chỉ IP: 10.0.2.15.
Thực tế, nếu bạn dùng setup VM cơ bản nhất - máy dùng single NAT adapter, và ra kết quả, mỗi máy lấy đúng cùng IP address, ngay cả khi chạy song song. Điều này nghĩa là bạn không thực sự có network. Vâng, không theo cách này. Nhưng có cách. Chúng ta đã nói về VirtualBox network & sharing khá kỹ trong quá khứ, và tôi muốn chỉ cho bạn vài trick mạng thêm. Theo chân mình nhé.
Setup NAT Network
Giải pháp cho vấn đề này là tạo một NAT network mà tất cả VM liên quan sẽ share. Điều này cần làm như một bước riêng biệt, đầu tiên, qua menu Preferences trong giao diện chính VirtualBox. Chỉ cần add một network, sau đó tinh chỉnh setting. Mặc dù wizard đơn giản, nó super powerful. Bạn có thể đặt tên network bất kỳ, và cũng khá nhiều range routable, bao gồm số host bạn muốn network hỗ trợ. Bạn có thể cho client lấy dynamic IP hoặc thậm chí set thủ công.
Nhưng còn hơn. Bạn cũng có thể dùng IPv6 - và thậm chí cấu hình port forwarding, nên nếu bạn có nhiều NAT network, chúng có thể nói chuyện với nhau - hoặc đúng hơn, individual host sẽ accessible từ bên ngoài, như tôi mới chỉ trong tutorial VirtualBox port forwarding. Bạn có thể tạo một hoặc nhiều network.
Setup VM & Cấu hình Network
Bước tiếp theo là associate network này với VM của bạn. Cho adapter mong muốn, dưới Attached to:, chọn NAT Network, và sau đó trong dropdown thứ hai ngay bên dưới (Name), chọn tên network bạn vừa tạo. Vì mỗi VM mặc định có tối đa bốn network (qua UI), bạn có nhiều linh hoạt trong thiết lập cấu hình mạng phức tạp.
Đó là tất cả. Lần sau bạn boot VM - và nếu bạn dùng DHCP - one by one, chúng sẽ được gán địa chỉ khác nhau. Tôi test, và ví dụ, trong một scenario cụ thể với hai máy chạy, máy đầu lấy assignment tiêu chuẩn - 10.0.2.15, nhưng máy thứ hai có 10.0.2.4. Bạn có thể dùng nmap để search host trên network, nếu cần discover chúng.
Kết luận
Đơn giản, nhưng hy vọng khá hữu ích. Tôi thấy nhiều bài đăng forum nơi người dùng VirtualBox bối rối hỏi tại sao tất cả máy có cùng địa chỉ. Có lẽ không instantly clear rằng mỗi NAT-ed host sống trong môi trường network isolated riêng, và chúng không tự động share cùng virtual router. Có lẽ vì lý do bảo mật, vì bạn có thể có VM insecure hoặc noisy trong hệ thống. Anyway.
VirtualBox mạnh mẽ và linh hoạt, và nó có những gì cần để generate cấu hình network khá phức tạp. Chúng ta đã cover khá nhiều hôm nay, bao gồm các option khác nhau bạn cần để host share adapter và lấy IP từ cùng pool để chúng nói chuyện với nhau. Vâng, đó là tất cả cho bây giờ. Happy virtualization.
Chúc vui.