LINUX.ORG.RU

samba и qemu

 ,


0

1

Помогите нубу, у меня есть самба с такими параметрами

interfaces = lo
, если я правильно понимаю — самба в таком случае сидит на локалхосте(127.0.0.1), чтобы использовать самбу в qemu мне нужно сделать мост br0 и подключить его к интерфейсу lo, а дальше задать такие параметры qemu
-net bridge,br=br0
, я правильно понимаю? Проблема в том, что я не знаю как подключить br0 к lo, brctl говорит Invalid argument.

В общем говоря мне нужно повесить самбу на интерфейс без интернета и пробросить его в qemu, я не знаю как это сделать, гугление не помогло.

Лично я ничего не понял из написанного. Поэтому сразу перейду к вопросам:

  1. Какой дистр на хосте и на виртуалке?
  2. «нужно повесить самбу на интерфейс без интернета» — какие интерфейсы есть на хосте и куда они смотрят? Покажи вывод ifconfig.
  3. «использовать самбу в qemu» — тебе надо самбу сделать доступной только для хоста или для всей сети?
ivn86
()
Ответ на: комментарий от ivn86

1. На хосте арч с openrc. На виртуалке гента.

2. На хосте есть lo(127.0.0.1) и eth1(основной интерфейс с интернетом). Вывод ifconfig сейчас вбросить не могу, впрочем и без него должно быть понятно.

3. Мне нужно сделать доступной самбу для генты в виртуальной машине, при этом я не хочу давать генте интернет.

Если я сделаю так:

# brctl addbr br0
# brctl addif br0 eth1
# qemu-system-x86_64 -net nic -net bridge,br=br0 -hda gentoo
то я успешно смогу подключиться к самбовскому каталогу из виртуалки, но и интернет у генты будет. На сколько я понимаю — я в brctl addif br0 >>eth1<< пробрасываю по мосту именно интерфейс с интернетом, вот я и хочу вместо eth1 пробросить что-то без интернета, lo не работает, есть мысль создать руками какой-то интерфейс на хосте, посадить на него самбу и его подключить его к мосту, но я не понимаю как это сделать.

koriczi
() автор топика
Ответ на: комментарий от koriczi

Я ошибочно думал, что у тебя самба бежит в виртуалке, но теперь понял, что она на самом хосте. И виртуалка должна получить к ней доступ. Посмотри здесь, насколько я понял там как раз твой случай.

ivn86
()
Ответ на: комментарий от ivn86

Ничего не понял, аще.

Там по другому всё делается, сложно и непонятно, вот не могу разобраться и всё, тапы какие-то, сложно, сложно, сложно.

Мне бы просто создать ещё один сетевой интерфейс на хосте, вполне возможно это сработает, как? А может я и ошибаюсь, но в любом случае тапы мне не нужны, ОП того треда руками мосты делает, а я -net bridge,br=br0 , в таком случае тап сам создаётся, а там нет, я путаюсь, путаюсь, сложно, сложно, сложно.

koriczi
() автор топика

Самбу надо вешать на интерфейс-мост. Нежелательных клиентов отрежь файрволом.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Интерфейс-мост это, например, eth1 в данном примере > «brctl addif br0 eth1»? Если да, то я хочу просто создать свой новый eth2 руками НО без интернета, подобие lo, такое возможно? Пытался ip link add eth2 type ???, но не знаю какой тип ему указать, на всё еггоги, только bridge или dummy могу создать.

koriczi
() автор топика

В общем говоря мне нужно повесить самбу на интерфейс без интернета

а в чем проблема создать какой-нибудь br_local или br_lan?

Если я сделаю так:

# brctl addbr br0
# brctl addif br0 eth1
# qemu-system-x86_64 -net nic -net bridge,br=br0 -hda gentoo

зачем? Есть же virtio и shared folder. Зачем тебе для этого САМБА? Самба нужна толко если в госте венда, которая тупо не умеет shared folder

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от koriczi

Интерфейс-мост

Нет, это br0 в данном примере.

Если да, то я хочу просто создать свой новый eth2 руками НО без интернета

Что? К чему этот интерфейс будет привязан? Почитай теорию. Есть dummy-интерфейсы(не уверен что они имеют MAC-адреса), если алиас-интерфейсы, если veth(это грубо говоря труба из двух интерфейсов - входа и выхода, незаменима для network namespace).

Объясни что ты хочешь сделать. Зачем тебе новый интерфейс?

