首页 > 代码库 > Linux主机实现简单的路由转发功能
Linux主机实现简单的路由转发功能
只要在Linux主机上添加一些简单的路由条目, 这些Linux主机就可以充当简单路由器的功能。
在实际生产坏境中, 当我们需要一台路由器简单作为转发数据, 但是手上却没有路由器的话, 我们就可以指定一台Linux主机充当一个简单的路由器,实现路由简单的转发。
上面所诉尤其强调简单, 所以说只是实现简单的路由的功能, 如果要实现非常复杂的功能的话, 一台Linux主机可能无法实现你想要的条件。
实验坏境: 基于VMware上的4台虚拟主机,主机名为R1、R2的两台主机(都是centos6.8系统)充当路由器, 而主机名Centos7.2(1)和Centos7.2(2)两台主机作为测试主机。
下面是实验拓扑图:
下面是实验步骤:
1>. 防火墙会影响路由转发功能, 首先清空R1和R2两台主机上的防火墙规则。
[root@R1 ~]# iptables -F [root@R2 ~]# iptables -F
2> Linux系统,默认路由转发功能是关闭的,我们需要修改配置文件,去将路由转发功能打开。
路由转发的配置文件/proc/sys/net/ipv4/ip_forward
查看和设置R1上的/proc/sys/net/ipv4/ip_forward
[root@R2 ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@R2 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@R2 ~]# cat /proc/sys/net/ipv4/ip_forward 1
查看和设置R2上的/proc/sys/net/ipv4/ip_forward
[root@R1 ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@R1 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@R1 ~]# cat /proc/sys/net/ipv4/ip_forward 1
3>. 給R1主机eth0和eth1接口配置ip地址
[root@R1 network-scripts]# cat ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:B3:32:CC TYPE=Ethernet UUID=a7f94e4f-1f87-439f-a044-9888cc8ddc7c ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPADDR=10.0.0.2 PREFIX=8 [root@R1 network-scripts]# cat ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=none BOOTPROTO=static IPADDR=172.16.0.1 PREFIX=16
4>.給R2主机eth1和eth2接口配置ip地址
[root@R2 network-scripts]# cat ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=172.16.0.2 PREFIX=16 [root@R2 network-scripts]# cat ifcfg-eth2 DEVICE=eth2 BOOTPROTO=none IPADDR=192.168.1.1 NETMASK=255.255.255.0
5>. 临时指定主机Centos7.2(1)和Centos7.2(2)ip地址。
临时指定Centos7.2(1)eno16777736的ip地址:
[root@centos7 sysconfig]# ifconfig eno16777736 10.0.0.1
临时指定Centos7.2(2)eno16777736的ip地址:
[root@centos7 ~]# ifconfig eno16777736 192.168.1.2
6>. ip地址已经都配置好了,现在要在路由器上添加一些路由规则,也需要给测试主机添加网关配置。
a>. 在R1主机上添加通往192.168.1.0网段的路由条目
[root@R1 network-scripts]# route add -net 192.168.1.0/24 gw 172.16.0.2 dev eth1
查看主机R1的路由条目:
[root@R1 network-scripts]# ip route 192.168.96.0/24 dev eth2 proto kernel scope link src 192.168.96.137 metric 1 192.168.1.0/24 via 172.16.0.2 dev eth1 172.16.0.0/16 dev eth1 proto kernel scope link src 172.16.0.1 metric 1 169.254.0.0/16 dev eth0 scope link metric 1002 10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.2
b>. 在R2主机上添加通往192.168.1.0网段的路由条目
[root@R2 network-scripts]# route add -net 10.0.0.0/8 gw 172.16.0.1 dev eth1
查看主机R2的路由条目:
[root@R2 network-scripts]# ip route 192.168.96.0/24 dev eth3 proto kernel scope link src 192.168.96.139 metric 1 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1 metric 1 172.16.0.0/16 dev eth1 proto kernel scope link src 172.16.0.2 metric 1 10.0.0.0/8 via 172.16.0.1 dev eth1
c>. 给测试两台主机centos7.2(1)和centos7.2(2)添加指定网关
[root@centos7 sysconfig]# route add -net default gw 10.0.0.2 [root@centos7 ~]# route add -net default gw 192.168.1.1
7>. 测试:
用centos7.2(1 ) 去 ping centos7.2(2)的主机:
[root@centos7 sysconfig]# ping 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=62 time=16.2 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=62 time=1.02 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=62 time=1.39 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=62 time=1.06 ms ....
很显然, 两台主机之间是互相通的了。
Linux主机实现简单的路由转发功能