一、代理服务器架设的位置如上图

实验环境如下:
1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端
(1)WEB服务器:192.168.1.3/24
(2)FTP服务器:192.168.1.2/24
(3)客户端:192.168.1.5/24
2)局域网与外网之间是通过安装有CentOS的防火墙相连,防火墙有两块网卡
(1)eth0:192.168.1.254/24,它是网段:192.168.1.0/24的网关
(2)eth1:192.168.0.254/24,它模拟为公网IP地址
3)Internet的另一端有一台客户端:192.168.0.5/24
该客户端与防火墙是可以ping的通的
4)网卡的连接方式
FTP服务器的eth0:VMnet1-(Host-only)
WEB服务器的eth0:VMnet1-(Host-only)
Firewall的eth0:VMnet1-(Host-only)
Firewall的eth1:Bridged
client的eth0:VMnet1-(Host-only)

二、相关案例的配置

1、案例1:让192.168.1.0/24这个网段内的所有机子都可以通过防火墙(192.168.1.254)上internet

第1步:做准备工作,让防火墙(192.168.1.254)更安全
#防火墙为ssh server,让其它的客户端能够通过SSH服务连接登录到防火墙
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

#防火墙为ssh client,让它能够连接其它的SSH服务器
iptables -t filter -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

#防火墙为dns client,让它能够解析域名
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

#防火墙为web client,让它能够访问网页
iptables -t filter -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

#让局域网(192.168.1.0/24)内的所有机子都能ping通该防火墙
iptables -t filter -A INPUT -p icmp -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -o eth0 -d 192.168.1.0/24 -j ACCEPT

#修改默认规则
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
#对于防火墙的eth0这块网卡,对来自局域网的所有类型的数据包(源地址是192.168.1.0/24网段的)进行转发到公网
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT(这里不写-i eth0也是可以的)
#对于防火墙的eth1这块网卡,对来自公网的所有类型的数据包(目标是192.168.1.0/24网段的)进行转发到局域网
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT(这里不写-i eth1也是可以的)

