iptables实现路由转发

使用linux的iptables进行局域网与广域网的路由转发,文中实现的是IP替换。由于一般PC只有单有线网卡,所以在VMware下使用虚拟网卡实现该功能的实验。

其步骤如下:

1.     设计整个网络拓扑如下:

 

2.     在Vmware中选择建立相应的交换机,并分配相应的子网IP和NetMask

 

3.     为Linux系统添加两个虚拟网卡,一个连接外网,一个连接局域网


4.     为WinXp系统添加一个虚拟网卡,连接到局域网交换机VMnet2上,这样就实现了设计的网络拓扑结构


5.     启动Linux虚拟机,使用ifconfig获得网卡的相关信息。


6.     启动WinXp的虚拟系统,将其网络连接的IP设为192.168.226.200,网关设为linux的网络IP即 192.168.129(确保其使用linux虚拟系统作为路由),DNS服务器设为广域网的DNS服务器,即202.38.64.56


7.     在linux下netfilter的结构如下:


如果要实现包的转发,必须将相应的策略加入到FORWARD链中,同时修改/etc/sysctl.conf中关于转发的设置:net.ipv4.ip_forwarding=1net.ipv6.conf.all.forwarding=1 同时也要将相应的转发策略加入到nat模块中的PREROUTING和POSTROUTING链中。使用如下的脚本进行相关策略的添加:

IPT="iptables"
ROUTER="114.214.166.175"
PC1="192.168.226.200"

sudo $IPT -A FORWARD -i eth1 -s $PC1 -j ACCEPT
sudo $IPT -A FORWARD -i eth0 -d $PC1 -j ACCEPT
sudo $IPT -t nat -A POSTROUTING -i eth0 -s $PC1 -j SNAT --to $ROUTER
sudo $IPT -t nat -A PREROUTING -o eth0 -d $ROUTER -j DNAT --to $PC1


8.     执行上诉的脚本文件即可实现策略的添加,在WinXp上即可访问外部网络。这就实现了实验目的中的使用LINUX上iptables进行路由转发。


实验结果及分析:

在实验中已经实现了局域网的路由转发功能

使用Wireshark抓包分析:


针对上面的一个DNS查询,可以看到,192.168.226.200即局域网的机器首先发送一个查询包,包的src为192.168.226.200 dest为202.38.64.56,在经过局域网的网关时,在FORWARD链中允许其转发,在POSTROUTING中将该包的src修改成114.214.166.175,然后发送到外网中,查询的response包中src为202.38.64.56 dest为114.214.166.175,在经过netfilter中nat的PREROUTING时,将包的dest改为192.168.226.200,然后netfilter将按照filter的FORWARD链中规则,允许转发到dest中,这样就实现了子网中一个DNS的查询。很明显,这种转发会影响整个系统的速度。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值