У меня есть сервер (host
) запускает сервер Turnkey 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
) все работают в одной LAN-сети (обычная / 24 LAN с одним 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
Ты используешь svn:
протокол для удаленного доступа. Это не лучший выбор, за исключением изолированных доверенных локальных сетей. Поскольку вы чувствуете необходимость настроить iptables, это звучит так, как будто вы не доверяете локальной сети.
Попробуйте настроить доступ к подрывной деятельности через svn+ssh:
или https:
(http:
также подходит только для доверенных локальных сетей, поскольку учетные данные и контент отправляются в виде обычного текста)