Ошибка SQUID (проблема при обмене с сайтом из программы 1С)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Ошибка SQUID

Сообщение TonnyBennet »

Здравствуйте.

На работе есть сервер UbuntuServer, являющийся шлюзом. На нём крутится SQUID работающий в режиме прозрачного прокси. Есть вебсайт который хостится где то далеко (не в локальной сети). В программе 1С написана процедура обмена данными с этим сайтом. Во время обмена происходит вот такая ошибка;

Код:

{Обработка.ОбменССайтом(306)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции 'bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=1cbitrix-2c66b138-6f6f-443d-ad1a-4ef03d1bab90.xml' Произошла ошибка: . По причине: Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен (C:\Documents and Settings\Артём\Local Settings\Temp\86b3d10c-9619-4507-ae74-bf500380b4fc\1cbitrix-2c66b138-6f6f-443d-ad1a-4ef03d1bab90.xml). Обмен не выполнен Ответ сервера: Authorization: Basic dGVzdDp0ZXN0 User-Agent: 1C+Enterprise/8.1 Host: ееееее Accept: */* Cookie: 1=1 Content-Type: application/octet-stream Content-Length: 6756 Expect: 100-continue </pre> </blockquote> <p>Возможные проблемы:</p> <ul> <li><p>Отсутствует или неизвестен метод запроса.</p></li> <li><p>Отсутствует URL.</p></li> <li><p>Отсутствует идентификатор HTTP (HTTP/1.0).</p></li> <li><p>Запрос слишком велик.</p></li> <li><p>Р’ запросе POST или PUT отсутствует заголовок Content-Length.</p></li> <li><p>Недопустимый СЃРёРјРІРѕР» РІ имени узла (hostname), подчёркивания запрещены.</p></li> </ul> <p>Администратор Вашего кэша: <a href="mailto:admin@%W">admin@</a>.</p> <br> </div> <hr> <div id="footer"> <p>Создано Fri, 10 Jun 2011 08:57:46 GMT РЅР° (squid/2.7.STABLE7)</p> <!-- ERR_INVALID_REQ --> </div> </body></html> Не удалось найти/создать контрагента. Не удалось обработать документы, загруженные с сервера. Обмен не выполнен Обмен заказами завершен с ошибками!!!


если нечитабельную часть перевести получается это

Код:

Возможные проблемы: Отсутствует или неизвестен метод запроса. Отсутствует URL. Отсутствует идентификатор HTTP (HTTP/1.0). Запрос слишком велик. В запросе POST или PUT отсутствует заголовок Content-Length. Недопустимый символ в имени узла (hostname), подчёркивания запрещены. Администратор Вашего кэша:


Если выключить прокси-сервер и трафик просто NAT-ить то обмен проходит без ошибок. В логах squid ничего инересного не нашёл

В чём может быть проблема? Как диагностировать?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Ошибка SQUID

Сообщение sash-kan »

TonnyBennet писал(а):
10.06.2011 16:24
В чём может быть проблема?
так варианты перечислены·

TonnyBennet писал(а):
10.06.2011 16:24
Как диагностировать?
tshark-ом/tcpdump-ом сохранить пакеты·
а потом тем же самым инструментом просмотреть содержимое запроса·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »


Мда, не сильно меня радует копание в пакетах. Может есть более простые методы решения проблемы?

Загуглил по запросу <!-- ERR_INVALID_REQ --> - это часть ошибки которую 1С выкидывает. Из дельного встретил только вариант с уменьшением MTU. Уменьшил - не заработало.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Ошибка SQUID

Сообщение sash-kan »

TonnyBennet писал(а):
14.06.2011 16:30
Может есть более простые методы решения проблемы?
ну, можно ходить по разным форумам и спрашивать, какая из перечисленных ошибок скорее всего наличествует в формируемом кастомной конфигурацией http-пакете· из перечисленных proxy-сервером:
QUOTE писал(а):Отсутствует или неизвестен метод запроса.
Отсутствует URL.
Отсутствует идентификатор HTTP (HTTP/1.0).
Запрос слишком велик.
В запросе POST или PUT отсутствует заголовок Content-Length.
Недопустимый символ в имени узла (hostname), подчёркивания запрещены.

в любом случае интересно: а что вы будете делать, если узнаете _точно_, какая(-ие) из ошибок присутствует(-ют)? у вас есть возможность исправить конфигурацию 1s?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Ошибка SQUID

Сообщение Denjs »

sash-kan писал(а):
14.06.2011 23:04
в любом случае интересно: а что вы будете делать, если узнаете _точно_, какая(-ие) из ошибок присутствует(-ют)? у вас есть возможность исправить конфигурацию 1s?
возможно получится донастроить/изменить конфигурацию прокси под специфические пакеты 1цэ?

кроме того - хотелось бы видеть тех-подробности того _КАК_ИМЕННО_ отправляется файл на сервер? вы это делаете через http-запросы? вы это делаете через веб-сервисы? вы это делаете через ftp-запросы? ещё как?

Отсутствует или неизвестен метод запроса.

у вас в адресе указаны переменные соответсвующие get-запросу... это судя по строке
Ошибка при выполнении файловой операции 'bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=1cbitrix-2c66b138-6f6f-443d-ad1a-4ef03d1bab90.xml'

а вот файл наверное отправляется как POST... что в скрипте указано?

у вас последняя версия платформы? 8.1 с января этого года прекратили поддерживать. обновляйтесь и повторяйте ваши тесты снова.

а что говорит техподдержка 1Цэ на данную ругань?
я правильно понимаю, что у вас все, кроме 1цэшной обработки работает? т.е. вы можете скачивать и аплоадить файлы на хост? прикрепить сообщение к своему посту здесь можете?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

sash-kan писал(а):
14.06.2011 23:04
в любом случае интересно: а что вы будете делать, если узнаете _точно_, какая(-ие) из ошибок присутствует(-ют)? у вас есть возможность исправить конфигурацию 1s?


Я могу сформулировать задание для программиста 1С. И он будет его исправлять. Просто никаких нареканий на работу прокси-сервера ни у кого нет. А тут такой косяк! Я так думаю что просто 1С формирует кривые пакеты или сайту что-то не нравится.

P.S. Я сисадмин. Программист 1С - приходящий человек. Люди, которые занимаются разработкой сайта вообще сидят в другом городе. Общение иногда затруднено.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

Denjs писал(а):
14.06.2011 23:26
sash-kan писал(а):
14.06.2011 23:04
в любом случае интересно: а что вы будете делать, если узнаете _точно_, какая(-ие) из ошибок присутствует(-ют)? у вас есть возможность исправить конфигурацию 1s?
возможно получится донастроить/изменить конфигурацию прокси под специфические пакеты 1цэ?

кроме того - хотелось бы видеть тех-подробности того _КАК_ИМЕННО_ отправляется файл на сервер? вы это делаете через http-запросы? вы это делаете через веб-сервисы? вы это делаете через ftp-запросы? ещё как?

Отсутствует или неизвестен метод запроса.

у вас в адресе указаны переменные соответсвующие get-запросу... это судя по строке
Ошибка при выполнении файловой операции 'bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=1cbitrix-2c66b138-6f6f-443d-ad1a-4ef03d1bab90.xml'

а вот файл наверное отправляется как POST... что в скрипте указано?

у вас последняя версия платформы? 8.1 с января этого года прекратили поддерживать. обновляйтесь и повторяйте ваши тесты снова.

а что говорит техподдержка 1Цэ на данную ругань?
я правильно понимаю, что у вас все, кроме 1цэшной обработки работает? т.е. вы можете скачивать и аплоадить файлы на хост? прикрепить сообщение к своему посту здесь можете?



Как именно отправляется файл я точно сказать не могу. Снифил пакеты при помощи tcpdump-а и потом из под windows смотрел wireshark-ом. В дампе присутствуют только GET и POST запросы.

Что указано в скрипте тоже сказать не могу. Если есть необходимость то могу попросить выслать мне код... а я его тут размещу...

Платформа 8.1. И сказать что срочно нужно обновить платформу я не могу. Стоит это, как я понимаю, не малых денег.

С поддержкой 1С по данному вопросу не свзывался. Но думаю что они пошлют меня разбираться в настройках своего шлюза ибо ошибку он выдаёт!

У меня для обмена с сайтом есть несколько обработок: заказы, прайсы, и т.д. Проблема возникает только в одной из них! Скажите пожалуйста о каком сообщении идёт речь?


Я уже подумываю о том, чтобы завернуть трафик к этому хосту мимо прокси-сервера. Вот только не сильно хочется заворачивать мимо прокси трафик от всего хоста. Скажите пожалуйста, можно ли средствами iptables натить трафик идущий не на какой-то конкретный IP а к скрипту, например к www.ya.ru/test.php ?


Спасибо сказали:
us127
Сообщения: 15
ОС: Debian Squeeze

Re: Ошибка SQUID

Сообщение us127 »

можно ли средствами iptables натить трафик идущий не на какой-то конкретный IP а к скрипту, например к www.ya.ru/test.php ?


Попробуй модуль string. Типа
iptables -I PREROUTING -i eth0 -s 192.168.0.2 -m string --string "простой текст" -j RETURN

Но если данные будут идти не в одном пакете, то зафейлится все. Тогда надо заморачиваться с метками - можно унаследовать метки через CONNMARK. Это в теории должно работать.

ИМХО проще сделать

iptables -I PREROUTING -i eth0 -s 192.168.0.2 -d [ IP сайта ] -j RETURN
iptables -A PREROUTING -i eth0 -s 192.168.0.2 ! -d 192.168.0.0/24 -j REDIRECT --to-ports 3128
тогда на сквид не завернется.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

us127 писал(а):
15.06.2011 17:55
можно ли средствами iptables натить трафик идущий не на какой-то конкретный IP а к скрипту, например к www.ya.ru/test.php ?


Попробуй модуль string. Типа
iptables -I PREROUTING -i eth0 -s 192.168.0.2 -m string --string "простой текст" -j RETURN

Но если данные будут идти не в одном пакете, то зафейлится все. Тогда надо заморачиваться с метками - можно унаследовать метки через CONNMARK. Это в теории должно работать.

ИМХО проще сделать

iptables -I PREROUTING -i eth0 -s 192.168.0.2 -d [ IP сайта ] -j RETURN
iptables -I PREROUTING -i eth0 -s 192.168.0.2 ! -d 192.168.0.0/24 -j REDIRECT --to-ports 3128
тогда на сквид не завернется.


Спасибо конечно за совет!

Модуль string это действительно хорошо, но вот данные действительно идут в разных пакетах.

По поводу примера iptables - я мимо squid пущу весть трафик к моему сайту... а это порядка 300 МБ в день пройдёт мимо сборщика статистики lightsquid. Я рассматриваю этот вариант если не найду решение проблемы.
Спасибо сказали:
us127
Сообщения: 15
ОС: Debian Squeeze

Re: Ошибка SQUID

Сообщение us127 »

TonnyBennet писал(а):
15.06.2011 18:03
us127 писал(а):
15.06.2011 17:55
можно ли средствами iptables натить трафик идущий не на какой-то конкретный IP а к скрипту, например к www.ya.ru/test.php ?


Попробуй модуль string. Типа
iptables -I PREROUTING -i eth0 -s 192.168.0.2 -m string --string "простой текст" -j RETURN

Но если данные будут идти не в одном пакете, то зафейлится все. Тогда надо заморачиваться с метками - можно унаследовать метки через CONNMARK. Это в теории должно работать.

ИМХО проще сделать

iptables -I PREROUTING -i eth0 -s 192.168.0.2 -d [ IP сайта ] -j RETURN
iptables -A PREROUTING -i eth0 -s 192.168.0.2 ! -d 192.168.0.0/24 -j REDIRECT --to-ports 3128
тогда на сквид не завернется.


Спасибо конечно за совет!

Модуль string это действительно хорошо, но вот данные действительно идут в разных пакетах.

По поводу примера iptables - я мимо squid пущу весть трафик к моему сайту... а это порядка 300 МБ в день пройдёт мимо сборщика статистики lightsquid. Я рассматриваю этот вариант если не найду решение проблемы.


Попробуй все же с CONNMARK. Смысл: метить пакеты, содержащие имя скрипта, а потом по этой метке НЕ заворачивать на сквид. Типа (могу ошибиться с таблицами):

iptables -A PREROUTING -t mangle -i eth0 -p tcp --src $local_ip --dst $site --dport 80 -m string --string "http://www.ru/index.html" --algo kmp -j CONNMARK --set-mark 127
iptables -A PREROUTING -t mangle -i eth0 -p tcp --src $local_ip --dst $site --dport 80 -j CONNMARK --restore-mark
iptables -A PREROUTING -t mangle -i eth0 -p tcp --src $local_ip --dst $site --dport 80 -m connmark --mark 127 -j LOG

Так работает метка для всего соединения, содержащая string value. Но почему-то только в mangle. Если третье правило заменить на

iptables -A PREROUTING -t nat -i eth0 -p tcp --src $local_ip --dst $site --dport 80 -m connmark --mark 127 -j LOG

то не срабатывает. По правилам прохождения пакетов идет через мангл и потом в нат. Где то я заблуждаюсь возможно.

Это тебе на затравку.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Ошибка SQUID

Сообщение Denjs »

TonnyBennet писал(а):
15.06.2011 15:58
Платформа 8.1. И сказать что срочно нужно обновить платформу я не могу. Стоит это, как я понимаю, не малых денег.

достаточно сказать что "8.1 больше не поддерживается".
Стоит это нисколько, если у вас конечно есть подписака на ИТС и 1С лицензионный.
технически - это простое обновление бинарников. Конфигурация (по крайней мере по заявлениям 1цешнегов) адаптации не требует и будет работать как раньше.

Полагаю даже на ИТС у вас должны быть файлы для обновления. Уточните у франча у которого вы находитесь на обслуживании. И не важно что программизд1Цэ - приходящий. Есть техподдержка и это все можно уточнить на линии консультаций.

Получите обновление, установите, обновите на одной из тестовых машин платформу 1С, склонируйте БД, запстите на это все на тестовой машине, поиграйтесь... и потом будете ещё думать...

С поддержкой 1С по данному вопросу не свзывался. Но думаю что они пошлют меня разбираться в настройках своего шлюза ибо ошибку он выдаёт!

А вы свяжитесь для начала. :angry: !!!!! Потому что ваш прокси-то тоже нареканий ни у кого не вызывает, и ругается он - на "неправильно сформированные пакеты". Кто пакеты формировал? 1цэ. Заодно узнаете с какими прокси 1цэ работает хорошо, а с каким может и "не совместим вовсе". тоже будет повод поискать отличия.
на миста.ру ещё поспрашивайте. На "территория1С" тоже зайдите.

А может и выяснится, что мол были у них там проблемы, да вот исправили...
Я так с веб-сервисами геморроился неделю. А потом оказалось что "вы знаете в данной версии есть ошибки - обновитесь пожалуйста" - и все зашуршало.
Заодно и узнаете о том как и сколько стоит обновляться.

ну что вы в самом деле то?! глюки в платформе 1цэ8.Х - это самое милое и обыденное дело. Работать как правило надо всегда с самой последней платформой (после тестов конечно, а то иногда бывает что новая версия глючнее предыдущей)
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

Программисту поставлена приоритетная задача на обновление платформы и подробное изучение этой проблемы. Он будет работать в понедельник.Пока завернул тарафик мимо проси-сервера.

Во вторник отпишусь что получилось.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

Наткнулся на тему в которую как мне кажется отписался наш программист (зовут Павел) http://dev.1c-bitrix.ru/community/forums/m.../#message145546

Там народ говорит что проблема всё-таки в SQUID :)

P.S. Linux-ойды грешат на 1С..... 1С-ники грешат на SQUID - порочный круг какой-то :)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Ошибка SQUID

Сообщение sash-kan »

TonnyBennet писал(а):
23.06.2011 12:53
порочный круг какой-то
ага, вы начали понимать, что proxy-сервер — это зло·
поздравляю, вы на правильном пути·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ошибка SQUID

Сообщение TonnyBennet »

Я полагаю что программист 1С запускал обмен в режиме отладки и получил полный текст ошибки а именно:

Spoiler
ERROR
The requested URL could not be retrieved

While trying to retrieve the URL:

The following error was encountered:

Zero Sized Reply

Squid did not receive any data for this request.


Тут написано что скорее всего документ действительно пустой. http://www.squid-cache.org/mail-archive/sq...00010/0445.html как Вы думаете это сайт мне отдаёт "пустой" ответ и SQUID его воспринимает как ошибку или всё таки 1C делает "пустой" запрос? Можно ли как-нибудь разрешить в SQUID пропускать пустые запросы?

sash-kan писал(а):
23.06.2011 13:52
TonnyBennet писал(а):
23.06.2011 12:53
порочный круг какой-то
ага, вы начали понимать, что proxy-сервер — это зло·
поздравляю, вы на правильном пути·


Это "зло" помогает мне экономить до 2 ГБ трафика в день!!! И как мне кажется быстрее работает за счёт кеширования... да и проблем со сбором статистики нет! Поставил lightsquid и радуюсь
Спасибо сказали:
about
Сообщения: 1

Re: Ошибка SQUID

Сообщение about »

Всем привет.
В сети работает squid. тоже не загружался каталог на сайт, ошибка как у ТС

Выгружено товаров: 10
Выгружено файлов: 0
Выгружено предложений: 10
{Обработка.ОбменССайтом(320)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции 'bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=import.xml'
Произошла ошибка: . По причине:

Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен (C:\Documents and Settings....
....
Выгружено товаров: 1 931
Выгружено файлов: 0
Выгружено предложений: 1 920
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Не введено название.
Выгрузка товаров завершена с ошибками!!!
Изменения заказов не зарегистрированы. Выгрузка заказов не произведена.

Временно:) решил проблему загрузкой каталога на сайт в обход сквида правилом iptables:
-A PREROUTING -s 192.168.1.10/32 -d 100.100.100.100 -p tcp --dport 80 -j ACCEPT
(192.168.1.10/32 - комп с которого выполняется выгрузка, 100.100.100.100 - адрес сервера в инете)
Спасибо сказали:
little Jon
Сообщения: 212

Re: Ошибка SQUID

Сообщение little Jon »

ИМХО конечно, Но я бы пошел бы по такому пути, я бы сделал бы dump трафика сессии до сквида и после сквида, и сравнил бы результаты. С большой степенью вероятности сквид отдает 1с какой-то не обновленный файлик из кеша, или этот файлик в очереди застрял. Я очень давно не копался в конфигах сквида, но если мне не изменяет память, там есть возможность отключить кеширование для определенных адресов. Проксирование != кеширование, Понятно, что ставить прокси в связку сайт бд это, либо бред сивой кобылы, либо что то очень специально заточенное. Вообще-то удивительно другое, Как Вы в этой ситуации ухитрились так долго успешно работать?!


Linuxforum@conference.jabber.ru
Спасибо сказали: