Страница 1 из 1

Поднятие IPv6 в QEMU на Debian

Добавлено: 17 мар 2026, 21:48
ya
Поднятие IPv6 в QEMU на Debian — задача интересная, и способ её решения сильно зависит от того, как именно ваша гостевая система должна общаться с миром.

Самый гибкий и "взрослый" метод — использование TAP-интерфейса и Bridge (моста). Это позволяет виртуалке выглядеть как полноценное устройство в вашей сети.

Вот пошаговый гайд:

1. Подготовка хоста (Debian)
Для начала убедитесь, что на хосте разрешена пересылка трафика (forwarding).

Отредактируйте /etc/sysctl.conf:

Код: Выделить всё

net.ipv6.conf.all.forwarding=1
Примените изменения: sudo sysctl -p

2. Настройка сетевого моста
Установите необходимые утилиты:

Код: Выделить всё

sudo apt install bridge-utils iproute2
Создайте мост (например, br0) в /etc/network/interfaces или через nmcli. Если работаете через классический /etc/network/interfaces:

Код: Выделить всё

auto br0
iface br0 inet6 auto  # Или static, если у вас статика
    bridge_ports eth0 # Замените на ваш физический интерфейс
    bridge_stp off
3. Запуск QEMU с TAP-интерфейсом
Чтобы QEMU мог использовать мост, нужен скрипт инициализации. Обычно это /etc/qemu-ifup, но можно указать параметры напрямую в команде запуска.

Пример команды запуска:

Код: Выделить всё

qemu-system-x86_64 \
  -enable-kvm \
  -m 2G \
  -drive file=debian_guest.qcow2,format=qcow2 \
  -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
  -device virtio-net-pci,netdev=net0 \
  -daemonize
После запуска добавьте tap0 в мост:

Код: Выделить всё

sudo ip link set tap0 up
sudo brctl addif br0 tap0
4. Настройка внутри гостевой ОС
Если в вашей сети работает Router Advertisement (RA), гостевой Debian подхватит IPv6 автоматически (SLAAC). Если нет — настройте статику внутри виртуалки в /etc/network/interfaces:

Код: Выделить всё

iface ens3 inet6 static
    address 2001:db8::10
    netmask 64
    gateway 2001:db8::1
Альтернатива: Пользовательский режим (SLIRP)
Если вам не нужен доступ к виртуалке извне, а нужен только выход в интернет из неё, можно использовать стандартный -net user, но с явным указанием IPv6 префикса:

Код: Выделить всё

-netdev user,id=net0,ipv6=on,ipv6-prefix=fd00::/64 -device virtio-net-pci,netdev=net0
Примечание: SLIRP для IPv6 работает, но он менее производителен и имеет ограничения по сравнению с TAP.

Важные нюансы:
Firewall: Не забудьте проверить ip6tables или nftables на хосте. Трафик через мост может блокироваться.

Размер MTU: Иногда IPv6 капризничает, если MTU на туннелях или мостах настроен некорректно (стандарт — 1500, но для некоторых VPN/туннелей может потребоваться 1280).