Создаёшь пустой мост. Вешаешь туда самбу. Добавляешь туда проводной интерфейс, через который у тебя наверняка и идет интернет. Добавляешь в этот мост виртуалку qemu. Далее фильтруешь всё что тебе не нравится файрволом. Да-да, Линукс умеет создавать фильтрующие мосты, где проходит не весь трафик, а только то что тебе нужно.

А уж там сам решишь кто куда и зачем сможет ходить.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

К чему этот интерфейс будет привязан?

Ну есть же lo! К чему он привязан? Ну его аналог хочу, вот и всё. Ладно, с теорией у меня действительно плохо, об этом я уже говорил.

Добавляешь туда проводной интерфейс, через который у тебя наверняка и идет интернет.

Нельзя! Нельзя! На самом деле я сейчас фактически сношаюсь с виндой, просто тестирую в линуксе, тут понятнее и удобнее. Да, я ставлю винду на виртуалку, И Я НЕ ХОЧУ ДАВАТЬ ЕЙ ИНТЕРНЕТ НИКАКИМ ОБРАЗОМ. НИКАКИМ.

Далее фильтруешь всё что тебе не нравится файрволом. Да-да, Линукс умеет создавать фильтрующие мосты, где проходит не весь трафик, а только то что тебе нужно.

Я могу пустить в винду только самбовский трафик?

koriczi
() автор топика
Ответ на: комментарий от targitaj

зачем? Есть же virtio и shared folder. Зачем тебе для этого САМБА?

Как я уже написал — у меня винда, потому только самба.

br_local или br_lan?

А это как? Возможно я неправильно гуглю, но в гугле пусто. Оно выполнит мои задачи? Чтобы самба в винду без интернета.

koriczi
() автор топика
Ответ на: комментарий от koriczi

/etc/network/interfaces

iface br_10_2_12_0 inet static
	bridge_ports none
	bridge_stp on
	bridge_fd 0
	address 10.2.12.1
	netmask 255.255.255.0
#	gateway

iface br_wan inet manual
	bridge_ports none
	bridge_stp on
	bridge_fd 0
в деб-системах это делается элементарно

Если задаёшь бриджу адрес, то он STATIC, если адреса нет, то MANUAL. И не забудь их в auto перечислить

auto		lo	br_lan_111 br_10_2_12_0

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 3)
Ответ на: комментарий от targitaj
# ls /etc/network
ls: cannot access '/etc/network': No such file or directory

Реквестирую способ под openrc. (это же у тебя systemd, я правильно понимаю?)

koriczi
() автор топика
Ответ на: комментарий от koriczi

И Я НЕ ХОЧУ ДАВАТЬ ЕЙ ИНТЕРНЕТ НИКАКИМ ОБРАЗОМ. НИКАКИМ.

-A FORWARD -i br0 -m physdev --physdev-in your_windows_tap_device -j DROP

Одна строчка. Одна строчка в файрволе, Карл! И винда дальше хоста никуда не уйдет. Такую же строчку в INPUT - и она и на хостовую машину не попадет(но тогда наверное проще вообще не делать в ней сеть).

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от koriczi

Я могу пустить в винду только самбовский трафик?

Достаточно включить bridged firewall так(не забудь записать данный параметр на постоянку в /etc/sysctl.conf)

sysctl -w net.bridge.bridge-nf-call-iptables=1

Затем пишешь правила на файрвол для фильтрации трафика на мосту как тебе угодно.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte
# iptables -A FORWARD -i br0 -m physdev --physdev-in tap0 -j DROP
iptables: No chain/target/match by that name.

Что я нет так делаю? br0 есть, связан с основным интернет-интерфейсом. tap0 есть, его автоматически создал qemu.

Also

Такую же строчку в INPUT

Просто заменить -A FORWARD на -A INPUT ?

koriczi
() автор топика

Мост (br0) из одного интерфейса tap0, qemu вешается на tap0, samba на br0. dnsmasq раздает виртуалке айпишку. iptables натит виртуалку в интернеты, если nat не использовать - будет как раз то, что нужно - виртуалка без интернетов, но с самбой.
Как то так:

conf.d/net

# tap0
tuntap_tap0="tap"
config_tap0="null"

# br0
bridge_br0="tap0"
config_br0="192.168.250.1/24"
mac_br0="aa:bb:cc:dd:ee:ff"
rc_net_br0_need="net.tap0"

smb.conf

[global]
	workgroup = WORKGROUP
	server string = Samba Server Version %v
	netbios name = samba
	bind interfaces only = yes
	interfaces = br0

