Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Iptables help бесплатные подсети  (Прочитано 959 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Iptables help бесплатные подсети
« : 31 Октября 2008, 11:53:23 »
Проблема такого рода
 есть локальная сеть, есть интернет, у провайдера есть своя бесплатная зона
в интернет ходят юзеры через vpn вот хочу организовать чтоб юзеры ходили на бесплатную зону без подключения
создаю правила
iptables="IPT"

inet1="xxx.xxx.xxx.xxx/24"
inet2="xxx.xxx.xxx.xxx/21"
inet3="xxx.xxx.xxx.xxx/19"

inet2_1="xxx.xxx.xxx.xxx/21"
inet2_2="xxx.xxx.xxx.xxx/23"
inet2_3="xxx.xxx.xxx.xxx/18"
и так далее до 20

$IPT -N localzone
$IPT -A localzone -p all -s $inet1 -j ACCEPT
$IPT -A localzone -p all -s $inet2 -j ACCEPT
$IPT -A localzone -p all -s $inet3 -j ACCEPT

$IPT -N localzone2
$IPT -A localzone2 -p all -s $inet2_1 -j ACCEPT
$IPT -A localzone2 -p all -s $inet2_2 -j ACCEPT
$IPT -A localzone2 -p all -s $inet2_3 -j ACCEPT
и так делее до 20 подсетей

так как у меня пользователей около 50 не буду же я писать допустим из 25 пользователям правила по 40 штук на каждого из них
« Последнее редактирование: 31 Октября 2008, 12:07:45 от ulan44 »

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #1 : 31 Октября 2008, 17:37:11 »
Массивы, цикл for, команда seq?
StarDict и Mueller помогут против английского мануала.

Оффлайн SFireMan

  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #2 : 31 Октября 2008, 19:04:28 »
Или просто задать всех пользователей через подсеть, к приеру 192.168.10.0/24 - разрешит доступ для пользователей чей IP адрес начинается на 192.168.10.

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #3 : 01 Ноября 2008, 04:17:48 »
ну у меня адресация в сети 3,6,0,0/8

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #4 : 01 Ноября 2008, 06:59:59 »
Массивы, цикл for, команда seq?

А можно по подробнее ?

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #5 : 04 Ноября 2008, 18:15:10 »
/* хорошая идея, сработало :)) */

Костяк обрисую. Тема и проста и глубока - шелл скрипт на языке Bash.
Создаётся файл user_list.txt :
user name parameter1 parameter2
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
Создаётся файл setup_iptables.sh :
#!/bin/bash

path_2_user_list="."
user_list_file="user_list.txt"

exit_code_error=100
exit_code_success=0

if ! [ -e "$path_2_user_list/$user_list_file" ] ; then
   echo "[$0] Error. File \"$user_list_file\" in directory \"$path_2_user_list\" not found."
   exit $exit_code_error
fi

i=0
while read word1 word2 word3 word4 word5 ; do
   # если на входе возник лишний параметр, то... - так проверять быть полезно на случай ошибок оператора и т.д. и т.п., проверять можно все параметры...
   if ! [ -z "${word5}" ] ; then
      echo "[$0] Warning. Extra parameter detected!"
   fi
   # предположим мне нужен только третий параметр и я заполняю массив из "третьих" параметров
   storage[${i}]=${word3}

   # может пригодится и такое...
   string="$word1 $word2 $word3 $word4"
   echo "Iteration number $i, choosen parameter is $(echo "$string" | awk '{print $3}')"

   # увеличиваю счётчик
   i=$(($i+1))
done < "${path_2_user_list}/${user_list_file}"

echo "Now printing collected data:"

for j in $(seq 0 $i) ; do
   # в строке удаляю табуляции и затем заменяю буквы "a" на символ "*"
   storage[${j}]="$(echo "${storage[${j}]}" | expand | sed 's/a/*/g')"
   if [ -z ${storage[${j}]} ] ; then
      echo "Choosen param is void string; j=$j."
   else
      echo "Choosen param = ${storage[${j}]} ; j=$j."
   fi
done
exit $exit_code_success

Сделать
chmod +x iptables_setup.sh
Теперь если оба файла лежат в одном каталоге и в консоли перейти в этот каталог и выполнить
./iptables_setup.sh
то ... Вот так оно работает.

Дальше уже Ваше дело, как применить эти приёмы для формирования правил iptables.
StarDict и Mueller помогут против английского мануала.

Оффлайн Evgeshka

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Iptables help бесплатные подсети
« Ответ #6 : 04 Ноября 2008, 19:35:47 »
Проблема такого рода есть локальная сеть, есть интернет, у провайдера есть своя бесплатная зона в интернет ходят юзеры через vpn вот хочу организовать чтоб юзеры ходили на бесплатную зону без подключения создаю правила iptables="IPT"

А зачем Вам iptables? Вам надо в сторону маршрутизации смотреть. iproute2.
« Последнее редактирование: 04 Ноября 2008, 19:37:34 от Evgeshka »

 

Страница сгенерирована за 0.015 секунд. Запросов: 19.