简单来说:我无法使用默认规则访问启用了 iptables 的服务器。需要禁用 iptables 才能访问。尝试找出原因。设置类型的唯一区别是第 3 层交换机而不是第 2 层交换机,但除了启用 IP 路由外,没有以任何其他方式配置第 3 层交换机(任何 VLAN 上都没有进行标记/取消标记)。如果我明白为什么数据包被阻止,我一定会尝试解决我的问题!;)
有关此事的更多信息:
新安装的 CentOS 6.5 最小版本和 iptables 存在问题。这是一个新的数据中心位置,我正准备将一些服务器上线,但目前还不能。iptables 似乎正在丢弃合法数据包,除非有特定规则允许该特定 IP 通过(对于 Web 服务器来说并不理想)。我们使用 OpenVZ 并在 VPS 节点内安装 cPanel 以及 csf 防火墙。节点上的所有设置均已正确配置,与我在其他数据中心的其他工作服务器相同,因此这不是 iptables 模块问题。
过去,在其他 DC 中,我设置了许多其他服务器,都没有出现问题,这里唯一的区别(当然)是不同的 ISP,而且我使用的是第 3 层交换机(Baystack 5510),而不是第 2 层交换机。我不确定这是否是问题的原因,明天当我有访问权限时,我将直接连接到 ISP 连接进行测试。
这可能与我的第 3 层交换机设置不当有关吗?基本上,我将 ISP 的以太网电缆连接到端口 48,将我的服务器连接到端口 1 和 2(bond0),也尝试使用默认的 eth0。默认配置,唯一的区别是我启用了 IP 路由,以便以后可以添加其他 IP 子网。我没有设置任何标记/取消标记,我现在正在阅读一些内容,但这是否是导致 iptables 标记/丢弃这些数据包的原因?
这是一个基本安装,似乎使用默认的 CentOS iptables 规则阻止数据包,或者至少当我切换到 OpenVZ 内核时,必须驱动到 DC 才能获得物理访问权限并执行“service iptables stop”和“chkconfig iptables off”以防止失去进一步的访问权限。
基本上,端口已在 iptables 中打开,但我仍然无法访问运行 iptables 的服务器。在 2 台服务器上尝试了此操作,新安装的 CentOS 6.5 最低限度。在此过程中,我运行了 Wireshark 和 tcpdump 来捕获两端的网络跟踪。这是第一个数据包,尝试使用 [SYN] 数据包在 iptables 中打开的端口 80 上启动 TCP 会话。此数据包没有得到回复([SYN ACK]),而是一遍又一遍地经历 TCP 重传,但它确实在服务器端收到,但被丢弃,并显示 TCP_IN Blocked 或 UDP 或 OUT,或无效数据包:
客户端(我的电脑):77 4.434317000 192.168.2.244 SERVER-IP TCP 66 63866 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
服务器端(服务器 tcpdump)1 0.000000 MY-ISP-IP SERVER-IP TCP 68 61992 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1452 WS=4 SACK_PERM=1
这是无效的数据包:内核:[16708.550424] 防火墙:INVALID IN=venet0 OUT= MAC= SRC=MYIP DST=SERVERIP LEN=48 TOS=0x00 PREC=0x00 TTL=112 ID=12281 DF PROTO=TCP SPT=60992 DPT=80 WINDOW=8192 RES=0x00 SYN URGP=0
这是一个被阻止的端口 21(也打开了)数据包:内核:[20604.837769] 防火墙:TCP_IN Blocked IN=venet0 OUT= MAC= SRC=MYIP DST=SERVERIP LEN=48 TOS=0x00 PREC=0x00 TTL=112 ID=15851 DF PROTO=TCP SPT=61742 DPT=21 WINDOW=8192 RES=0x00 SYN URGP=0
答案1
state
这看起来像是您的 OpenVZ 配置中的一个问题,主要与netfilter 的功能有关。
确保在你的 中/etc/vz/vz.conf
包含IPTABLES_MODULE
。ipt_state
这对于旧版本的 vzctl 来说很重要,但谨慎一点总是好的:
## IPv4 iptables kernel modules to be enabled in CTs by default
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"
## IPv4 iptables kernel modules to be loaded by init.d/vz script
IPTABLES_MODULES="$IPTABLES"
此外,在您的每个中/etc/vz/conf/*.conf
,如果NETFILTER
受支持,则应将其设置为stateful
:
NETFILTER="stateful"
这个新的NETFILTER
配置参数是最近添加的。这可能是你没有在其他地方听说过它的原因。你可以看到提交这里。