Linux环境下iptables代理及NAT转发

1. 实验环境

Linux rhel6.5作为WEB-内网(client),IP地址:192.168.10.10 ,——VMnet8 ;

Linux rhel6.5作为GATEWAY—网关, eth1的IP地址:192.168.10.1——VMnet8;eth2的IP地址:202.100.10.1——VMnet1;

Linux rhel6.5作为WEB-外网(client),IP地址:202.100.10.10 ,——VMnet1 ;

2. 实验步骤

前期配置

(1)配置WEB-内网(client)端

1.1> 网卡配置——VMnet8模式;

Linux环境下iptables代理及NAT转发

1.2> IP信息配置并重启网络服务;

Linux环境下iptables代理及NAT转发

1.3> 查看配置信息;

Linux环境下iptables代理及NAT转发

1.4> 清空防火墙规则和禁用seLinux服务;

Linux环境下iptables代理及NAT转发

1.5> 网页信息配置;

Linux环境下iptables代理及NAT转发

1.6> 使用浏览器测试网页信息能否成功显示;

Linux环境下iptables代理及NAT转发

(2)配置GATEWAY-网关端

2.1> 网卡配置  eth1——VMnet8模式,eth2——VMnet1模式;

Linux环境下iptables代理及NAT转发

2.2> IP信息配置并重新启动网络服务;

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

2.3> 查看配置信息并清除防火墙规则和禁用seLinux服务;

Linux环境下iptables代理及NAT转发

(3)配置WEB-外网(client)端

3.1> 网卡配置——VMnet1模式;

Linux环境下iptables代理及NAT转发

3.2> IP信息配置并重新启动网络服务;

Linux环境下iptables代理及NAT转发

3.3> 查看配置信息并清除防火墙规则和禁用seLinux服务;

Linux环境下iptables代理及NAT转发

3.4> 配置网页信息;

Linux环境下iptables代理及NAT转发

3.5> 使用浏览器测试网页信息能否成功显示;

Linux环境下iptables代理及NAT转发

4. 连通性测试

4.1> 使用WEB-内网(client)ping网关和WEB-外网(client);

Linux环境下iptables代理及NAT转发

4.2> 使用WEB-外网(client)ping网关和WEB-内网(client);

Linux环境下iptables代理及NAT转发

(注:因为网关没有开启路由转发功能,所以WEB-内网(client)ping不通WEB-外网(client))

4.3> 开启路由转发功能;

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

4.4> 使用WEB-内网(client)可以ping 通WEB-外网(client);

Linux环境下iptables代理及NAT转发

4.5> 使用WEB-外网(client)可以ping 通WEB-内网(client);

Linux环境下iptables代理及NAT转发

NAT策略应用

(1)SNAT策略应用

1.1> 在WEB-内网(client)访问WEB-外网(client),并在WEB-外网(client)端查看httpd访问日志;

cat /var/log/httpd/access_log

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

 此时,访问WEB-外网(client)端的IP地址为WEB-内网(client)端的私有IP地址

1.2> 在GATEWAY端添加使用SNAT策略的防火墙规则;

[[email protected] 桌面]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth2 -j SNAT --to-source 202.100.10.1

Linux环境下iptables代理及NAT转发

1.3> 使用WEB-内网(client)访问WEB-外网(client),并在WEB-外网(client)端查看httpd访问日志;

Linux环境下iptables代理及NAT转发Linux环境下iptables代理及NAT转发

 此时,访问WEB-外网(client)端的IP地址已经变成网关端eth2外网接口的IP地址

(2)MASQUERADE(地址伪装)策略应用

2.1> 在GATEWAY网关端添加使用MASQUERADE策略的防火墙规则

[[email protected] 桌面]# iptables -t nat -F

[[email protected] 桌面]#  iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth2 -j MASQUERADE

Linux环境下iptables代理及NAT转发

2.2> 在WEB-内网(client)访问WEB-外网(client),并在WEB-外网(client)端查看httpd访问日志;

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

 此时,访问WEB-外网(client)端的IP地址被伪装成GATEWAY网关端eth2外网接口的IP地址

(3)DNAT策略应用

3.1> 在GATEWAY网关端添加使用DNAT策略的防火墙规则;

[[email protected] 桌面]# iptables -t nat -A PREROUTING -i eth2 -d 202.100.10.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.10

Linux环境下iptables代理及NAT转发

3.2> 在WEB-外网(client)访问网关的eth2外网接口,可以成功访问;

Linux环境下iptables代理及NAT转发

 此时WEB-外网(client)访问到了WEB-内网(client)

代理服务

代理服务分为正向代理和反向代理。正向代理是内网访问外网,分为传统代理(默认)和透明代理。

传统代理需在客户端上设置浏览器;透明代理不需要设置浏览器,但需要在网关上写一条iptables 策略。

反向代理是外网访问内网。

(1)配置代理服务器

1.1> 在GATEWAY网关端(代理服务器)安装squid服务;

Linux环境下iptables代理及NAT转发

1.2> 修改squid配置文件;

[[email protected] 桌面]# vim /etc/squid/squid.conf

[[email protected] 桌面]# service squid start

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

(2)正向传统代理服务

2.1> 在WEB-内网(client)端设置代理服务(浏览器中);

“火狐浏览器”-->“编辑”-->“首选项”-->“高级”-->“网络”-->“连接”设置

Linux环境下iptables代理及NAT转发

2.2> 在WEB-内网(client)访问WEB-外网(client)端,并在WEB-外网(client)端查看httpd访问日志;

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

 此数据包经由GATEWAY网关外网接口发出,则此时的IP地址为网关eth2接口处的IP地址

2.3> 关闭squid服务,再次访问;

Linux环境下iptables代理及NAT转发

2.4> 此时,代理服务器已关闭,无法访问;

Linux环境下iptables代理及NAT转发

(3)正向透明代理服务

3.1> 在GATEWAY网关端中设置透明代理;

vim  /etc/squid/squid.conf

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

3.2> 在GATEWAY网关端设置防火墙规则;

[[email protected] 桌面]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128

Linux环境下iptables代理及NAT转发

3.3> 在WEB-内网端,设置浏览器为“无代理”,然后访问WEB-外网(client);

Linux环境下iptables代理及NAT转发

3.4> 关闭squid服务,此时WEB-内网无法访问WEB-外网;

Linux环境下iptables代理及NAT转发

Linux环境下iptables代理及NAT转发

注:内网与外网之间的通信是由服务代理进行的,如果squid服务关闭,外网的数据包就无法传送给内网