[其它] iptables实现路由转发

[复制链接]
查看: 609|回复: 0

34

主题

34

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2020-1-13 22:53:56 | 显示全部楼层 |阅读模式

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

其步骤如下:


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

1.jpg

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

1.png

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

1.png


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

1.png

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

1.png


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

1.png


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

1.png

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

  1. IPT="iptables"
  2. ROUTER="114.214.166.175"
  3. PC1="192.168.226.200"

  4. sudo $IPT -A FORWARD -i eth1 -s $PC1 -j ACCEPT
  5. sudo $IPT -A FORWARD -i eth0 -d $PC1 -j ACCEPT
  6. sudo $IPT -t nat -A POSTROUTING -i eth0 -s $PC1 -j SNAT --to $ROUTER
  7. sudo $IPT -t nat -A PREROUTING -o eth0 -d $ROUTER -j DNAT --to $PC1
复制代码

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

实验结果及分析:

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

使用Wireshark抓包分析:

1.png

针对上面的一个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的查询。很明显,这种转发会影响整个系统的速度。



腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )