У меня есть персональный сервер 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 заработали.
Вполне почему добавление уровень безопасности и потенциальная точка блокировки заставили все работать, я действительно не знаю - у кого-нибудь есть идеи?