
Linux iptables配置:PPTPD服务器的包过滤规则设定
版权申诉
19KB |
更新于2024-09-06
| 174 浏览量 | 举报
收藏
该文档是关于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
最新资源
- ExtJS布局初学实用示例:一步到位解压即用
- 打造简易PHP聊天室:代码与实践指南
- 电脑使用健康指南:预防电脑病实用手册
- C#中DDA与Bresenham直线算法的实践解析
- 用JS打造即插即用的日历程序
- Java导出Excel工具包源码及API详解
- 大连华信教学课件:深入Oracle PL/SQL数据库编程
- Spring+Hibernate+Struts框架下的文件上传与下载技术解析
- Web2.0下相册模块的多层架构实现
- 深入解析Visual C++平台下的OpenGL开发框架
- 深入了解Prototype.js类库开发指南
- SQLSERVER版通用接口实现跨平台数据交换
- 探索酒店内部管理系统的构建与应用
- 单片机原理及应用课件解析
- VC++平台下OpenGL开发框架深入解析
- SourceInsight代码助手,编程开发的最佳伴侣
- 中文版 SQL Server 2000开发管理详解
- C51控制AD7705模块实现高精度数据采集
- 掌握GB-T 9386-1988计算机软件测试规范
- Ruby编程语言最佳实践与技巧集锦
- 软件测试:2005年版深入解析
- FCKeditor_2.6.2:兼容多浏览器的HTML在线编辑器
- Verilog实现的多功能999计数器及其硬件应用
- 轻松实现文件误删后的快速恢复