Skip to the content.

Tìm hiểu mạng trong QEMU.

1. Mạng cơ bản.

Có hai thành phần để kết nối mạng trong QEMU:

Có nhiều lựa chọn cho hai thành phần trên. QEMU mặc định sẽ tạo ra một user network backend là SLiRP và một virtual network thích hợp cho guest( vd: PCI card E1000 cho hầu hết các máy x86).

2. Network backend

Tạo một network backend.

Số network backend để chọn phụ thuộc vào từng môi trường. Có thể tạo network backend với lệnh:

-net TYPE, id=NAME,...

Tùy chọn id cho biết tên mà virtual network device và network backend được liên kết với nhau. Mọi virtual network device trong guest đều cần kết nối đến network backend của nó.

Các loại network backend.

Có hai loại network backend là user network(slirp) thường được sử dụng khi guest chỉ cần ra được internet, và tap thường đượng sử dụng cho mô hình mạng phức tạp hơn cho các guess kết nối vào.

User network (SLIRP).

User network à network backend mặc định và dễ sử dụng nhất. Nó không yêu cầu quyền root. Nó có một số hạn chế là:

User network được thực hiện sử dụng “slirp”, mà cung cấp lớp TCP/IP đầy đủ với QEMU và sử dụng lớp này để thực hiện một mạng ảo được NAT.

Các kết nối đến gateway của mạng thì sẽ kết nối đến host.

Cấu hình User Network bằng tùy chọn -netdev user. Ví dụ

-netdev user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9

Tap

Network backend tap sử dụng một thiết bị mạng ảo trên host(tapN). Nó có hiệu năng tốt, có thể được cấu hình để tạo hầu như tất cả các mô hình mạng, và hỗ trợ nhiều máy ảo kết nối với nhau(user network backend cũng có thể kết nối giữa các máy ảo thông qua port redirects hoặc qua socket). Nó yêu cầu quyền root để cấu hình.

-netdev tap,id=NAME

Từ QEMU 1.1 và mới hơn, Network bridge helper có thể thiết lập tun/tap mà không cần cấu hình bổ xung.

TAP/TUN device sudo mkdir /dev/net sudo mknod /dev/net/tun c 10 200 sudo /sbin/modprobe tun

VDE

Network backend VDE sử dụng Virual Distributed Ethernet cho guest network.

Socket

Network backend socket cho phép tạo các mạng cho guest để có thể nhìn thấy nhau. Nó thường được sử dụng để mở rộng mạng được tạo bởi SLIRP đến nhiều máy ảo. Nếu bạn muốn kết nối các guest với nhau, dùng tap sẽ tốt hơn trừ khi bạn không có quyền root trên hệ thống.

3. Virtual Network Device

Việc chọn Virtual network device cho máy guest phụ thuộc vào nhu cầu và môi trường của máy guest. e1000 là thiết bị mạng mặc định trên qemu. rtl8139 là thiết bị mạng mặc định trong qemu-kvm. Trong cả hai chương trình, virtio-net là thiết bị mạng có hiệu năng tốt nhất, nhưng yêu cầu hỗ trợ driver từ guest. Sử dụng tùy chọn -device để thêm một network device vào máy ảo:

-device TYPE,netdev=NAME

Với netdev là tên của network backend được tạo với tùy chọn -netdev. Virtual network device sẽ giao tiếp với network backend này.

Sử dụng tùy chọn -device ? để xem danh sách các thiết bị có thể sử dụng với tùy chọn -device.

Tài liệu tham khảo: https://wiki.qemu.org/Documentation/Networking