静态路由

静态路由
如下图的实验:
IP分配如下(掩码假设全为24位),做实验的话使用iptables -F把所有的防火墙规则清空
1.1.1.0/24网段用vmnet1来模拟
2.2.2.0/24网段用vmnet2来模拟
3.3.3.0/24网段用vmnet3来模拟
4.4.4.0/24网段用vmnet4来模拟
vm1 vm2 vm3 vm4
eth1(vmnet2) eth0(vmnet2) eth1(vmnet4)
2.2.2.2 <------> 2.2.2.3 4.4.4.4
ip_forward ip_forward
eth0(vmnet1) eth0(vmnet1) eth1(vmnet3) eth0(vnnet3)
1.1.1.1 ----> 1.1.1.2 3.3.3.3 <------ 3.3.3.4
sip:1.1.1.1 dip:4.4.4.4
返回
sip:4.4.4.4 dip:1.1.1.1
步骤一:
从1.1.1.1 ping 1.1.1.2
在宿主机上ping 1.1.1.2,能通
步骤二:
ping 2.2.2.2 不能通
解决方法:
在vm1上加网关
route add default gw 1.1.1.2
步骤三:
在宿主机加了一个网关指向1.1.1.2的基础上,我再继续在宿主机上ping 2.2.2.3 不能通
解决方法:
在vm3上加网关指向2.2.2.2
route add default gw 2.2.2.2
还要在VM2上打开ip_forward,打开方法有两种
1,# echo 1 > /proc/sys/net/ipv4/ip_forward ----马上生效,但重启后就不生效了
2,# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 ----改为1
# sysctl -p ----保存后,使用此命令让它永久生效
步骤四:
继续ping 3.3.3.3 不通
解决:再在VM2上route add default gw 2.2.2.3
步骤五:
继续ping 3.3.3.4 不通
解决:在VM3上打开ip_forward
还要在VM4上route add default gw 3.3.3.3
步骤六
继续ping 4.4.4.4 不通
解决:如果在VM3上加一个网关指向3.3.3.4,其实是有问题的,因为VM3上这样就有两个网关了。如果你不使用多路由表的做法,这两个网关只能有一个网关有效。
所以加网关的方式不可行,只能在VM3加路由
route add -net 4.4.4.0 netmask 255.255.255.0 dev eth1
上面终于从1.1.1.1ping到4.4.4.4
--------------------------
那么如果还有5网段,6网段,7网段,甚至更多(类似因特网),全部靠指网关来通迅不现实。实际的做法就是使用路由协议(rip,ospf,bgp等)来做,这就是动态路由了。
如果我把上面的所有网关和ip_forward去掉,然后手动加上路由(也就是说四台机都有四个网段的路由),那么就只能ping通到2.2.2.2,ping2.2.2.3就不通了
linux下可以安装类似zebra这样的软路由软件,可以把linux模拟成一台cisco路由器来进行配置。
======================================================================
准备两台虚拟机和真实机一起三台机做实验(把iptables都先关闭
A B C
内网(vm1) iptables网关(宿主机) 外网
192.168.1.128 ---> 192.168.1.1 vmnet1
(vmnet1)
ip_forward
172.16.2.9 eth0 <--- 172.16.2.10
(vmnet0)
--注意:模拟上面的环境时,宿主机可以模拟中间的双网卡网关,但不能模拟内网或外网其中一台(原因是宿主机本来就是与虚拟的所有网段是直通的,你如果把它做为内网,则它会直接连接外网而不会走中间的网关)
--所以两种模拟方法:1,宿主机模拟网关,两台虚拟机分别模拟内外网;2,不要宿主机,三台虚拟机来模拟,中间的双网卡网关使用一台双网关的虚拟机模拟,另两台用单网卡来模拟
把gateway加上路由功能
# echo "1" > /proc/sys/net/ipv4/ip_forward ----临时生效
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p ----改完后使用此命令,使之修改永久生效
路由功能加了后,网关都指向了gateway这台物理机,那么 两个网段的这两台机就能互相ping通
例一:禁止内网192.168.1.128和外网172.16.2.10互ping
iptables -A FORWARD -p icmp -s 192.168.1.128 -j DROP
或者
iptables -A FORWARD -p icmp -s 172.16.2.10 -j DROP
例二:禁止内网192.168.1.128上外网的172.16.2.10这个网站
iptables -A FORWARD -p tcp --dport 80 -s 192.168.1.128 -d 172.16.2.10 -j DROP
posted @ 2018-06-19 21:49  Sky-wings  阅读(172)  评论(0编辑  收藏  举报