我的公司使用 subversion(协议svn
在端口 3690 上,而不是通过http
),并在内联网上使用本地服务器。目前,我们的开发人员已将其 SVN 客户端指向服务器的本地 IP 地址(192.168...)。我们正在尝试从互联网开放对 SVN 服务器的访问,以便办公室外的开发人员可以访问 subversion 服务。我们有一个静态 IP 地址,并设置了防火墙和路由器以允许端口 3690 上的流量并转发到正确的计算机。从办公室外,我们可以使用 svn://98.<...>:3690 成功连接到服务器。一切几乎都很好。
我们的问题:
办公室内的计算机无法使用公共 IP 地址访问 subversion 服务器;连接超时。当我们从网络内部 ping 我们的公共 IP 地址时,响应时间为 1ms,并且“tracert”显示连接只到达路由器然后返回。尝试从办公室外部 telnet 到我们的外部 IP 地址会显示连接,但从网络内部我们什么也得不到。我们的防火墙根本没有限制传出流量。
有人能帮我们吗?
答案1
这不是 SVN 的问题,而是防火墙功能的问题。了解防火墙模型会很有帮助。
无论如何,您不应该(而且通常不能)(特别是在 Cisco PIX/ASA 的情况下,没有进行重大配置调整)从内部访问防火墙的外部 IP。相反,您应该配置 DNS,以便同一名称 (svn.yourcompany.com) 解析为外部客户端的外部 IP 和内部客户端的 192.168.xx IP。这可以通过对外部和内部使用不同的 DNS 服务器、对多个视图使用相同的 DNS 服务器或使用防火墙的 DNS 重写功能来实现。请留下评论,说明防火墙型号和 DNS 设置,我会更具体说明。
答案2
您无法将发往路由器内部的数据从路由器发送出去。公共 IP 在 LAN 内部不起作用。尝试设置一个 /etc/hosts 文件,其中 SVN 服务器主机名 = 公共或私有 IP,具体取决于客户端计算机的位置。然后通过主机名访问 SVN 服务器。
答案3
根据您的防火墙,您需要对其进行配置以允许从内部网络到外部 IP 的流量以及所需的路由。
这在“真正的”防火墙中是可行的,但在更便宜的“路由器”中可能就不可行了。