第3步:地址转化(由于要访问Internet,所以数据包要出去到外网,应在防火墙的nat表中的POSTROUTING链上写入规则)
modprobe ip_nat(#载入nat表的模块)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.254
或者
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.254(指定哪个接口也是可以的)
iptables -t nat -A POSTROUTING -s 192.168.1.5 -j SNAT --to-source 192.168.0.254(指定只允许192.168.1.5这台机子通过防火墙上网)

2、案例2:通过防火墙限制局域网中的192.168.1.5的下载速度
注意:在案例1的基础上,向filter表的FORWARD链进行写入规则
#要限制下载速度,也就是说要限制从外网进入防火墙且经过FORWARD转发的数据包的数量
将 "iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT" 改为:
iptables -t filter -I FORWARD -i eth1 -d192.168.1.5 -m limit --limit 50/m --limit-burst 50 -j ACCEPT
注意:ifconfig eth1可查看MTU值为1500字节=1500/1024=1.5KB(即:每个数据包的大小),那么1分钟内最大的下载速度为:50 * 1.5KB = 75KB
for ((i=5;i<10;i++) {
iptables -t filter -I FORWARD -i eth1 -d 192.168.1.$i -m limit --limit 50/m --limit-burst 50 -j ACCEPT(限制局域网的一段IP)
}

3、案例3:公网的那台客户端(192.168.0.5)通过防火墙使用远程桌面连接局域网中的192.168.1.5主机

第1步:做准备工作,与案例1的准备工作一样

第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT

第3步:地址转化
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.5:3389
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.5 -p tcp --sport 3389 -j SNAT --to-source 192.168.0.254:3389

第4步:测试
windows xp(192.168.0.5) -> run -> mstsc -> 192.168.0.254

4、案例4:通过防火墙向公网发布局域网内的WEB服务器

第1步:做准备工作,与案例1的准备工作一样

第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT

第3步:地址转化
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:80
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.3 -p tcp --sport 80 -j SNAT --to-source 192.168.0.254:80

第4步:测试
windows xp(192.168.0.5) -> run ->http://192.168.0.254

4、案例5:通过防火墙向公网发布局域网内的FTP服务器

第1步:做准备工作,与案例1的准备工作一样

第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT

第3步:地址转化
(1)FTP服务器:主动模式
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 20 -j DNAT --to-destination 192.168.1.2:20
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 20 -j SNAT --to-source 192.168.0.254:20
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.2:21
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 21 -j SNAT --to-source 192.168.0.254:21
(2)FTP服务器:被动模式
首先,要实现被动模式,且控制FTP服务器数据传输所使用的端口,那么得配置FTP服务器:/etc/vsftpd/vsftpd.conf,在该文件增加如下内容:
pasv_enable=yes #启动被动模式
pasv_min_port=4040 #被动模式vsftpd服务器所使用的端口范围
pasv_max_port=4080
其次,防火墙必须载入相关模块到内核
modprobe ip_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
最后,配置防火墙
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.2:21
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 21 -j SNAT --to-source 192.168.0.254:21
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport4040:4080 -j DNAT --to-destination 192.168.1.2:4040-4080
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 4040:4080 -j SNAT --to-source 192.168.0.254:4040-4080
注意:其实FTP服务器工作于主动模式还是被动模式,完全是由FTP客户端决定的!所以在vsftpd.conf文件里根本就没有必要配置上面这三条语句,配置那三条语句只是为了更好的控制FTP服务器被动模式下工作时数据传输端口

第4步:测试
windows xp(192.168.0.5) -> cmd -> ftp 192.168.0.254

5、案例5:通过防火墙限制局域网中的192.168.1.5机子使用飞信客户端软件

第1步:下载数据包分析工具(wireshark)
由于iptables工具扮演的是网络层的防火墙,所以在限制用户使用软件方面,一般只能通过从协议(TCP、UDP)对应的端口入手,通过限制这些协议对应的端口,来达到限制使用软件的目的;但是一些协议iptables是无法限制,例如:点对点协议
http://www.wireshark.org
http://www.wireshark.org/download/win32/wireshark-win32-1.2.7.exe

第2步:由于防火墙扮演着网关的角色,所以我们可以在网关上使用tcpdump进行抓包,该工具可以抓TCP类型的数据包
首先,在防火墙上运行tcpdump指令
tcpdump -i eth0 host 192.168.1.5 -s 0 -w feixing.pcap
参数分析:
(1)-i eth0:指的是在防火墙的充当网关的那个接口上进行抓包(因为局域网中的用户上网时,数据包都得通过网关)
(2)host + IP:指的是抓取含有192.168.2.5这个地址的数据包
(3)-s 0:表示数据包的长度不限
(4)-w:表示所抓到的数据包写入到一个文件
然后,在局域网的192.168.1.5这台机子上使用飞信客户端程序,登录飞信服务器,之后再切断防火墙的tcpdump指令(ctrl+c)

第3步:用wireshark软件对所抓到的数据包进行分析

第4步:局域网的那台机子(192.168.1.5)在使用飞信时,传送的数据包必须经过防火墙上的filter表的FORWARD进行转化,所以我们在FORWARD链上进行写入规则,来限制该台机子使用飞信客户端
#阻止客户端将相关的飞信数据包发给飞信服务器
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.176.31.69 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.176.31.45 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.212 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.201 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.198 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.44.232 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 218.61.204.91 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 199.7.52.190 -p tcp -m multiport --dport 80,8080,443 -j DROP

第五章:iptables应用案例分析(代理服务器上设置iptables)相关推荐

  1. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区...

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  2. 第5章 调优案例分析与实战

    目录 案例分析 大内存硬件上的程序部署策略 堆外内存导致的溢出错误 外部命令导致系统缓慢 由Windows虚拟内存导致的长时间停顿 由安全点导致长时间停顿 编译时间和类加载时间优化 类加载时间优化 编 ...

  3. 第五章. 可视化数据分析图表—图表的常用设置1

    第五章. 可视化数据分析图 5.2 图表的常用设置1 本节主要介绍图表的常用设置,主要包括颜色设置,线条样式,标记样式,设置画布,坐标轴,添加文本标签. 1.设置画布(matplotlib.pyplo ...

  4. iptables应用案例分析

    一.代理服务器架设的位置 实验环境如下: 1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端 (1)WEB服务器:192.168.1.3/24 (2)FTP服务器:192. ...

  5. linux ftp服务器防火墙设置,Linux 为FTP 服务器添加iptables规则--案例分析

    一.故障描述 由于开发提出需求,为他们搭建内部Linux习下ftp服务器,搭建好后,提交给他们,测试可以正常使用.后来过了一段时间后,有一天无法登陆了.于是去ftp主机上检查问题,ftp的配置文件没有 ...

  6. c语言五猴分桃案例分析,C语言程序设计五猴分桃问题实验报告.doc

    C语言程序设计五猴分桃问题实验报告 课 程 设 计 报 告 学院.系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程课程设计科目C语言程序课程设计所在班级:10班学生学号:学生姓名:赵学文指导教 ...

  7. 【数字逻辑】学习笔记 第五章 Part2 时序逻辑电路(分析与设计)

    文章目录 一.时序逻辑电路分析 1. 同步时序逻辑电路分析 (1) 分析目的 (2) 分析方法 (3) 分析步骤 2. 例题A (1) 写方程组 (2) 根据方程组列出状态转移真值表 (3) 根据状态 ...

  8. 社区便利店选址五要素,真实案例分析便利店选址步骤分享!

    近年来,各地政府陆续出台了具体的政策指标,以推动城乡社区便利店的建设,随着中国城镇化率和城市人口密度逐年提升,也将带动便利店经济的发展. 数据显示,2021年中国便利店行业市场规模,达2988亿元,门 ...

  9. 《深入理解Java虚拟机》第5章 调优案例分析与实战

    5.2.1高性能硬件上的程序部署策略 监控服务器运行状况发现网站没有响应是由GC停顿导致的,虚拟机运行在Server模式,默认使用吞吐量优先收集器,回收12GB的堆,一次Full GC的停顿时间高达1 ...

最新文章

  1. Linux常用命令--网终设置
  2. php跨域cookie共享使用方法
  3. 为啥程序员工资高,却很多人想转行,这4点原很现实
  4. HTTP 共享打印机
  5. Collections.unmodifiableMap
  6. 工业机器人九龙坡区职教中心_山西省襄汾县职教中心“智能工业机器人订单班”学生集体观看直播“2020一带一路暨金砖国家技能发展与技术创新大赛”...
  7. django 创建mysql失败_创建表时出现Django MySQL错误
  8. BugkuCTF-Crypto题给你私钥吧
  9. java中的Servlet
  10. log4j2日志配置
  11. 设计师常用网页小图标大全
  12. matlab linux 中文显示问题解决办法
  13. TortoiseGit--小乌龟git项目中的使用简介
  14. pandas常用功能手册
  15. Google可能将退出中国市场
  16. 怀念经理用鼠标线联网的1990年代当时
  17. 累计观看5.5亿+,盛世华诞,云上直播随地看
  18. 监控摄像头与云服务器
  19. js实现input的赋值,根据今天的日期获取本周的周一和周日的日期,获取当天日期
  20. LeetCode881:救生艇 (C、C++实现)

热门文章

  1. 直播带货,真的适合在线教育吗?
  2. NILM Metadata的构成初探
  3. 用RNN生成文本的简单例子(过程详细)
  4. 【微信读书每日一答辅助小程序】使用python对每日一答问题进行识别,并将结果保存到剪贴板以便搜索。
  5. 权限控制之粗粒度与细粒度
  6. 闲聊SDK登录和分享
  7. Redis主从复制和哨兵模式
  8. SEO外链专员工作心得与经验技巧
  9. 生存战争-基础二进制电路板视频学习记录
  10. [转]我们需要什么样的游戏