美文网首页
使用IPtables配置虚拟路由器

使用IPtables配置虚拟路由器

作者: 府学路十八吖 | 来源:发表于2020-05-06 21:18 被阅读0次

背景

  1. 当两台电脑处于不同的网段时,在不借助外部设备的情况下是不能够连通的。为了实现不同网段之间的连通,可以在两个网段之间假设一台路由器。
  2. 为了更加直观地理解路由器在网络中的作用,以及了解IPtables的使用方法,我们可以使用IPtables来架设一台虚拟的路由器以实现不同网段之间的通信。整个虚拟网络的结构如下所示:


    网络结构.png

步骤

  1. 打开VMware Workstation,选择“编辑”-->“虚拟网络编辑器”,然后创建两个网段(VMnet2,VMnet3分别用于设置两个静态IP网段,两个网段的子网IP不同其余设置相同),网段的设置如下: VMnet设置.png
  2. 创建三台虚拟机,其中student1和student2只有1张网卡,student3有两张网卡。并且student1配置VMnet2,student2配置VMnet3,student3配置VMnet2和VMnet3 student1.png
    student2.png student3.png
  3. 安装好3台虚拟机之后,配置hostname(如果之前在安装引导的时候已经配置过了就无需再配置,如果之前没有配置则需要重新配置主机名。三台虚拟机中设置主机名的方法一样,只是名字不一样)。
    • 首先编辑配置文件,将其中的HOSTNAME改成自己设定的主机名称:vim /etc/sysconfig/network hostname-1.png
    • 使用hostname命名主机(这里必须保证前面设置的名称和这里的名称一致,例如我这里都是student3):hostname student3 hostname-2.png
    • 重启即可生效:reboot hostname-3.png
  4. 为三台虚拟机配置静态IP地址(配置的方法参考上一节的内容,也可参考一下的截图。第一张图是配置文件中的内容,第二张图中的命令是整个配置过程所使用的命令),虚拟机的网段规划见下表: ifcfg-eth0.png
    network-setting.png
    IP配置清单.png
  5. 从student1中ping student2和student3测试连通性。从返回来看,student1和student2之间无法联通,student1和student3之间是连通的。(原因是student1和studnet2处在不同的网段所以不通,而student1和student3的eth0处在相同的网段所以连通)。 配置前网络状态.png
  6. 在student3中构建虚拟路由器:将student3作为虚拟路由器,使得处在不同网段的虚拟机student1和student2之间可以连通。
    • 设置路由功能
// 开启包过滤功能
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf
// 开启源路由核查功能
echo "net.ipv4.conf.default.rp_filter=0" >> /etc/sysctl.conf
// 关闭反向路径过滤
echo "net.ipv4.conf.all_filter=0" >> /etc/sysctl.conf
// 让网络设置生效
sysctl -p
iptables设置.png
  • 修改student3的IPtables配置,使其可以接收并转发192.168.2.0/24和192.168.3.0/24两个网段的数据包。
// 清空所有链中的规则
iptables -F
// 清空所有的用户自定义
iptables -X
// 把所有链的包以及字节的计数器清空
iptables -Z
// 保存IPtables的配置
/etc/init.d/iptables save
// 指定192.168.2.0/24网段的数据包从eth0中发出去
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0
// 指定192.168.3.0/24网段的数据包从eth1中发出去
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth1
数据转发.png
  1. 检查student1和student2之间网络的连通性。
    • 从student1中pingstudent2: 1ping2.png
    • 从student2中pingstudent1: 2ping1.png
    • 通过观察以上两张截图的信息发现,当student3构建成一台虚拟路由器之后,student1和student2之间可以通过student3实现数据传递。在这个过程中,student3也就担当了路由器的角色,而实现的方法就是配置iptables。
  2. 通过配置IPtables规则,还可以实现网段之间的隔离。例如使student2和student3之间无法联通,相同的方式可以恢复连通。
// 设置规则将来自于192.168.3.0/24网段的包直接丢弃掉
iptables -I INPUT -s 192.168.3.0/24 -j DROP
//  再测试连通性发现网络不通

// 设置规则接收来自于192.168.3.0/24网段的包
iptables -I INPUT -s 192.168.3.0/24 -j ACCEPT
// 再测试连通性发现网络重新连通
隔离与恢复.png

小结

  1. IPtables是Linux下的免费防火墙工具,可以通过配置IPtables实现一些常见的网络隔离、连通操作,从而起到一定的防火墙功能。
  2. 其实真正的防火墙是处于Linux内核空间的Netfilter,而IPtables是用户空间中的配置工具。IPtables制定策略,Netfilter执行策略,二者协同实现真正的防火墙功能。IPtables就好比是诸葛亮,Netfilter好比是张飞。

相关文章

网友评论

      本文标题:使用IPtables配置虚拟路由器

      本文链接:https://www.haomeiwen.com/subject/jajgghtx.html