Не могу получить доступ SVN на виртуальной машине, но все остальное работает нормально
У меня есть сервер (host
) запуск сервера Trac под ключ (tracsrv
) в Virtualbox, и я получаю некоторые странные результаты с сетью. Кто-нибудь знает, как это объяснить и можно ли решить проблему?
симптомы
user@randomcomputer ~$ ssh root@tracsrv # works as expected
user@randomcomputer ~$ curl -I http://tracsrv/ # works as expected
user@host ~$ svn co svn://tracsrv/helloworld # works as expected
user@randomcomputer ~$ svn co svn://tracsrv/helloworld # FAILS
randomcomputer
, host
(и для этого также tracsrv
) все работают в одной локальной сети (обычная /24 локальных сети с одним GW, ничего особенного).
конфигурация
host
работает iptables, где все заблокировано, кроме, например, http:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# Accept any related or established connections
-I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow all traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
[...]
# SSH
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
# HTTP+HTTPS
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
# Inbound SVN
# Added this as I was unsure whether the host affected the VM
-A INPUT -i eth1 -p tcp -m tcp --dport 3690 -j ACCEPT
COMMIT
Но эти настройки не должны мешать tracsrv
s трафик, так как его сеть находится в режиме моста:
user@host ~$ VBoxManage showvminfo tracsrv | grep "NIC 1"
NIC 1: MAC: XXXXXXXXXXXX, Attachment: Bridged Interface 'eth1', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
И наконец Iptables на tracsrv
принимает все трафик:
root@tracsrv ~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
А также svnserve
работает на tracsrv
:
root@tracsrv ~# lsof -i :svn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
svnserve 2352 root 3u IPv4 5550 0t0 TCP *:svn (LISTEN)
РЕДАКТИРОВАТЬ: В ответ на @Guido:
user@randomcomputer ~$ telnet tracsrv 3690
Trying tracsrv...
telnet: Unable to connect to remote host: Connection timed out
user@randomcomputer ~$ svn co svn://tracsrv/helloworld
svn: E000110: Unable to connect to a repository at URL 'svn://tracsrv/helloworld'
svn: E000110: Can't connect to host 'tracsrv': Connection timed out
1 ответ
Ты используешь svn:
протокол для удаленного доступа. Это не хороший выбор, за исключением изолированных доверенных локальных сетей. Поскольку вы чувствуете необходимость настроить iptables, это звучит так, как будто вы не доверяете локальной сети.
Попробуйте настроить доступ к Subversion svn+ssh:
или же https:
(http:
также подходит только для доверенных локальных сетей, поскольку учетные данные и контент отправляются в виде простого текста)