OpenVZ Forum


Home » International » Russian » Жесткая настройка сети
Жесткая настройка сети [message #12440] Sat, 28 April 2007 09:17 Go to next message
Shursander is currently offline  Shursander
Messages: 21
Registered: March 2007
Junior Member
Почитал на http://www.opennet.ru/docs/RUS/virtuozzo/ достаточно путанный и скорее всего старый перевод

Возник вопрос:
как можно жестко настроить сетевые интерфейсы чтобы пользователи виртуальных машин не смогли их изменить (IP-адрес, Мак, Маску и прочее)?


Вроде придумали как делать...
При запуске ВМ используется скрипт vznet.conf
в нем вписываются настройки iptables разрешающие форвард...
/sbin/iptables -A FORWARD -i eth0 -o $VZHOSTIF -d $VETH_IP_ADDRESS -j ACCEPT
/sbin/iptables -A FORWARD -o eth0 -i $VZHOSTIF -s $VETH_IP_ADDRESS -j ACCEPT

Естесно если пользователь меняет адрес у него все перестает работать...


Но возникает следующий вопрос...
Как можно сказать что при запуске vzctl stop выполнятся еще какой то скрипт???


http://www.korpuskula.ru/images/sh/sh-image.gif

[Updated on: Sat, 28 April 2007 09:53]

Report message to a moderator

Re: Жесткая настройка сети [message #12528 is a reply to message #12440] Wed, 02 May 2007 08:35 Go to previous messageGo to next message
Vasily Tarasov is currently offline  Vasily Tarasov
Messages: 1345
Registered: January 2006
Senior Member
А вы используете OpenVZ или Virtuozzo?..
Я что-то не нашёл vznet.conf файл в OpenVZ...
Re: Жесткая настройка сети [message #12541 is a reply to message #12528] Wed, 02 May 2007 12:13 Go to previous messageGo to next message
Shursander is currently offline  Shursander
Messages: 21
Registered: March 2007
Junior Member
uname -a
Linux vm.local.net 2.6.18-ovz028stab027.1-smp #1 SMP Mon Apr 9 16:19:53 MSD 2007 x86_64 x86_64 x86_64 GNU/Linux

Где то в вики (openvz) читал что можно для настройки сети использовать vznet.conf с таким содержанием ...
#!/bin/bash
EXTERNAL_SCRIPT="/usr/sbin/vznetaddroute"

содержание vznetaddroute
#!/bin/sh
#
#

VZCONFDIR=/etc/vz
VZHOSTIF=$BASH_ARGV
VZNETCFG=$VZCONFDIR/conf/$VEID.conf

[ -f ${VZNETCFG} ] && source ${VZNETCFG}

if [[ -n "${VETH_IP_ADDRESS_LAN}" && $VZHOSTIF = "veth$VEID.0" ]]; then
    echo "Adding interface $VZHOSTIF and route $VETH_IP_ADDRESS for VE$VEID to VE0"
    /sbin/ifconfig $VZHOSTIF 0
    echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding
    echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
    echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
    /sbin/ip route add $VETH_IP_ADDRESS_LAN dev $VZHOSTIF
    vzctl exec $VEID /sbin/ifconfig eth0 $VETH_IP_ADDRESS_LAN/19
    vzctl exec $VEID /sbin/route add default gw 192.168.0.1
    /sbin/iptables -A FORWARD -i eth0 -o $VZHOSTIF -d $VETH_IP_ADDRESS_LAN -j ACCEPT
    /sbin/iptables -A FORWARD -o eth0 -i $VZHOSTIF -s $VETH_IP_ADDRESS_LAN -j ACCEPT
fi

if [[ -n "${VETH_IP_ADDRESS_WAN}" && $VZHOSTIF = "veth$VEID.1" ]]; then
    echo "Adding interface $VZHOSTIF and route $VETH_IP_ADDRESS_WAN for VE$VEID to VE0"
    /sbin/ifconfig $VZHOSTIF 0
    echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding
    echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
    echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
    /sbin/ip route add $VETH_IP_ADDRESS_WAN dev $VZHOSTIF
    vzctl exec $VEID /sbin/ifconfig eth1 $VETH_IP_ADDRESS_WAN/28
    vzctl exec $VEID /sbin/route del default
    vzctl exec $VEID /sbin/route add default gw 10.10.10.1
    /sbin/iptables -A FORWARD -i eth1 -o $VZHOSTIF -d $VETH_IP_ADDRESS_WAN -j ACCEPT
    /sbin/iptables -A FORWARD -o eth1 -i $VZHOSTIF -s $VETH_IP_ADDRESS_WAN -j ACCEPT
fi

Вроде все нормально...

И добавил в vps-stop
#!/bin/bash
#  Copyright (C) 2000-2007 SWsoft. All rights reserved.
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#
# This script does clean up after VE shutdown
#
# Parameters are passed in environment variables.
# Required parameters:
#   VEID    - VE id
#   IP_ADDR - VE IP address(es) divided by spaces

. /usr/lib64/vzctl/scripts/vps-functions

# get list of network devices for vzarp
vzgetnetdev

# Add here
vzcheckvar VEID

VZCONFDIR=/etc/vz
VZNETCFG=$VZCONFDIR/conf/$VEID.conf

[ -f ${VZNETCFG} ] && source ${VZNETCFG}

if [ -n "${VETH_IP_ADDRESS_LAN}" ]; then
    echo "Remove route $VETH_IP_ADDRESS for VE$VEID"
    /sbin/iptables -D FORWARD -i eth0 -o veth$VEID.0 -d $VETH_IP_ADDRESS_LAN -j ACCEPT
    /sbin/iptables -D FORWARD -o eth0 -i veth$VEID.0 -s $VETH_IP_ADDRESS_LAN -j ACCEPT
fi

if [ -n "${VETH_IP_ADDRESS_WAN}" ]; then
    echo "Remove route $VETH_IP_ADDRESS_WAN for VE$VEID"
    /sbin/iptables -D FORWARD -i eth1 -o veth$VEID.1 -d $VETH_IP_ADDRESS_WAN -j ACCEPT
    /sbin/iptables -D FORWARD -o eth1 -i veth$VEID.1 -s $VETH_IP_ADDRESS_WAN -j ACCEPT
fi
# End Add

for IP in $IP_ADDR; do
        vzdelrouting $IP
        vzarp del $IP
done
exit 0
# end of script



Все это отрабатывает на ура...
Но вот очередной вопрос может это конечно глюк может мои кривые руки...
Но при запуске iptables на хост машине (VE102) почему то из файла берутся не все строки... т.е. 10 строк отрабатывается нормально а с 11 начинаются проблемы....

При попытке добавить (11 строка в файле)
iptables -A INPUT -s 192.168.1.15 -p tcp --dport ftp -j ACCEPT
пишет
iptables: Unknown error 18446744073709551615

Хотя такую строку отработал нормально (10 строка)...
iptables -A INPUT -s 192.168.5.14 -p tcp --dport ftp -j ACCEPT


Последний вопрос снимается ))) чтение документации помогает в понимании ))) NUMIPTENT=Значение, насколько я понял как раз за это и отвечает... =)


http://www.korpuskula.ru/images/sh/sh-image.gif

[Updated on: Wed, 02 May 2007 12:39]

Report message to a moderator

Re: Жесткая настройка сети [message #12608 is a reply to message #12440] Fri, 04 May 2007 07:24 Go to previous message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

если вы пользуетесь venet сетевыми интерфейсами, то все как раз так и есть - IP менять бесполезно, мака нет, сниферить не получиться и т.д. Или Вам обязательно нужны veth?

По поводу veth. В 2.6.18 на veth по умолчанию стоит MAC filtering, т.е. совсем завалить сеть от имени чужого МАСа не получиться, но IP конечно поставить себе можно. Тогда Вы правильно говорите, необходимо с помощью iptables сделать еще и IP filtering.


http://static.openvz.org/userbars/openvz-developer.png
Previous Topic: Скорость 2.6.20.ovz в VirtualBox
Next Topic: Проблема при компиляции php-5.2.1
Goto Forum:
  


Current Time: Sun Feb 25 14:16:37 GMT 2024

Total time taken to generate the page: 0.03206 seconds