实验目的:
使用iptables命令实现代理。需要3台机器(2台虚拟机+主机)进行演示。
实验环境:
1. Mac OS IP地址:192.168.43.121 (客户机)
2. Ubuntu IP地址:192.168.43.194(代理)
3. Kali Linux IP地址:192.168.43.45(web服务器)
实验步骤:
1. 初始的Kali Linux上部署了一个DVWA工具所以以此作为服务器主机来进行实验,客户机192.168.43.121访问服务器192.168.43.45/DVWA的界面:
2. 代理机192.168.43.194上,开启ip_forward转发,需要登陆root
3. 代理机192.168.43.194上,增加以下规则
sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.43.121 --dport 80 -j DNAT --to-destination 192.168.43.45:80
//在PREROUTING链上使用DNAT,更改来自客户机的tcp数据包的目的地址和端口为服务器的地址和端口。
sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.43.45 --sport 80 -j DNAT --to-destination 192.168.43.121
//在PREROUTING链上使用DNAT,更改来自服务器的80端口的tcp数据包的目的地址是客户机。
sudo iptables -t nat -A POSTROUTING -p tcp -s 192.168.43.121 -j SNAT --to-source 192.168.43.194
//在POSTROUTING链使用SNAT,对发送源为客户机的tcp数据包的源地址修改为本代理机的地址。
sudo iptables -t nat -A POSTROUTING -p tcp -s 192.168.43.45 --sport 80 -j SNAT --to-source 192.168.43.194:80
//在POSTROUTING链使用SNAT,对发送源为服务器的tcp数据包的源地址和端口修改为本代理机的地址和端口。
4. 此时客户机访问代理机192.168.43.194/DVWA可以得到DVWA界面
在代理机本地访问localhost/DVWA,可以看到本地并没有部署DVWA服务
实验原理参考文章[1]
参考
- ^1 https://zhuanlan.zhihu.com/p/59923208