一、代理服务器架设的位置实验环境如下: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/242)局域网与外网之间是通过安装有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:Bridgedclient的eth0:VMnet1-(Host-only)二、相关案例的配置1、案例1:让192.168.1.0/24这个网段内的所有机子都可以通过防火墙(192.168.1.254)上internet第1步:做准备工作,让防火墙(192.168.1.254)更安全#防火墙为sshserver,让其它的客户端能够通过SSH服务连接登录到防火墙iptables-tfilter-AINPUT-ptcp--dport22-jACCEPTiptables-tfilter-AOUTPUT-ptcp-mstate--stateESTABLISHED--sport22-jACCEPT#防火墙为sshclient,让它能够连接其它的SSH服务器iptables-tfilter-AINPUT-ptcp--sport22-jACCEPTiptables-tfilter-AOUTPUT-ptcp--dport22-jACCEPT#防火墙为dnsclient,让它能够解析域名iptables-tfilter-AINPUT-pudp--sport53-jACCEPTiptables-tfilter-AOUTPUT-pudp--dport53-jACCEPT#防火墙为webclient,让它能够访问网页iptables-tfilter-AINPUT-ptcp--sport80-jACCEPTiptables-tfilter-AOUTPUT-ptcp--dport80-jACCEPT#让局域网(192.168.1.0/24)内的所有机子都能ping通该防火墙iptables-tfilter-AINPUT-picmp-ieth0-s192.168.1.0/24-jACCEPTiptables-tfilter-AOUTPUT-picmp-oeth0-d192.168.1.0/24-jACCEPT#修改默认规则iptables-tfilter-PINPUTDROPiptables-tfilter-POUTPUTDROPiptables-tfilter-PFORWARDDROP第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-tfilter-AFORWARD-ieth0-s192.168.1.0/24-jACCEPT(这里不写-ieth0也是可以的)#对于防火墙的eth1这块网卡,对来自公网的所有类型的数据包(目标是192.168.1.0/24网段的)进行转发到局域网iptables-tfilter-AFORWARD-ieth1-d192.168.1.0/24-jACCEPT(这里不写-ieth1也是可以的)第3步:地址转化(由于要访问Internet,所以数据包要出去到外网,应在防火墙的nat表中的POSTROUTING链上写入规则)modprobeip_nat(#载入nat表的模块)iptables-tnat-APOSTROUTING-s192.168.1.0/24-jSNAT--to-source192.168.0.254或者iptables-tnat-APOSTROUTING-oeth1-s192.168.1.0/24-jSNAT--to-source192.168.0.254(指定哪个接口也是可以的)iptables-tnat-APOSTROUTING-s192.168.1.5-jSNAT--to-source192.168.0.254(指定只允许192.168.1.5这台机子通过防火墙上网)2、案例2:通过防火墙限制局域网中的192.168.1.5的下载速度注意:在案例1的基础上,向filter表的FORWARD链进行写入规则#要限制下载速度,也就是说要限制从外网进入防火墙且经过FORWARD转发的数据包的数量将iptables-tfilter-AFORWARD-ieth1-d192.168.1.0/24-jACCEPT改为:iptables-tfilter-IFORWARD-ieth1-d192.168.1.5-mlimit--limit50/m--limit-burst50-jACCEPT注意:ifconfigeth1可查看MTU值为1500字节=1500/1024=1.5KB(即:每个数据包的大小),那么1分钟内最大的下载速度为:50*1.5KB=75KBfor((i=5;i10;i++){iptables-tfilter-IFORWARD-ieth1-d192.168.1.$i-mlimit--limit50/m--limit-burst50-jACCEPT(限制局域网的一段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-piptables-tfilter-AFORWARD-ieth0-s192.168.1.0/24-jACCEPTiptables-tfilter-AFORWARD-ieth1-d192.168.1.0/24-jACCEPT第3步:地址转化iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport3389-jDNAT--to-destination192.168.1.5:3389iptables-tnat-APOSTROUTING-oeth1-s192.168.1.5-ptcp--sport3389-jSNAT--to-source192.168.0.254:3389第4步:测试windowsxp(192.168.0.5)-run-mstsc-192.168.0.2544、案例4:通过防火墙向公网发布局域网内的WEB服务器第1步:做准备工作,与案例1的准备工作一样第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)sed-i's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/'/etc/sysctl.conf&&sysctl-piptables-tfilter-AFORWARD-ieth0-s192.168.1.0/24-jACCEPTiptables-tfilter-AFORWARD-ieth1-d192.168.1.0/24-jACCEPT第3步:地址转化iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport80-jDNAT--to-destination192.168.1.3:80iptables-tnat-APOSTROUTING-oeth1-s192.168.1.3-ptcp--sport80-jSNAT--to-source192.168.0.254:80第4步:测试windowsxp(192.168.0.5)-run-、案例5:通过防火墙向公网发布局域网内的FTP服务器第1步:做准备工作,与案例1的准备工作一样第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)sed-i's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/'/etc/sysctl.conf&&sysctl-piptables-tfilter-AFORWARD-ieth0-s192.168.1.0/24-jACCEPTiptables-tfilter-AFORWARD-ieth1-d192.168.1.0/24-jACCEPT第3步:地址转化(1)FTP服务器:主动模式iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport20-jDNAT--to-destination192.168.1.2:20iptables-tnat-APOSTROUTING-oeth1-s192.168.1.2-ptcp--sport20-jSNAT--to-source192.168.0.254:20iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport21-jDNAT--to-destination192.168.1.2:21iptables-tnat-APOSTROUTING-oeth1-s192.168.1.2-ptcp--sport21-jSNAT--to-source192.168.0.254:21(2)FTP服务器:被动模式首先,要实现被动模式,且控制FTP服务器数据传输所使用的端口,那么得配置FTP服务器:/etc/vsftpd/vsftpd.conf,在该文件增加如下内容:pasv_enable=yes#启动被动模式pasv_min_port=4040#被动模式vsftpd服务器所使用的端口范围pasv_max_port=4080其次,防火墙必须载入相关模块到内核modprobeip_natmodprobeip_conntrackmodprobeip_nat_ftpmodprobeip_conntrack_ftp最后,配置防火墙iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport21-jDNAT--to-destination192.168.1.2:21iptables-tnat-APOSTROUTING-oeth1-s192.168.1.2-ptcp--sport21-jSNAT--to-source192.168.0.254:21iptables-tnat-APREROUTING-ieth1-d192.168.0.254-ptcp--dport4040:4080-jDNAT--to-destination192.168.1.2:4040-4080iptables-tnat-APOSTROUTING-oeth1-s192.168.1.2-ptcp--sport4040:4080-jSNAT--to-source192.168.0.254:4040-4080注意:其实FTP服务器工作于主动模式还是被动模式,完全是由FTP