QEMU làm thế nào để ping mạng máy chủ?


10

Tôi đang cố gắng ping từ khách đến mạng máy chủ của mình nhưng không thành công.

qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0

Tôi cố gắng ping một máy ngẫu nhiên:

$ ping 10.0.2.21
Destination Host Unreachable

Trong khách, tôi chỉ có thể ping máy chủ 10.0.2.2 (máy chủ DHCP).


Gắn thiết bị vào thiết bị nhấn và gắn thiết bị nhấn & thiết bị mạng của bạn vào cầu
Ulrich Dangel

Câu trả lời:


11

QEMU hỗ trợ ICMP trên phụ trợ SLIRP. Cần phải cho phép cái gọi là ổ cắm ping (PF_INET, SOCK_DGRAM, PROT_ICMP) cho người dùng trong kernel.

Nó đơn giản

sysctl -w net.ipv4.ping_group_range='0 2147483647'

Xem thêm http://lwn.net/Articles/422330/


6

Từ wiki QEMU, QEMU không hỗ trợ ICMP trên phụ trợ SLIRP.

Mạng người dùng (SLIRP)

Đây là phụ trợ mạng mặc định và thường dễ sử dụng nhất. Nó không yêu cầu quyền root / Administrator. Nó có những hạn chế sau:

  • có rất nhiều chi phí nên hiệu suất kém
  • Lưu lượng truy cập ICMP không hoạt động (vì vậy bạn không thể sử dụng ping trong một khách)
  • khách không thể truy cập trực tiếp từ máy chủ hoặc mạng bên ngoài

Đối với công việc ICMP, bạn sẽ cần sử dụng TAP, VDE hoặc Ổ cắm.

Thông tin thêm: QEMU Wiki - Kết nối mạng và alo phần kết nối Wikibooks QEMU

Đề xuất cũng: hướng dẫn nâng cao để xử lý Vlan


1
Cũng có một tổng quan tốt về các tùy chọn kết nối mạng ở đây: en.wikibooks.org/wiki/QEMU/Networking , và cũng là một hướng dẫn nâng cao để xử lý các Vlan
slm

@slm Ty. đã thêm các liên kết của bạn trong câu trả lời;)
Victor Aurélio

4

Cách đơn giản nhất và hiệu quả hơn mà tôi tìm ra cho tôi là điều này .

Tóm lại, trên máy chủ:

tunctl -u <username>

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp

ip link set tap0 up
route add -host 192.168.0.20 dev tap0   <-- to be changed by you.

và đối với khách, chỉ cần chạy nó với:

kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb

hoặc là

qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb 

Bạn chỉ cần định cấu hình một tapthiết bị, thuộc sở hữu của người dùng của bạn, bật arp proxyingvà định cấu hình routegiữa máy chủ và khách của bạn.

Tác giả (và bản thân tôi) đã sử dụng điều đó để giải quyết vấn đề bắc cầu đến một wlan0thiết bị không được nhân Linux hỗ trợ. Nhưng nó hoạt động tốt với một kết nối có dây. Trong arpcấu hình, chỉ cần thay đổi wlan0thành eth0.

Địa chỉ IP của khách phải được bạn đặt, vì DHCPkhông hoạt động.

Và bạn đã có thể ping máy chủ của bạn.


0

Tôi vừa đạt được điều này bằng cách kết hợp trực tiếp hai câu trả lời sau đây của tôi:

Kết hợp những thứ đó, tôi tìm thấy "IP máy chủ" ip routevà sau đó đã làm:

ping 10.0.2.2

va no đa hoạt động.

Đã thử nghiệm với thiết lập QEMU + Buildroot này trên máy chủ Ubuntu 19.04.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.