我有一台 Linux 服务器,具有以下 iptable 规则:
iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT
我有 apache2 在端口 80 上监听。问题是,虽然本地机器可以通过主机名访问开发机器,但其他本地机器都无法访问它。如果我清除 iptable 规则,它们就可以访问它。
我该如何修复它?我尝试将端口 80 添加到上述规则集中,但没有成功。
编辑,这是当前的 iptable 规则:
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -t filter -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport https -j ACCEPT
iptables -A OUTPUT -t filter -p udp --dport https -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 445 -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
答案1
如果你在运行 apache 的同一台机器上运行 iptables,则需要更改以下规则:
iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT
成为
iptables -A INPUT -p tcp --dport http -j ACCEPT
您需要允许传入流量到端口 80,而不是传出流量。
此外,仅允许ESTABLISHED
和RELATED
是不够的INPUT
。您需要对 执行相同的操作OUTPUT
。添加如下规则:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
如果您在同一台服务器上运行 DNS 服务,则需要允许端口 53 协议 UDP,类似于您对 HTTP 所做的操作。