Iptables Web 服务器连接超时

Iptables Web 服务器连接超时

设置 iptables 后。我的网络服务器出现“连接超时”提示。我正尝试根据从另一篇 serverFault 帖子中读到的关于网络服务器的非常好的起点来设置我的 iptables。我有一个名为“iptables-setup”的文件,其中包含以下内容:

# Allow outgoing traffic and disallow any passthroughs

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Allow traffic already established to continue

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow ssh, #dns, ftp and web services

iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
# DNS
# iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp-data -i eth0 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT
# CPanel
iptables -A INPUT -p tcp --dport 2083 -i eth0 -j ACCEPT
# WHM
iptables -A INPUT -p tcp --dport 2087 -i eth0 -j ACCEPT

# Allow local loopback services

iptables -A INPUT -i lo -j ACCEPT

# Allow pings

iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT

然后我运行:

% service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: mangle filter [  OK  ]
Unloading iptables modules: [  OK  ]

% sh iptables-setup 

% service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

% service iptables restart
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: mangle filter [  OK  ]
Unloading iptables modules: [  OK  ]
Applying iptables firewall rules: [  OK  ]

% iptables --list -n -v
Chain INPUT (policy ACCEPT 84670 packets, 33M bytes)
 pkts bytes target     prot opt in     out     source               destination         
84083   33M acctboth   all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 110K packets, 52M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 109K   52M acctboth   all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain acctboth (2 references)
 pkts bytes target     prot opt in     out     source               destination         
  116 16979            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:80 
   78  158K            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:80 
    0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:25 
    0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:25 
    0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:110 
    0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:110 
    5   866            icmp --  !lo    *       [MY_IP]        0.0.0.0/0           
    3   132            icmp --  !lo    *       0.0.0.0/0            [MY_IP]       
26431   11M            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           
19622 7514K            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       
   64  4250            udp  --  !lo    *       [MY_IP]        0.0.0.0/0           
   66 10580            udp  --  !lo    *       0.0.0.0/0            [MY_IP]       
26500   11M            all  --  !lo    *       [MY_IP]        0.0.0.0/0           
19691 7524K            all  --  !lo    *       0.0.0.0/0            [MY_IP]       
    0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:80 
    0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:80 
    0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:25 
    0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:25 
    0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:110 
    0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:110 
    1   576            icmp --  !lo    *       [MY_IP]        0.0.0.0/0           
    0     0            icmp --  !lo    *       0.0.0.0/0            [MY_IP]       
   15   600            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           
   17   720            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       
    0     0            udp  --  !lo    *       [MY_IP]        0.0.0.0/0           
    1  1016            udp  --  !lo    *       0.0.0.0/0            [MY_IP]       
   16  1176            all  --  !lo    *       [MY_IP]        0.0.0.0/0           
   18  1736            all  --  !lo    *       0.0.0.0/0            [MY_IP]       
47158   19M            all  --  !lo    *       0.0.0.0/0            0.0.0.0/0

% netstat -lntp | egrep ":80"
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      13687/httpd  

我添加了空格以便于阅读,并且用 [MY_IP] 代替了我的 IP。同样,我的问题是,我的 ipconfig 是否存在问题,这可能会导致我的 Web 服务器无法建立之前可以正常工作的 HTTP 连接?

答案1

您可能希望显示输出iptables --list -n -v以获取完整的防火墙规则绑定(包括加载的接口和模块)

然后包含输出,netstat -lntp因为您想确认 httpd 确实在监听端口 0.0.0.0:80 而不是 127.0.0.1,例如

# netstat -lntp | egrep ":80"

tcp        0      0 :::80         :::*       LISTEN      1954/httpd

编辑:响应输出iptables -v --list -n...

假设所有缺少协议或“全部”的行都是针对 icmp 和 DENY 规则的,那么与端口 80 HTTP 匹配的唯一行如下;

116 16979   tcp  --  !lo    *  [MY_IP]        0.0.0.0/0       tcp dpt:80 
 78  158K   tcp  --  !lo    *   0.0.0.0/0     [MY_IP]         tcp spt:80    
  0     0   tcp  --  !lo    *   [MY_IP]        0.0.0.0/0      tcp dpt:80 
  0     0  tcp  --  !lo    *    0.0.0.0/0      [MY_IP]        tcp spt:80 

我认为目标端口与源端口混淆了。对于传入 HTTP 端口的流量(带有“tcp dpt:80”的行),左列应为 WAN 地址(0.0.0.0/0),目标应具有您自己的 IP;

  116 16979   tcp  --  !lo    *       [MY_IP]    0.0.0.0/0           tcp dpt:80 

它应该看起来像这样;

  116 16979   tcp  --  !lo    *           0.0.0.0/0    [MY_IP]      tcp dpt:80 

另一个更新::

关于您创建规则的原始脚本,我看不出输出是如何连接到输入的,因为您的输入脚本添加了一个一般规则以允许端口 80 上的所有流量,如下所示;

iptables -A输入-p tcp --dport 80 -i eth0 -j 接受

但是,输出中的规则使用了不同的策略,其中有一个名为“acctboth”的公共链,该链已插入到 INPUT 和 OUTPUT 链中。

我会检查您是否正在加载正确的配置文件。

快速谷歌搜索表明你粘贴的脚本,带有账户两者chain其实就是cpanel提供的用于带宽监控的iptables规则集;

http://forums.cpanel.net/f5/iptables-acctboth-chain-74575.html

这解释了所有疯狂的!lo 和其他与您的输入不匹配的东西......基本上重新加载您的规则就是忽略您的规则集,这可能是由于安装了“acctboth”带宽监控链造成的。

相关内容