我对此感到很困惑,我为此折腾了好几个小时却毫无进展——我知道我错过了一些愚蠢的事情。
在我们的旧办公室,我们有一台 Netgear DG834PN 路由器,它设置了几个端口转发 - 几个到在那里运行的 Server 2003 机器,几个到备份 NAS 机器。
直到上周,这一切都运行正常。我确实在 Server 2003 上安装了 DHCP 服务器,但此后我已取消授权/停止了该服务器,因此它不应该再执行任何操作。此后一切都已重新启动。
端口转发对办公室服务器来说工作正常,但对其他机器来说却失败我甚至尝试将端口 80 从 Server 2003(工作正常)重定向到另一台计算机(端口 80 已打开),但仍然失败 - 我已通过尝试从多个外部位置连接来确认这一点。
从网络内部或通过远程桌面到服务器,我可以访问所有内容,如果我通过 VPN 进入服务器,我就可以访问所有内容(我猜两者都绕过了 NAT)。
通过 SSH 进入路由器或在 Web 管理员中查看其日志,一切看起来都正常,它会转到正确的 IP、正确的端口,并且客户端不应该阻止连接(之前没有,而且我也没有在他们的日志中看到任何内容),但连接从未发生。我尝试使用 Web 浏览器、FileZilla 和 telnet 进行测试。
这是我尝试连接到 Server 2003(HTTP)的工作端口转发规则和连接到备份 NAS(FTP,在端口 2121 上运行 - 但端口/协议似乎无关紧要)的非工作端口转发规则时来自路由器的日志:
// server 2003, works
Sun, 2011-05-15 00:22:04 - TCP Packet - Source:88.110.x.x,32444 Destination:192.168.0.7,80 - [HTTP match]
// NAS machine, fails (2121 is the correct port)
Sun, 2011-05-15 00:21:41 - TCP Packet - Source:88.110.x.x,32443 Destination:192.168.0.90,2121 - [FTP_NAS match]
以下是路由器的 iptables 中针对端口 2121 的条目(它们是使用 Web UI 配置的)(我用 example.co.uk 替换了我们的真实域名):
# iptables --list | grep :2121
LOG tcp -- anywhere anywhere state NEW tcp dpt:2121 LOG level warning prefix `[FTP_NAS match]'
ACCEPT tcp -- anywhere nas.ads1.example.co.uktcp dpt:2121
有人还有其他想法吗?提前谢谢!
答案1
您在相关主机上的默认路由是否仍通过 DG834?如果您弄乱了 DHCP,您可能会改变它。
除此之外,我建议使用像 Wireshark 这样的协议嗅探器来检查 a) 您的请求是否正确转发到主机 b) 请求是否发起响应 c) 响应是否定向到 DG834 的 MAC 地址
如果所有这些都适用,您可能会采取某种过滤措施来阻止您的传出流量通过。
答案2
“从网络内部或通过远程桌面到服务器,我可以访问所有内容,如果我通过 VPN 进入服务器,我也可以访问所有内容(我猜两者都绕过了 NAT)。”
您可以更仔细地检查各个服务器的防火墙规则,以确保没有任何内容限制只能从内部地址进行访问。查看您的工作服务器还可以验证外部访问的正常记录方式(内部地址与外部地址)。
答案3
已修复!我知道当有人不留下答案时会有多烦人,所以我会解释我做了什么。
看起来发生的事情是,在备份箱(Netgear ReadyNAS)上它丢失了它的网关设置,这一定意味着它感到困惑并且无法将数据路由回远程主机(但在内部执行此操作没有问题)。
当我可以从 NAS ping 内部站点时,我开始有点怀疑,但当我尝试 ping 外部站点时却出现错误:
NAS:~# ping www.google.com
connect: Network is unreachable
我可以通过 SSH 访问该盒子,因此当我运行:
route -nee
我会收到以下回复:
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0 0 0
当我在 Google 上搜索有关此信息时,我读到某处应该有一个条目将 0.0.0.0 网关地址映射到路由器。
将网关 IP 添加回 NAS 后,我得到了以下输出:
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0 0 0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 0 0 0
结果是两者都能够从 NAS 进行 ping 操作并且端口转发立即开始工作。
据推测这也一定发生在我尝试转发端口的其他主机上。
谢谢大家的帮助,它为我指明了正确的方向。