다른 사용자로 QEMU 시작

다른 사용자로 QEMU 시작

현재 QEMU에서 게스트의 특정 요청을 가로채거나 차단하려고 합니다.
이에 따르면질문, 가장 쉬운 방법은 QEMU를 다른 사용자로 실행하여 iptables에서 호스트 트래픽과 게스트 트래픽을 구별할 수 있도록 하는 것입니다.

그러나 다른 사용자로 QEMU를 시작하면 항상 실패합니다.

❯ sudo -u qemu-user qemu-system-x86_64 -enable-kvm ...
Authorization required, but no authorization protocol specified

gtk initialization failed

이 문제를 해결하는 방법이나 게스트 트래픽(예: 특정 포트)을 차단하는 데 사용할 수 있는 다른 방법에 대해 알고 계시나요?

답변1

로컬 X11 서버에 연결을 시도하지만 액세스 권한이 없습니다. 다음을 사용하여 이를 변경할 수 있습니다 xhost.

❯ xhost +
access control disabled, clients can connect from any host
❯ export DISPLAY=:0

sudo -E -u root qemu-system-x86_64 -enable-kvm -serial mon:stdio -m 8g -smp 4 -hda ~/Downloads/debian-12-generic-amd64.qcow2 -nic user,model=virtio-net-pci

나에게 도움이 된 오류는 X 서버에 연결을 시도하지만 사용자를 허용하고 위치를 환경 변수 (기본값) GTK initialization failed로 지정해야 하기 때문에 연결할 수 없습니다.DISPLAY=:0

xhost명령에 대한 매뉴얼 페이지와 xhost +사용자 이름을 지정하지 않으면 어떤 일이 발생하는지 확인하십시오 (모든 사용자 이름 허용). 일반적으로 이것은 괜찮지만, 나는 단지 여러분이 이것을 이해했는지 확인하고 싶습니다.

OPTIONS
       Xhost accepts the following command line options described below.  For security, the options that af‐
       fect  access control may only be run from the "controlling host".  For workstations, this is the same
       machine as the server.  For X terminals, it is the login host.

       -help   Prints a usage message.

       [+]name The given name (the plus sign is optional) is added to the list allowed to connect to  the  X
               server.  The name can be a host name or a complete name (See NAMES for more details).

       -name   The given name is removed from the list of allowed to connect to the server.  The name can be
               a host name or a complete name (See NAMES for more details).  Existing  connections  are  not
               broken, but new connection attempts will be denied.  Note that the current machine is allowed
               to be removed; however, further connections (including attempts to add it back) will  not  be
               permitted.   Resetting the server (thereby breaking all connections) is the only way to allow
               local connections again.

       +       Access is granted to everyone, even if they aren't on  the  list  (i.e.,  access  control  is
               turned off).

       -       Access is restricted to only those on the list (i.e., access control is turned on).

       nothing If no command line arguments are given, a message indicating whether or not access control is
               currently enabled is printed, followed by the list of those allowed to connect.  This is  the
               only option that may be used from machines other than the controlling host.

편집하다**

게스트 트래픽이 특정 포트에 도달하지 못하도록 차단합니다. 예를 들어 사용자 모드 네트워킹을 사용하면 -nic user,model=virtio-net-pci게스트 격리 네트워크가 제공되고 qemu 모니터를 통해 포트 전달을 제어할 수 있습니다(활성화된 경우 -serial mon:stdio직렬 모드와 qemu 모니터 모드 간에 전환할 수 있음 control-a-c) hostfwd_add.

추가 정보:https://wiki.qemu.org/Documentation/Networking#User_Networking_(SLIRP)

https://github.com/paigeadelethompson/docker-solaris#networking

관련 정보