LinuxForum.Fans
Тема

Vde + Qemu + iptables

Автор: zenon 47 сообщений 15263 просмотров
#48521

/etc/ip_rulles.lst
/etc/ip6_rulles.lst

Эти файлики перед перезагрузкой должны были появиться.

#48625

Не удалилось. Хорошо. Сделаем так:

text
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE 

ЗЫ: раз файлики есть, значит правила автосохраняются. Мои поздравления. Работает? Попробуйте сделать

text
# ifdown tap0
# ifup tap0

На что-нибудь жалуется?

#48749

От рута:
`--# ifdown tap0
ifdown: interface tap0 not configured
.-(/home/zion/qemu/hdd)-----------------------------------------------------------------------------------------------------(root@ion)-
`--# ifconfig
eth0 Link encap:Ethernet HWaddr 00:90:f5:67:5a:b1
inet6 addr: fe80::290:f5ff:fe67:5ab1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5490 errors:0 dropped:0 overruns:0 frame:0
TX packets:6819 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1887379 (1.7 MiB) TX bytes:2775958 (2.6 MiB)
Interrupt:21 Base address:0xe800

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1036 errors:0 dropped:0 overruns:0 frame:0
TX packets:1036 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:82396 (80.4 KiB) TX bytes:82396 (80.4 KiB)

ppp0 Link encap:Point-to-Point Protocol
inet addr:188.187.66.199 P-t-P:88.87.65.94 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:5124 errors:0 dropped:0 overruns:0 frame:0
TX packets:6804 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:1728681 (1.6 MiB) TX bytes:2625471 (2.5 MiB)

tap0 Link encap:Ethernet HWaddr 2a:a5:af:bb:49:73
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::28a5:afff:febb:4973/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:10354 (10.1 KiB)

.-(/home/zion/qemu/hdd)-----------------------------------------------------------------------------------------------------(root@ion)-
`--# ifdown tap0
ifdown: interface tap0 not configured
.-(/home/zion/qemu/hdd)-----------------------------------------------------------------------------------------------------(root@ion)-
`--# ifdown up
ifdown: interface up not configured
.-(/home/zion/qemu/hdd)-----------------------------------------------------------------------------------------------------(root@ion)-
`--#

Не понял юмора....

#48794
text
pre-up /sbin/iptables-restore < /etc/ip_rulles.lst
pre-up /sbin/ip6tables-restore < /etc/ip6_rulles.lst
post-down /sbin/ip6tables-save > /etc/ip6_rulles.lst
post-down /sbin/iptables-save > /etc/ip_rulles.lst

Я заметил, что eth0 в interfaces отмечен как manual, так что может стоит это перенести в ppp секцию?

Реакция на манипуляции с tap0 не нормальные. Вдвойне не понятно, отчего оно тогда работает (=
Попробуйте закоментить

text
pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0
post-down /bin/kill `/bin/cat /var/run/vde2/vde.pid`

И ребутнутся. Будем ловить ошибки...

#48846

После сих манипуляций
kvm -net nic -net vde,sock=/var/run/vde2/vde.ctl -hda '/home/zion/qemu/hdd/deb.img'
ноль эмоций

вручную
vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0

kvm -net nic -net vde,sock=/var/run/vde2/vde.ctl -hda '/home/zion/qemu/hdd/deb.img'&
запустилось нормально...

но
zsh 1015 % ssh root@192.168.0.2
ssh: connect to host 192.168.0.2 port 22: No route to host

хотя гость 192.168.0.2 запущен.....

#48893

newzenon, не, это понятно, что он отказывается видить гостя, мы же свитч убили.

Важен вопрос, жалуются ли команды ifdown и ifup, как тут:

newzenon написал:
ifdown: interface tap0 not configured
.-(/home/zion/qemu/hdd)-----------------------------------------------------------------------------------------------------(root@ion)-
`--# ifdown up
ifdown: interface up not configured

Сделайте /etc/init.d/networking restart и вывод сюда скиньте.

#49265

После ребута:


zsh 1013 % cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 down
pre-up /sbin/ifconfig eth0 hw ether 00:90:f5:67:5a:b1
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual

