我们的 Debian 6 服务器(带有 Aegir)无法从我们自己的网络访问。但是从除我们之外的任何其他 IP 都可以访问。
我尝试使用以下命令从 iptables 中删除我们的 IP:
iptables -D INPUT -s 00.00.00.00 -j DROP
但我们的IP好像不在链中。
我如何查找哪些 IP 地址被阻止?还有什么问题?
答案1
这是一个简单的网络诊断问题。
首先确定数据包的传输距离。在发送机器上使用 tcpdump 确保数据包生成并发送,然后在接收机器上使用 tcpdump 查看数据包是否到达。如果有中间路由器或防火墙,您也可以从这些路由器或防火墙执行 tcpdump(所有像样的设备路由器都具有某种功能,至少可以检测流量,如果不是单个数据包的话)。使用托管交换机,您可以使用镜像端口查看数据包是否正在通过交换机(尽管对于像这样的简单问题,这应该是不必要的)。最坏的情况是,如果您怀疑中间跳跃,则 traceroute 可以成为一种合理的诊断工具,如果是 TCP 服务导致问题,那么 tcptraceroute 大约好 100 倍。
确定数据包传输到多远之后,就可以检查有问题的机器本身了。一端的防火墙是最有可能的候选者;iptables -L -v
它将在规则旁边显示数据包计数,以显示正在使用哪些规则。如果防火墙规则确实受到攻击,它应该会相当清楚地显示出来。如果您有默认的 DROP 规则(一个好主意),您还应该在链中放置一条 LOG 消息,以显示何时默认规则受到攻击。
鉴于您没有提供任何关于您实际尝试执行的操作(ping、连接到 TCP 服务等)的描述,也没有提供具体构成“无法访问”的内容,因此很难描述还要检查哪些内容。对于 TCP 服务,请确保没有 tcpwrappers 妨碍,并且服务绑定在正确的端口和 IP 上( )netstat -ltnp
。
除此之外,更具体的诊断细节将需要更多关于问题的细节。请非常具体地说明您要做什么,也许有人可以为您提供正确的答案。
答案2
您在网络内部和网络外部使用的 IP 是否相同?如果您的路由器或防火墙使用 NAT 将公共 IP 地址转换为私有 IP 地址(如 192.168.1.200),则您的路由器可能无法对从网络内部开始的连接进行此转换。如果是这种情况,则在网络内部您需要使用私有 IP 地址,而在网络外部您需要使用公共 IP 地址。
如果您使用主机名并遇到此问题,则需要使用“水平分割“将本地 IP 地址提供给请求 www.example.com 的本地计算机,并将公共 IP 地址提供给所有请求 www.example.com 的其他计算机。