-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
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
- Build syzkaller and a Debian bookworm-based Linux image.
- Use the default QEMU VM backend without modifying syzkaller/vm/qemu/qemu.go.
- Run:
./bin/syz-manager -config=my.cfg - 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
- Modify syzkaller/vm/qemu/qemu.go to append net.ifnames=0 to the kernel command line.
- 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.