
Linux iptables配置:PPTPD服务器的包过滤规则设定
版权申诉
19KB |
更新于2024-09-06
| 143 浏览量 | 举报
收藏
该文档是关于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服务,使新规则生效。
相关推荐







zgr006
- 粉丝: 0
最新资源
- Atoms-mvp:深入探讨基于MVP的Android组件架构设计
- Set网络实时纸牌游戏部署教程与Docker使用
- QCADWatch: 实时监控与自动更新QCAD设计文件
- 简化Gmail数据抓取:使用gmail-wrapper Python工具
- MATLAB实现SOS-SDP算法:精确解决最小平方和聚类问题
- Docker容器助理中继:配置与运行指南
- Python3环境下Matlab字体定制及SynthText应用
- Next.js与Material UI构建的SAMAHAN前端及WP API后端
- 开源FeverBasketball环境:面向研究的篮球游戏RL框架
- 复古游戏重现:1975年俄勒冈小径JavaScript版
- rsiconfi:巴西公共部门会计数据的R语言检索工具
- 慕尼黑LMU冬季学期在线多媒体讲座材料概览
- AWS EC2实例规格与价格查询工具:Golang库介绍
- 深度多主体强化学习在公共资源系统中的应用研究
- 为Visual Studio增强功能:DialToolsForVS扩展
- 使用LMS算法实现有源噪声控制的Matlab代码解析
- 掌握业力:Slack平台上的Karma_Bot机器人开发指南
- MovieBuildings: 搭建电影中建筑物的Web应用数据库
- 基于Docker的PHPinfo与Nginx+php-fpm实践指南
- Docker构建的Ubuntu桌面环境:LXDE与VNC整合
- GitHub Pull Request审查入门学习指南
- 基尼系数Matlab分析:PS3-yaobinwang296项目
- 探索datenschutz-fetzt项目的技术与设计要点
- Sophia lang实现的智能合约:Bonding Curve解析