Назад | Перейти на главную страницу

Проблема с доступом к (ранее работавшему) личному репозиторию Subversion. Касперский подозревал

У меня есть персональный сервер Subversion, на котором запущен только svn (не Apache) на порте по умолчанию на моем домашнем компьютере, системе Windows Vista Pro. (Настройка более сложна из-за ограниченного рабочего брандмауэра, но, изучив журналы моего маршрутизатора, я убедился, что запросы перенаправляются на правильный порт на сервере). Этот репозиторий работал ранее, но недавно перестал работать - запросы к нему истекли:

svn: Can't connect to host 'howlett.selfip.net': A connection attempt failed 
because the connected party did not properly respond after a period of time, 
or established connection failed because connected host has failed to respond. 

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

Во-вторых, я недавно установил Kaspersky Anti-Virus 2011. Это кажется более вероятным виновником - он ближе по времени к тому времени, когда я думаю, что репо перестало работать, и я нашел в Интернете результаты для людей, у которых есть проблемы с Kaspersky 6. Однако у меня есть попытался добавить svn и svnserve в список исключений Касперского и даже отключить Kaspersky и перезагрузить его с отключенным запуском, а репо по-прежнему не отвечает.

Есть ли у кого-нибудь яркие идеи, что может пойти не так? Если это не удается, может ли кто-нибудь сказать мне, как получить логи из Subversion (клиента и / или сервера) и Kaspersky?

Редактировать: Дополнительная информация - я могу получить доступ к репозиторию через 127.0.0.1 на сервере (но не через IP-адрес маршрутизатора с сервера).

Изменить 2: Отслеживание сети показывает, что пакеты достигают порта svn на ожидаемом IP-адресе; и svnserve определенно прослушивает этот адрес (а не только localhost).

Изменить 3: Использование netcat подтверждает, что пакеты не принимаются службой прослушивания. Я также нашел журналы Касперского и не могу найти никаких ссылок на блокируемый трафик.

(Для всех, кто меня знает, пойте, если знаете слова ...)

Понюхайте трафик, поступающий на сервер Subversion (используйте Wireshark или ваш любимый аналог), и убедитесь, что попытка подключения из Интернета действительно направляется на сервер Subversion. Если трафик там не отображается, значит, у вашего маршрутизатора / брандмауэра проблема с пересылкой трафика на сервер Subversion.

Если вы видите трафик на сервере Subversion, вам нужно начать выяснять, почему он не отвечает (при условии, что это не так).

Редактировать:

Тогда я предполагаю, что у вас есть приложение брандмауэра, блокирующее соединение. Похоже, что --foreground вариант для svnserve на самом деле не генерирует никаких полезных результатов отладки, поэтому я не могу вам это предложить. Вы могли бы остановиться svnserve и запустите что-то вроде netcat в режиме прослушивания (nc -l -p 3690) и попытайтесь подключиться и посмотрите, показывает ли netcat какой-либо вывод. В противном случае проблема, скорее всего, связана с брандмауэром. (Клиент Subversion фактически не будет отправлять какие-либо данные, если он подключается к прослушивающему netcat, поскольку он ожидает баннерного сообщения от svnserve. Однако, если вы наберете какую-то тарабарщину в приглашении netcat после подключения клиента, клиент Subversion должен взорваться, по крайней мере, сообщив вам, что соединение было выполнено.)

Редактировать:

Отключение / остановка стандартной службы брандмауэра Windows Vista приводит к применению очень строгой политики брандмауэра. Ты можешь прочтите об этом статью от Microsoft чтобы получить более подробную информацию, но суть поведения заключается в том, что во время загрузки эта очень ограничительная политика применяется до тех пор, пока служба брандмауэра не запустится и не запустится (чтобы обеспечить защиту машины во время загрузки). В случае остановки службы брандмауэра применяется политика брандмауэра при загрузке, и вы получаете очень заблокированную политику входящего трафика.

Вы можете увидеть, привязан ли svnserve к localhost или к внешнему сетевому интерфейсу с помощью netstat -a | find "LISTEN"

Если он не прослушивает 0.0.0.0 (или IP-адрес вашего интерфейса), вам нужно изменить параметры привязки, чтобы он действительно позволял кому-то за пределами коробки подключаться к нему.

Из вашего объяснения приходят на ум только 2 вещи: либо svnserve работает только на localhost, либо брандмауэр блокирует доступ к ip-адресу externel. Вы можете, например, использовать «Process Explorer» (из SysInternals), чтобы проверить, какой адрес слушает процесс svnserve.

Я исправил это.

Решив, что с таким же успехом могу получить еще один набор журналов, я повернулся на Брандмауэр Windows (за исключением svnserve), который ранее был отключен. После этого соединения с сервером Subversion заработали.

Вполне почему добавление уровень безопасности и потенциальная точка блокировки заставили все работать, я действительно не знаю - у кого-нибудь есть идеи?