Skip to content

vm/qemu: syz-manager fails to SSH into guest unless net.ifnames=0 is added #6518

@Obstacle19

Description

@Obstacle19

When running syz-manager with the QEMU backend, SSH connection to the guest fails unless
"net.ifnames=0" is explicitly added to the kernel command line in
syzkaller/vm/qemu/qemu.go.

Without this parameter, syz-manager consistently fails during the SSH check phase
with exit status 255. Adding net.ifnames=0 resolves the issue and allows syz-manager
to start normally.

This appears to be related to network interface naming inside the guest.

To Reproduce

  1. Build syzkaller and a Debian bookworm-based Linux image.
  2. Use the default QEMU VM backend without modifying syzkaller/vm/qemu/qemu.go.
  3. Run:
    ./bin/syz-manager -config=my.cfg
  4. Observe that syz-manager fails to connect to the guest via SSH.

Relevant error output:

running ssh: []string{"-p", "61034", "-F", "/dev/null", "-o", "UserKnownHostsFile=/dev/null",
"-o", "IdentitiesOnly=yes", "-o", "BatchMode=yes", "-o", "StrictHostKeyChecking=no",
"-o", "ConnectTimeout=10", "-i", "/path/to/image/bookworm.id_rsa", "-v",
"root@localhost", "pwd"}

ssh failed: failed to run ["ssh" "-p" "61034" "-F" "/dev/null"
"-o" "UserKnownHostsFile=/dev/null" "-o" "IdentitiesOnly=yes"
"-o" "BatchMode=yes" "-o" "StrictHostKeyChecking=no"
"-o" "ConnectTimeout=10" "-i" "/path/to/image/bookworm.id_rsa"
"-v" "root@localhost" "pwd"]: exit status 255

  1. Modify syzkaller/vm/qemu/qemu.go to append net.ifnames=0 to the kernel command line.
  2. Rebuild syzkaller and rerun syz-manager; the SSH connection succeeds.

Environment

  • syzkaller revision: e14dbeb
  • Go version: go1.24.4 linux/amd64
  • Host OS: Linux (x86_64)
  • Target OS: Linux (Debian bookworm)
  • VM backend: QEMU
  • Kernel version: Linux 6.2.0 (PREEMPT_DYNAMIC, custom-built)

Expected behavior

syz-manager should be able to establish an SSH connection to the QEMU guest without
requiring manual modification of kernel parameters such as net.ifnames=0.

Additional context

Linux predictable network interface naming (e.g., ens3 instead of eth0) may prevent
syzkaller from correctly configuring or accessing the network interface during
startup. Adding net.ifnames=0 forces legacy eth0 naming and resolves the issue.

If this is expected behavior, documentation or a clearer error message would be helpful.
Alternatively, improving network interface detection could avoid this failure mode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug in the syzkaller project (e.g. a crash or misbehavior).

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions