Zero_real 4 Опубликовано: 2010-11-07 20:26:58 Share Опубликовано: 2010-11-07 20:26:58 Доброго времени суток! Есть роутер с FreeBSD и 3 каналами в интернет. На нем вертется старгазер. Задача: Нужно средства ipfw fwd раскидывать юзеров по каналам, т.е. первый подключился - ушел на первый канал, второй - на второй, третий - на третий, четвертый - снова на первый, пятый - на второй и т.д. Как такое реализовать? Понимаю, что нужно писать скрипт с условиями взависмости от ID, но как именно пописать это все пока не догадался. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-11-08 00:10:59 Share Опубліковано: 2010-11-08 00:10:59 Не id, а ip или логин. ID меняется самим СТГ периодически. Посмотрите в сторону скрипта OnConnect. Его примеров тут масса. По аналогии с ним попробуйте. if [ $trf = 'b2048' ] then ${fwcmd} table 18 add ${ip} ${fwcmd} add `expr $id '*' 10 + 11000` pipe 20400 all from table\(49\) to $ip ${fwcmd} add `expr $id '*' 10 + 11001` pipe 20410 all from $ip to table\(49\) echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log exit 1 Ссылка на сообщение Поделиться на других сайтах
Zero_real 4 Опубліковано: 2010-11-08 07:38:33 Автор Share Опубліковано: 2010-11-08 07:38:33 Вы немножко не поняли. Как раз по ID. Это даже плюс, что он меняется. Т.е. если ID=1 - форвардим юзера в первый канал. ID=2 - форвардим юзера во второй канал ID=3 - фовардим юзера в третий ID=4 - форвардим опять в первый ID=5 - во второй и т.д. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2010-11-08 08:11:17 Share Опубліковано: 2010-11-08 08:11:17 Не id, а ip или логин. ID меняется самим СТГ периодически. Посмотрите в сторону скрипта OnConnect. Его примеров тут масса. По аналогии с ним попробуйте. if [ $trf = 'b2048' ] then ${fwcmd} table 18 add ${ip} ${fwcmd} add `expr $id '*' 10 + 11000` pipe 20400 all from table\(49\) to $ip ${fwcmd} add `expr $id '*' 10 + 11001` pipe 20410 all from $ip to table\(49\) echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log exit 1 В процессе работы не меняется. Ссылка на сообщение Поделиться на других сайтах
Zero_real 4 Опубліковано: 2010-11-08 09:09:06 Автор Share Опубліковано: 2010-11-08 09:09:06 Проще говоря, как сделать такое на шелл скрипте? R1 := i; If Frac(R1/3) = 0 then R2 := 3 else If Frac(R1/3) > 0.5 then R2 := 2 else R2 := 1; Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-11-08 10:21:28 Share Опубліковано: 2010-11-08 10:21:28 Сделал вот так как здесь описал, но сомнения гложат. Выложите пожалуйста образец OnConnect и OnDisconnect для IPFW NAT, на основе таблиц. И кусочек скрипта фаерволла, относящегося к этому вопросу. Для самопроверки. Ссылка на сообщение Поделиться на других сайтах
Zero_real 4 Опубліковано: 2010-11-08 18:24:35 Автор Share Опубліковано: 2010-11-08 18:24:35 уже решил скриптом на php. Спасибо за ответы. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас