![启用 Shorewall 后上传失败](https://linux22.com/image/553925/%E5%90%AF%E7%94%A8%20Shorewall%20%E5%90%8E%E4%B8%8A%E4%BC%A0%E5%A4%B1%E8%B4%A5.png)
我有一台安装了 shorewall 4.0.6 的 Ubuntu 8.04 服务器。当我尝试使用 FTP、SCP 或 cURL 上传文件时,文件上传几乎立即停止并最终超时。如果我关闭 shorewall,上传工作就会正常进行。我没有任何专门允许 FTP 的规则,我对此也不太在意,但我确实需要能够通过 22 (SCP) 和 80 & 443 (cURL) 上传。
我的规则如下:
COMMENT Allow Server to respond to any web (80) and SSL (443) requests
ACCEPT net $FW tcp 80
ACCEPT $FW net tcp 80
ACCEPT net $FW tcp 443
ACCEPT $FW net tcp 443
COMMENT Allow Server to respond to SNMPD (161) requests
ACCEPT net $FW udp 161
COMMENT Allow Server to respond to MySQL (3306) requests (for MySQL Graphing)
ACCEPT net $FW tcp 3306
COMMENT Allow Server to respond to any SSH connection attempts, and to SSH out.
SSH/ACCEPT net $FW
SSH/ACCEPT $FW net
COMMENT Allow Server to make DNS Requests out.
DNS/ACCEPT $FW net
COMMENT Default "close" anything else.
Ping/REJECT net $FW
ACCEPT $FW net icmp
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
我预计前四条ACCEPT
线路允许超过 80 和 443 的入站和出站流量,并且我预计两条SSH/ACCEPT
线路允许超过 22 的入站和出站流量,包括 SCP。
任何帮助是极大的赞赏。
/etc/shorewall/policy 包含以下内容(以上所有行均被注释掉):
#
# Allow all connection requests from teh firewall to the internet
#
$FW net ACCEPT
#
# Policies for traffic originating from the Internet zone (net)
# Drop (ignore) all connection requests from the Internet to the firewall
#
net all DROP info
# THE FOLLOWING POLICY MUST BE LAST
# Reject all other connection requests
all all REJECT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
答案1
请确保没有流量整形器正在运行(也许 shorwall 启动了一个)。您可以通过运行 来检查tc qdisc show dev eth0
。如果没有激活的整形器,输出
iptables -Lnv
iptables -Lnv -t mangle
答案2
除非您明确允许,否则 FTP 将不会使用这些规则(除非您有允许策略,但这样会使这些规则变得毫无意义)。
您的规则似乎允许 SSH、HTTP 和 HTTPS,但您可以检查日志文件或捕获流量来验证这一点。
根据您提到的症状(启动然后停止),我认为您的 TCP MSS 可能配置错误。查看您的 shorewall.conf 并检查 CLAMPMSS 参数。您可能需要尝试将其限制在较低水平,看看问题是否消失。
编辑:我在您的策略文件中看到您允许所有传出流量,因此 Shorewall 不应该是您的问题的原因。如果您清除 Shorewall,问题是否仍然存在?(shorewall clear)。