Пост-алкогольный-комментарий

Собственно неспроста указано, что действие проходило после пива. По умолчанию libvirt делает всё это сам из коробки. Любите virbr и будьте счастливы, а статью не читайте, технической ценности в ней мало.

Исходные данные

Собственный компьютер с идеально настроенной Ubuntu 10.04 и Windows XP.Ноутбук, принадлежащий любимой матушке, на котором имеется Ubuntu 11.04 и Windows 7. (Матушка привыкла к gnome2, а на железе Samsung - это единственный Linux в котором он находится в более менее приемлемом состоянии, при том что работают обе сетёвки и видеокарта позволяет запускать родное разрешение экрана).МФУ HP 3520, настройки которого таинственным образом слетают после перезагрузки в Windows XP, драйвера которого не устанавливаются на Windows 7, а версия под Linux из имеющегося более менее легко удалось собрать только под Ubuntu 10.04.Нежелание при необходимости распечатки чего-либо матушкой перезагружаться в Linux.Алкогольное отравление тремя кружками восхитительного тёмного пива.РешениеВоткнуть на матушкин ноутбук виртуальную машину с Ubuntu 10.04, на которой будет настроена печать и сеть к принтеру. 

Проблемы

Если следовать схеме:Создаём bridge, добавляем в него сетёвку через которую ноутбук ходит в интернет и сетёвку виртуалки, то мы жестоко обламаемся в том моменте, что brctl не умеет добавлять wlan в br0.

Собственно, walkaround!

Можно конечно было поиграться с прокси-арпом, но зачем усложнять, когда всё можно решить на уровне простой маршрутизации?Допустим, на беспроводную сетёвку выдаётся адрес из сети 192.168.0.0/24, например 192.168.0.103. При создании виртуальной машины, мы создали мост br0, и сказали virt-install’у создать vnet внутри него.Вешаем на br0 адрес 10.0.0.1/24, внутри виртуалки вешаем адрес 10.0.0.2/24, шлюзом указываем 10.0.0.1, первым делом проверяем, пингуется ли сам шлюз.Когда пингуется - дело остаётся лишь в настройке SNAT:iptables -t nat -I POSTROUTING -s 10.0.0.2 -j SNAT –to-source 192.168.0.103.В итоге и волки сыты (виртуалка в инет ходит) и овцы целы (всё обошлось стандартными средствами).Но ведь это дело ещё и настроить надоТак найти где настраивается файрвол в ubuntu я так и не смог (centos’опроблемы, привык уже к нему), быстренько пришлось наваять маааленького демона куда хардкодом всё забито:#!/bin/bashstart() {        iptables -t nat -I POSTROUTING -s 10.0.0.2/24 -j SNAT –to-source 192.168.0.103}stop() {        iptables -t nat -D POSTROUTING -s 10.0.0.2/24 -j SNAT –to-source 192.168.0.103}case “$1” in        start )                start                ;;        stop )                stop                ;;        restart )                stop                start                ;;        * )                echo “Unknown magic”                iptables -t nat -nvL POSTROUTING                ;;esacСделать apt-get install chkconfigchkconfig –add iptablesи порадоваться тому что это теперь в автозагрузке.С сетью вышло чуточку проще:vim /etc/network/interfacesauto lo br0iface lo inet loopbackiface br0 inet static        bridge_ports eth0 address 10.0.0.1 broadcast 10.0.0.255 netmask 255.255.255.0Красным помечено то, что было добавлено в этот файлик.Имеется трабл - при /etc/init.d/networking restart vnet0 вылетит из br0 и сетка пропадёт.

На деле

Всё значительно проще. Мы просто настроили шлюз на ноутбуке.Менее интересные частиhttp://hplipopensource.com/hplip-web/install/manual/distros/ubuntu.htmlВот эта штука помогла мне заставить мой принтер печатать. И ни одна другая :C