auto tap0
iface tap0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
pre-up /usr/sbin/vde_tunctl -t tap0
# pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0

pre-up /sbin/iptables-restore < /etc/ip_rulles.lst
pre-up /sbin/ip6tables-restore < /etc/ip6_rulles.lst
post-down /sbin/ip6tables-save > /etc/ip6_rulles.lst
post-down /sbin/iptables-save > /etc/ip_rulles.lst

post-up /usr/bin/slirpvde -s /var/run/vde2/vde.ctl --dhcp
# post-down /bin/kill `/bin/cat /var/run/vde2/vde.pid`
post-down /usr/sbin/vde_tunctl -d tap0

zsh 1014 % sudo /etc/init.d/networking restart
[sudo] password for zion:
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).
Reconfiguring network interfaces...Plugin rp-pppoe.so loaded.
Set 'tap0' persistent and owned by uid 0
slirpvde: Could not connect to the VDE switch at '/var/run/vde2/vde.ctl': No such file or directory
Failed to bring up tap0.
done.
[Птн 10/06/04 15:22 MSD][pts/0][x86_64/linux-gnu/2.6.34][4.3.10]
<zion@ion:~/qemu/hdd>

чятдн?

#49271
text
post-up /usr/bin/slirpvde -s /var/run/vde2/vde.ctl --dhcp

Удалить. Сделать /etc/init.d/networking restart

Вывод сюда

#49851

Все вроде заработало :) + гостя расшарил...

auto tap0
iface tap0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
pre-up /usr/sbin/vde_tunctl -t tap0 # -u zion
pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0
pre-up /sbin/iptables-restore < /etc/ip_rulles.lst
post-down /sbin/iptables-save > /etc/ip_rulles.lst
# pre-up /sbin/ip6tables-restore < /etc/ip6_rulles.lst
# post-down /sbin/ip6tables-save > /etc/ip6_rulles.lst
post-down /bin/kill `/bin/cat /var/run/vde2/vde.pid`
post-down /usr/sbin/vde_tunctl -d tap0

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

ifdown tap0
Set 'tap0' nonpersistent

ifup tap0
Set 'tap0' persistent and owned by uid 0

Хотя если так:
/etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).
Reconfiguring network interfaces...Set 'tap0' nonpersistent
Plugin rp-pppoe.so loaded.
Set 'tap0' persistent and owned by uid 0
done.

Если stop/start, то не ругается, может задержку где выставить?

Владельца на tap0 - оставлять рута?

И позакрывать в iptables наверное все кроме нужного надо.

#49863

newzenon, я на

text
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).

не обращаю внимания, не люблю рестартовать сразу всю сеть, пользуюсь ifup и ifdown.

newzenon написал:
Владельца на tap0 - оставлять рута?

Это вообще не имеет значения, мы ходим не через интерфейс, а через свитч (он запущен под рутом, так что пусть и владелец интерфейса будет рут).

newzenon написал:
И позакрывать в iptables наверное все кроме нужного надо.

Не вопрос, главное, что хочешь получить на выходе.

#49865
zerg написал:

Не вопрос, главное, что хочешь получить на выходе.

Несколько портов открытых наружу, переброс http, ftp на гостя, все остальное закрыть, пока ка-то так.
И вот интересно noip будет работать в таком варианте, хотя какая ему разница...

#49898
text
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -i tap0 -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
# iptables -A OUTPUT -o tap0 -j ACCEPT
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -o tap0 -m state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i tap0 -m state NEW,RELATED,ESTABLISHED -j ACCEPT
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

и

открытие порта

text
# iptables -A INPUT -p tcp(udp) --dport номер_порта -m state --state NEW -j ACCEPT

проброс

text
# iptables -A PREROUTING -p tcp(udp) --dport номер_порта -j DNAT --to-destination ip:port

?

#49909

Упс...


iptables -A FORWARD -o tap0 -m state RELATED,ESTABLISHED -j ACCEPT
Bad argument `RELATED,ESTABLISHED'
Try `iptables -h' or 'iptables --help' for more information.

