Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qemu tap networking 
:(
    Опции темы
MAKCim
Дата 22.2.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 3
Всего: 207



есть ли способ получить доступ из qemu дальше LAN через tap или аналог?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 22.2.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 3
Всего: 207



опишу более подробно

есть eth0, подключенный к LAN 10.7.0.0/16
есть qemu с linux, из которого нужно получить доступ к LAN и внешней сети через 10.7.0.1

на хостовой системе загрузил tap, поднял виртуальный tap0, связал его с адресом 192.168.0.1

из linux в qemu поднял eth0, связал с адресом 192.168.0.2
там же через route добавил дефолтный gateway 192.168.0.1
там же в /etc/resolv.conf добавил настройки из хостовой системы

на хостовой системе включил ip forwarding через /proc/sys/net/ipv4/ip_forward,
добавил через iptables следующее
Цитата

# iptables -t nat -A POSTROUTING -s 192.168.0.2 -j SNAT --to-source 192.168.1.50
# iptables -t nat -A PREROUTING -d 192.168.1.50 -j DNAT --to-destination 192.168.0.2


поднял alias для eth0 на хостовой системе
Цитата

# ifconfig eth0:1 192.168.1.50


запускаю qemu с параметрами
-net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no

из гостевого linux пингуется только 192.168.0.1 и 10.7.0.160 (адрес моего хоста в LAN)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
nickless
Дата 23.2.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



Я когда-то игрался с qemu, по гентушному howto, там очень кратко описано, но может поможет, идея - использовать бридж. Правда если честно то как раз на сеть под qemu я забил через пару часов, ибо не сильно нужно было  smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
MAKCim
Дата 28.2.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 3
Всего: 207



проблема была в том, что роутер на 10.7.0.1 тупо не передавал дальше пакеты с невалидным (с т. з подсети 10.7.0.0/24) source адресом
т. е в такой конфигурации проблема в принципе не решаема
в моем случае мне нужно было протестить одно клиент-серверное приложение с модифицированным ядром linux (поэтому, собственно, qemu и понадобился)
я добавил
Цитата

# iptables -t nat -A POSTROUTING -d $SERVER -s 192.168.0.2 -j SNAT --to-source 10.7.0.160
# iptables -t nat -A PREROUTING -s $SERVER -j DNAT --to-destination 192.168.0.2

где $SERVER - IP тестового сервака и получил работающую связь виртуальная ОС (тестовый клиент) <-> тестовый сервер
правда при этом связь тестовый сервер -> хостовая ОС была потеряна


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mephist0
Дата 9.3.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.3.2009
Где: Алтайский край, Б арнаул

Репутация: нет
Всего: нет



Ну раз дистрибутив не обозначен, постараюсь описать способ, работающий(надеюсб  smile ) в общем случае

Из под root:
Код

# убираем ip адрес у интерфейса eth0
/sbin/ip addr flush eth0
# "Опускаем" eth0
/sbin/ip link set eth0 down
# Переименовываем reth0 (тут нам нужно знать MAC-адрес инрефейса)
/sbin/nameif reth0 00:11:22:33:44:55
# "Подымаем" reth0 (eth0 в девичестве)
/sbin/ip link set reth0 up
# Создаём мост с именем eth0
/usr/sbin/brctl addbr eth0
# "Подымаем" eth0
/sbin/ip link set eth0 up
# Добавляем к мосту интерфейс reth0
/usr/sbin/brctl addif eth0 reth0
# Назначаем IP для eth0, тут надо отметить, что в случае получения адреса по DHCP нужно будет
# убить dhcpcd (/usr/sbin/dhcpcd -k) перед тем как освободить адрес eth0, а потом снова запустить (/sbin/dhcpcd -n)
ifconfig eth0 192.168.0.3
# Так как DHCP я не использую, а default route погибает вместе с опусканием eth0, его нужно восстановить
route add -net default gw 192.168.0.1
# Создаём tap интерфейс
tunctl -u _имя_пользователя_из_под_которого_пускается_qemu_ -t qeth0
# "Подымаем" qeth0
# добавляем tap-интерфейс в мост
/usr/sbin/brctl addif eth0 qeth0
# Т.к. моя машина смотрит в несколько сетей, дефолтовое действие для цепочки FORWARD у меня DROP.
# Нужно добавить правило, которое выглядит слегка не логично :)
# Если у вас не разрешён форвардинг, надо его разрешить (echo 1 > /proc/sys/net/ipv4/ip_forward)
/sbin/iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT


Теперь из под пользователя запускаем qemu (или kvm, что конечно лучше smile), опции по вкусу smile
Код

kvm -m 128 -hda gw.img -cdrom /mnt/frenzy-1.1-std-RU.iso -net nic,vlan=0,macaddr=52:54:00:12:34:57 -net tap,vlan=0,ifname=qeth0,script=no  -monitor stdio -vnc localhost:0

Всё работает как часы, qemu/kvm даже получает адрес по DHCP

Несколько замечаний:

Зачем нужно переименовывать eth0? У меня eth0 не однократно фигурирует в правилах iptables, если у Вас нет такой проблемы можно дать мосту имя по умолчанию (br0) и не усложнять процедуру.

Если Вы хотите запустить несколько виртуальных машин, то вам понадобится отдельный интерфейс для каждой машины, либо (что ИМХО более разумный выход) воспользоваться программой vde_switch, но это уже другая история smile

Если Вы используете несколько виртуальных машин, не забудьте назначить им разные MAC-адреса (я на эти грабли умудрился наступить smile )

Ну что ж, вроде я ничего не забыл. Желаю удачи  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.