dnsmasq.conf

strict-order
except-interface=lo
bind-interfaces
interface=br0
dhcp-range=192.168.250.2,192.168.250.2

iptables

Chain POSTROUTING (policy ACCEPT 1224K packets, 80M bytes)
 pkts bytes target     prot opt in     out     source               destination         
50296 3182K MASQUERADE  all  --  *      wlp2s0  192.168.250.2        0.0.0.0/0           

qemu

qemu-system-x86_64 \
...
-net nic,vlan=0,model=virtio -net tap,vlan=0,ifname=tap0,script=no,downscript=no
...

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 2)
Ответ на: комментарий от Lavos

Спасибо за ответ, но сам не разберусь.

conf.d/net

Конфиг создал, даже ребутнул систему, но в ifconfig интерфейсов br0 и tap0 не вижу. Пробовал создать руками, но эти интерфейсы на настройки из конфига не реагируют. Как правильно сделать?

iptables

Как iptables'om создать аналогичный конфиг?

koriczi
() автор топика
Ответ на: комментарий от koriczi

Это был конфиг генты, тебе надо пояндексить как создаётся tap-интерфейс в твоем дистрибутиве. А iptables тебе не нужен, у меня он выпускает виртуалку в интернет через nat, тебе же это не надо.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

Это был конфиг генты

Я понимаю, потому тоже делаю на генте. Может пакет какой то не стоит? Хотя по идеи оно должно из коробки работать.

koriczi
() автор топика
Ответ на: комментарий от koriczi

Нужны пакеты sys-apps/usermode-utilities и net-misc/bridge-utils. Первый для создания tap, второй для br.
Ну и, естественно, в ядре должна быть включена поддержка tap и br.
Да, еще надо же сделать симлинки:

# ls -la /etc/init.d/net.{tap0,br0}
lrwxrwxrwx 1 root root 18 сен  7  2015 /etc/init.d/net.br0 -> /etc/init.d/net.lo
lrwxrwxrwx 1 root root 18 сен  7  2015 /etc/init.d/net.tap0 -> /etc/init.d/net.lo
И добавить в загрузку:
# rc-update | grep -E 'tap|br'
              net.br0 |      default                           
             net.tap0 |      default                           

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 1)
Ответ на: комментарий от Lavos

Работает, нужны были симлинки.

Так вот

  • Интерфейсы — чек.
  • smbd и nmbd — чек.
  • dnsmasq (просто включил) — чек.
  • qemu с нужными параметрами — чек.

Вроде ничего не забыл, но в виртуалке следующая картина — http://i.imgur.com/ocqAZRN.png , как самбу-то примонтировать?

Вот хост — http://i.imgur.com/Llv1U1N.png

koriczi
() автор топика
Ответ на: комментарий от koriczi

А в виртуальной системе где сетевой интерфейс? Может драйвера на virtio отсутствуют. Ну либо model=virtio заменить на что-нибудь другое, например model=rtl8139.

Lavos ★★★★★
()
Ответ на: комментарий от koriczi

А айпишка на интерфейсе где? Смотреть либо в сторону dhcp-клиента в виртуалке, либо в сторону dhcp-сервера на хосте.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

Ребутнулся, включил всё поочерёдно, запустил виртуалку — заработало. Всё как надо, в интернеты пролезть не можешь но самба работает. Спасибо, добра.

koriczi
() автор топика
Ответ на: комментарий от koriczi

Хотя как это запустить на винде я понятия не имею. Зашел в cmd.exe, написал ipconfig /all — там пусто. Как это использовать? Куда тут копать? Извиняюсь за оффтопик.

koriczi
() автор топика
Ответ на: комментарий от koriczi

Установить на венду драйвера virtio, брать тут. Для десяточки профессиональной брать latest, для семерочки максимальной/копроративной stable или latest.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

Взял latest исошник, вбросил в qemu, не вижу исполняемых файлов. Как его установить? Уже вот целый час туплю. Можно объяснение для дебилов?

koriczi
() автор топика
Ответ на: комментарий от koriczi

Открыть диспетчер устройств, найти там страдающее без драйверов сетевое устройство, куда-то там нажать (нет венды под рукой), указать путь до драйвера. virtio-драйвер для сетки лежит в дире NetKVM внутри iso.

Lavos ★★★★★
()
Ответ на: комментарий от koriczi

Покажи zcat /proc/config.gz, скорее всего у тебя не собран physdev match для файрвола

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.