分类: LINUX
2010-02-27 22:10:52
利用IPtables实现地址转换
Iptables是一个异常强大的工具,它不仅仅能实现防火墙的全部功能,还能利用NAT地址转换使内网的主机访问互联网,也能让互联网的主机访问内网的服务器。
(关于Iptables详情参见:)
源地址转换
一、 实验准备:
1、 三台装有linux系统的主机(这里使用Vmware 7.0虚拟机)
2、 IP地址及连接图如下所示:
二、 实验配置
1、参照上图配置好IP地址
Local
IP:192.168.10.1
MASK:255.255.255.0
GATEWAY:192.168.10.2
Firewall
eth0
IP:192.168.10.2
MASK:255.255.255.0
eth1
IP:192.168.100.1
MASK:255.255.255.0
Remote
IP:192.168.100.2
MASK:255.255.255.0
GATEWAY192.168.100.1
2、 开启Firewall主机上的路由功能
# vim /etc/sysctl.conf
把net.ipv4.ip_forward的值改为1
# sysctl –p
3、测试连通性
Local
# ping 192.168.100.2
Remote
# ping 192.168.10.1
4、在Remote主机上假设http服务器
Remote
# mount /dev/cdrom /media/cdrom
# rpm-ivh /media/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
# service httpd start
5、在Local上访问Remote上的http服务
Local
# elinks 192.168.100.2
# q 退出
可以看到能够正常访问
6、查看Remote主机上的日志观察访问源地址
Remote
# less /var/log/httpd/access_log
可以看到访问的源地址为192.168.10.1
4、在Firewall主机上配置实现源地址的转换
Firewall
# iptables -t nat -A POSTROUTING -d 192.168.100.2 -s 192.168.10.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.100.1
5、再用Local主机去访问Remote主机的WEB服务
Local
# elinks 192.168.100.2
# q 退出
6、查看Remote主机上的日志
Remote
# less /var/log/httpd/access_log
可以看到访问的源地址为192.168.100.1
目标地址转换
一、实验准备
1、IP地址及连接图如下所示:
二、实验配置
1、如采用上面的实验环境,应清空以上配置。
Firewall
# iptables -t nat -F
2、用Local主机去访问Remote主机的WEB服务
# elinks 192.168.100.2
# q 退出
3、查看Remote主机上日志
Remote
# less /var/log/httpd/access_log
可以看到访问的源地址为192.168.10.1
4、在Firewall主机上配置实现目标地址的转换
Firewall
# iptables -t nat -A PREROUTING -d 192.168.100.2 -s 192.168.100.0/24 -p tcp --dport 80 -j DNAT --to-dest 192.168.10.2
5、查看Remote主机上的日志
Remote
# less /var/log/httpd/access_less
可以看到访问的源地址为192.168.100.1.
总结:
源地址转换主要用于一个网络中只有一个公网地址,而又想让网络中所有的主机都连入互联网。
目标地址转换主要用于在内网搭建公网服务器,由于外网用户不知道服务器的真实地址,所以在一定程度上可以起到保护服务器的作用。