Linux iptables配置:PPTPD服务器的包过滤规则设定

版权申诉
0 下载量 40 浏览量 更新于2024-09-06 收藏 19KB DOCX 举报
该文档是关于Linux环境下使用pptpd服务并结合iptables进行包过滤的配置说明。用户希望实现所有客户端可以访问内网的80端口,而特定客户端才能访问其他端口。在尝试配置iptables规则后,遇到了访问权限的问题,即所有IP都能访问所有端口或所有端口都无法访问。 在iptables的配置中,`FORWARD`链用于处理通过本机转发的数据包。根据提供的iptables配置文件,可以看到以下关键规则: 1. `-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT`: 允许已建立连接和相关连接的数据包通过。 2. `-A INPUT -p icmp -j ACCEPT`: 允许ICMP协议的数据包通过,这对于ping和其他网络诊断工具是必要的。 3. `-A INPUT -p gre -j ACCEPT`: 允许GRE(通用路由封装)协议的数据包通过,这可能是pptpd服务所需要的。 4. `-A INPUT -i lo -j ACCEPT`: 允许来自本地环回接口的数据包通过。 5. `-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT`: 新建连接时,允许TCP端口22(SSH)的入站连接。 6. `-A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT`: 新建连接时,允许TCP端口1723(PPTP)的入站连接。 7. `-A INPUT -j REJECT --reject-with icmp-host-prohibited`: 拒绝所有其他未明确允许的入站连接,返回主机禁止的ICMP错误。 8. `-A FORWARD -p icmp -j ACCEPT`: 允许ICMP协议的转发数据包。 9. `-A FORWARD -ippp+-o eth0 -ptcp -s 192.168.100.0/24 -d 192.168.100.0/24 --dport 80 -j ACCEPT`: 允许从192.168.100.0/24子网到同一子网的80端口的TCP数据包通过。 10. `-A FORWARD -ippp+-i eth0 -ptcp -d 192.168.100.0/24 -s 192.168.100.0/24 --sport 80 -j ACCEPT`: 允许从192.168.100.0/24子网到同一子网且源端口为80的TCP数据包通过。 11. `-A FORWARD -ippp+-o eth0 -ptcp -s 192.168.100.201/32 -d 192.168.100.0/24 -mmultiport --dport 22,80,14 -j ACCEPT`: 允许从IP地址192.168.100.201的客户端访问192.168.100.0/24子网的22、80和14端口。 问题在于,当所有端口都无法访问时,发现很多包虽然符合规则,但最终被DROP。这是因为只配置了入站规则,而忽略了出站规则。数据包的响应需要出站规则来允许其返回,否则连接无法正常完成。 要解决这个问题,需要添加出站规则,确保被允许的入站连接能够得到回应。例如,对于允许访问80端口的规则,需要添加相应的出站规则: ```bash -A OUTPUT -m state --state ESTABLISHED -o eth0 -d 192.168.100.0/24 --sport 80 -j ACCEPT ``` 这将允许来自192.168.100.0/24子网且目的端口为80的已建立连接的出站数据包。 对于特定客户端IP(如192.168.100.201)访问其他端口,也需要相应的出站规则: ```bash -A OUTPUT -m state --state ESTABLISHED -o eth0 -d 192.168.100.0/24 -s 192.168.100.201 --dport 22,80,14 -j ACCEPT ``` 这将允许来自192.168.100.201的已建立连接的出站数据包,目标端口为22、80或14。 正确配置这些规则后,iptables将会根据设定的策略允许指定客户端访问特定端口,同时保证数据包的正常来回传输,从而实现预期的包过滤设置。在调整规则后,记得使用`service iptables restart`重启iptables服务,使新规则生效。