iptables -A FORWARD -i tap0 -m state NEW,RELATED,ESTABLISHED -j ACCEPT
Bad argument `NEW,RELATED,ESTABLISHED'
Try `iptables -h' or 'iptables --help' for more information.

zerg А ната входящего то нет...

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
заменил на iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE

#50031

ОК, очепятался, параметр пропустил:

text
# iptables -A FORWARD -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i tap0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
newzenon написал:
zerg А ната входящего то нет...

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
заменил на iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE

А нафига? Оно и так натит... См.

text
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Этого достаточно.

#50036

Ну да натит, не тудой я...
Проброс порта тоже не катит:

iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
iptables: No chain/target/match by that name.

Может так:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80

Чувствую развлекуха еще пока есть.... :)

Наковырял, критикуй:

#!/bin/sh
# RESET
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# reset the default policies in the nat table.
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# reset the default policies in the mangle table.
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
# flush all the rules in the filter and nat tables.
iptables -F
iptables -t nat -F
iptables -t mangle -F
# erase all chains that's not default in filter and nat table.
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Let's go
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o tap0 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tap0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -A INPUT -p tcp --dport 51000:51010 -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
# eof

#50065
newzenon написал:
iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
iptables: No chain/target/match by that name.

Может так:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80

Спасибо за правки. Я ошибся, не указав таблицу (=

newzenon написал:
Наковырял, критикуй:

много букоф smile
вроде нормально. Один раз исполняешь скрипт, делаешь

text
iptables-save > /etc/ip_rulles.lst

Дальше само... На первое время хватит (=

#50067

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

zerg не пойму я, на каком этапе свич считается подключенным к хосту?

т.е. Захотел сечас софт-роутер (например IpCop) поставить, и через него подключить свич, по идее для этого втрой свич не нужен, только tap еще один поднять?

#50783
text
auto tap0
iface tap0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    pre-up /usr/sbin/vde_tunctl -t tap0     # Поднимается хост интерфейс
    pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0     # А тут свитч садится на интерфейс
    pre-up /sbin/iptables-restore < /etc/ip_rulles.lst
    post-down /sbin/iptables-save > /etc/ip_rulles.lst
    # pre-up /sbin/ip6tables-restore < /etc/ip6_rulles.lst
    # post-down /sbin/ip6tables-save > /etc/ip6_rulles.lst
    post-down /bin/kill `/bin/cat /var/run/vde2/vde.pid`
    post-down /usr/sbin/vde_tunctl -d tap0
newzenon написал:
т.е. Захотел сечас софт-роутер (например IpCop) поставить, и через него подключить свич, по идее для этого втрой свич не нужен, только tap еще один поднять?

А зачем? Всё можно (и нужно) на хост машине разрулить. Там ведь тот же iptables будет...

#50810

Дистрибутив роутерный посмотреть в действии:

local (eth0, ppp0) => guest - router (tap0) => guest1, guest2, guest3

Ну допустим создам 3 интерфейса по типу:
tunctl -t tap1
ifconfig tap1 10.10.0.1 netmask 255.255.255.0 up

Подключить только не пойму как их гостям,...

ммм огород какой-то получается, прям матрешка какаято...

#50812

newzenon, я пр то и имел ввиду, что слойка получается... Надо просто тогда ещё один свитч поднять.

text
auto tap0
iface tap0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    pre-up /usr/sbin/vde_tunctl -t tap0
    pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde.pid -t tap0
    pre-up /usr/bin/vde_switch -x -n 5 -s /var/run/vde2/vde1.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde1.pid   # Создаём второй свитч
    pre-up /sbin/iptables-restore < /etc/ip_rulles.lst
    post-down /sbin/iptables-save > /etc/ip_rulles.lst
    # pre-up /sbin/ip6tables-restore < /etc/ip6_rulles.lst
    # post-down /sbin/ip6tables-save > /etc/ip6_rulles.lst
    post-down /bin/kill `/bin/cat /var/run/vde2/vde.pid`
    post-down /bin/kill `/bin/cat /var/run/vde2/vde1.pid`   # Правило для уничтожения второго свитча
    post-down /usr/sbin/vde_tunctl -d tap0
Войдите или зарегистрируйтесь, чтобы ответить.