benya 0 Опубликовано: 2005-02-21 14:39:43 Share Опубликовано: 2005-02-21 14:39:43 Стоит СТГ. Стоит себе, никого не трогает. И все бы ничего, но в последнее время левый траффик вырос до небес. После некоторого расследования выяснил, что в момент, когда начинается закачка, можно смело выключать(выгружать) InetAccess. При этом закачка не прекращается, а траффик не считается. И выяснил также, что есть ошибка в правилах FW. SOS, Help, что угодно, только раскажите мне, где эта ошибка? Тексты скриптов прилагаются. =============OnConnect======================== #!/usr/bin/perl $ip=$ARGV[1]; $ip_prov=xxx.xxx.xxx.xxx system("iptables -A FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -A FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -I POSTROUTING 1 -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); ===============OnDisconnect================ #!/usr/bin/perl $ip=$ARGV[1]; $ip_prov=xxx.xxx.xxx.xxx; system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); Все сводится к двум вопросам: 1. Как эту всю писанину упростить? Я видел на сайте СТГ в доках, что там циклы используются. Но здесь скрипт написан на Perl, а как это все сделать на этом языке, я не знаю. 2. Как собственно закрыть саму дыру? Где именно ошибка? Почему так написаны сами скрипты, не знаю. И не спрашивайте. Не я писал. Сам только расчехляю. Еще раз повторюсь, что все работает правильно, за исключением этой ситуации. Факт на лицо. Т.е. речь идет именно о заделывании дыры, а не о переделывании. Кто знает, как это все можно исправить, прошу помочь. Заранее спасибо. Ссылка на сообщение Поделиться на других сайтах
REND 0 Опубліковано: 2005-02-21 16:50:21 Share Опубліковано: 2005-02-21 16:50:21 http://local.com.ua/forum/index.php?showtopic=928 http://www.stargazer.dp.ua/doc/conf_example_linux.htm Ссылка на сообщение Поделиться на других сайтах
benya 0 Опубліковано: 2005-02-25 15:34:03 Автор Share Опубліковано: 2005-02-25 15:34:03 Хорошо. Спрошу по-другому. Вот схема моего подключения: Есть только одна сетевая. она смотрит в локалку. В этой же локалке есть сервер провайдера. Наша сетевая имеет два интерфейса и соответственно два IP адреса: eth0 и eth0:1 (10.0.0.1 и xxx.xxx.xxx.xxx). Итак, eth0 - внутренний интерфейс, а eth0:1 - виртуальный ин-с, который смотрит на прова. В наш же сервак воткнута dvb-карта. Запрос отправляется через интерфейс eth0:1 (наземный канал), а ответ приходит через dvb-карту (спутниковый канал). Вроде бы в правилах все правильно. Во всяком случае, если я сижу полностью на земле, то все работает отменно. Претензий нет. А вот если подключаю спутник, произвол полный. И именно с открытыми сессиями. Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2005-02-25 16:42:11 Share Опубліковано: 2005-02-25 16:42:11 Стоит СТГ. Стоит себе, никого не трогает. И все бы ничего, но в последнее время левый траффик вырос до небес. После некоторого расследования выяснил, что в момент, когда начинается закачка, можно смело выключать(выгружать) InetAccess. При этом закачка не прекращается, а траффик не считается. И выяснил также, что есть ошибка в правилах FW. SOS, Help, что угодно, только раскажите мне, где эта ошибка? Тексты скриптов прилагаются. =============OnConnect======================== #!/usr/bin/perl $ip=$ARGV[1]; $ip_prov=xxx.xxx.xxx.xxx system("iptables -A FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -A FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -I POSTROUTING 1 -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); ===============OnDisconnect================ #!/usr/bin/perl $ip=$ARGV[1]; $ip_prov=xxx.xxx.xxx.xxx; system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -t nat -D PREROUTING -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); system("iptables -t nat -D POSTROUTING -s $ip -d ! 10.0.0.0/24 -j SNAT --to-source $ip_prov"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -s $ip -d ! 10.0.0.0/24 -j ACCEPT"); system("iptables -D FORWARD -d $ip -s ! 10.0.0.0/24 -j ACCEPT"); Все сводится к двум вопросам: 1. Как эту всю писанину упростить? Я видел на сайте СТГ в доках, что там циклы используются. Но здесь скрипт написан на Perl, а как это все сделать на этом языке, я не знаю. 2. Как собственно закрыть саму дыру? Где именно ошибка? Почему так написаны сами скрипты, не знаю. И не спрашивайте. Не я писал. Сам только расчехляю. Еще раз повторюсь, что все работает правильно, за исключением этой ситуации. Факт на лицо. Т.е. речь идет именно о заделывании дыры, а не о переделывании. Кто знает, как это все можно исправить, прошу помочь. Заранее спасибо. Я конечно не пойму зачем так много раз повторяется одно и тоже в правилайх ОнДисконект (это чтоб наверняка удалило). попробуй сделать так во первых сделай файлик обзови его как нибоудь например firewall сделай на него права 755 и пропиши туда такое iptables -F iptables -t nat -F iptables -t mangle -F iptables -P FORWARD DROP iptables -t mangle -A PREROUTING -d 10.0.0.1 -p tcp --dport 3128 -j DROP /sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F /sbin/iptables -t filter -P FORWARD DROP добавь его в автозагрузку и в он коннект вместо system("iptables -t nat -I PREROUTING 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); напиши system("iptables -t nat -I OUTPUT 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); А В ОН ДИСКОННЕКТ system("iptables -t nat -I OUTPUT 1 -s $ip -d ! 10.0.0.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.1:3128"); и все должно быть ок Ссылка на сообщение Поделиться на других сайтах
benya 0 Опубліковано: 2005-02-25 18:54:04 Автор Share Опубліковано: 2005-02-25 18:54:04 Спасибо за помощь. 1. В файрволе все было за исключением этих строк: /sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F /sbin/iptables -t filter -P FORWARD DROP добавил. 2. Добавил также указанные строки в скрипты. Все заработало, но... Возникли вопросы. 1. После выполнения укзанных инструкций такое ощущение, что полностью пересел на землю (наземка у меня 32К, а спутник 256К - разница видна невооруженным взглядом), хотя траф считается спутниковый. 2. Методом исключений вычислил, что такой эффект дают все-таки скрипты. Когда меняю их назад, как было, все становится как раньше (включая и дыру для воровства). 3. В чем все-таки разница между iptables и /sbin/iptables? 4. Как скрипт OnDisconnect собрать в циклы (как на bash сделать, знаю, а как на perl?)? Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2005-02-26 06:45:57 Share Опубліковано: 2005-02-26 06:45:57 Спасибо за помощь. 1. В файрволе все было за исключением этих строк: /sbin/iptables -F; iptables -t nat -F; iptables -t mangle -F /sbin/iptables -t filter -P FORWARD DROP добавил. 2. Добавил также указанные строки в скрипты. Все заработало, но... Возникли вопросы. 1. После выполнения укзанных инструкций такое ощущение, что полностью пересел на землю (наземка у меня 32К, а спутник 256К - разница видна невооруженным взглядом), хотя траф считается спутниковый. 2. Методом исключений вычислил, что такой эффект дают все-таки скрипты. Когда меняю их назад, как было, все становится как раньше (включая и дыру для воровства). 3. В чем все-таки разница между iptables и /sbin/iptables? 4. Как скрипт OnDisconnect собрать в циклы (как на bash сделать, знаю, а как на perl?)? Открой на любой машине две SSH или telnet консоли Для того чтобы определить на каком интерфейсе запусти команду tcpdump -i интерфейс спутника и tcpdump -i интерфейс модема посмотри идут ли пакеты по спутнику. Например tcpdump -i ppp0 и параллельно наблюда куда шлются пакеты на запрос и куда в ответ идут пакеты. регулировать это можно с помощью сквида (хотя нужно еще знать какие порты у тебя открыты в фаерволе) в данных конфигах весь http трафик направляется на сквид а все остально напряму натом. Ссылка на сообщение Поделиться на других сайтах
benya 0 Опубліковано: 2005-03-01 14:30:34 Автор Share Опубліковано: 2005-03-01 14:30:34 Кстати, спутник подключен через vpn (поднимается ppp0), это как-то поможет пролить свет на проблему? Ссылка на сообщение Поделиться на других сайтах
alexuk 0 Опубліковано: 2006-06-20 19:57:41 Share Опубліковано: 2006-06-20 19:57:41 У меня такая же проблема пользовать после того как вигрузить авторизатор остается в онлай продолжительное время но потом его всетаки вырубет. Пинга в конфигураторе нету. Все проблема снята. Все нормально считается даже при снятии авторизатора. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас