我已安装Stash,其中SVN mirror plugin - 安装了子记录。
我有iptables设置类似:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:7990
ACCEPT tcp -- yyy.yyy.yyy.yyy anywhere tcp spt:mysql
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT all -- xxx.xxx.xxx.xxx anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:7999
ACCEPT tcp -- anywhere anywhere tcp spt:http state ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere yyy.yyy.yyy.yyy tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp spt:ssh state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:7990
ACCEPT tcp -- anywhere anywhere tcp dpt:38724
ACCEPT all -- anywhere xxx.xxx.xxx.xxx
ACCEPT tcp -- anywhere anywhere tcp spt:7999
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
其中xxx.xxx.xxx.xxx是SVN服务器的IP。初始同步适用于这些设置。但是当我承诺使用SVN时,这些变化将无法实现。如果我将INPUT和OUTPUT的策略更改为ACCEPT,则更改会立即同步。那我还需要什么呢?
答案 0 :(得分:2)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
做到了。
答案 1 :(得分:1)
我无法帮助确切的iptables配置,但对于SVN Mirror Add-On(和SubGit),以下是正确的:
1)SubGit需要完全访问它镜像的Subversion项目。
从协议的角度来看,它需要能够通过http(端口80或443)或svn协议(端口3690)访问目标Subversion存储库。此处的访问意味着在端口上与Subversion存储库主机建立连接,然后通过已建立的连接发送和接收数据。这就是iptables规则应该允许的内容。
有关Subversion用于不同协议的端口的详细信息,请参阅此帖子:what ports need to be open for svn tortoise to authenticate (clear text) and commit
2)SubGit启动后台进程并通过tcp协议与之通信。
该通信仅涉及localhost,并且从当前可用于特定用户的端口中随机选择端口。因此,您的iptables规则应该允许从localhost在本地主机上打开和访问任何端口。
希望有所帮助!