1

我已经安装了 Stash,带有SVN 镜像插件——它安装了 subgit。

我有类似的 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,更改会立即同步。那么我还需要允许什么?

4

2 回答 2

2
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

做到了。

于 2015-01-23T09:20:05.173 回答
1

我无法提供确切的 iptables 配置帮助,但对于 SVN Mirror Add-On(和 SubGit),以下是正确的:

1) SubGit 需要完全访问它所镜像的 Subversion 项目。

从协议的角度来看,它需要能够通过 http(s)(端口 80 或 443)或 svn 协议(端口 3690)访问目标 Subversion 存储库。此处的访问意味着在端口上与 Subversion 存储库主机建立连接,然后通过已建立的连接发送和接收数据。这就是 iptables 规则应该允许的。

有关 Subversion 用于不同协议的端口的详细信息,请参阅这篇文章:svn tortoise 需要打开哪些端口才能进行身份验证(明文)和提交

2) SubGit 启动一个后台进程并通过 tcp 协议与之通信。

该通信仅涉及本地主机,并且端口是从特定用户当前可用的端口中随机选择的。因此,您的 iptables 规则应该允许从本地主机打开和访问本地主机上的任何端口。

希望有帮助!

于 2015-01-21T18:54:39.543 回答