只要在Linux主機上添加一些簡單的路由條目, 這些Linux主機就能夠充當簡單路由器的功能。centos
在實際生產壞境中, 當咱們須要一臺路由器簡單做爲轉發數據, 可是手上卻沒有路由器的話, 咱們就能夠指定一臺Linux主機充當一個簡單的路由器,實現路由簡單的轉發。bash
上面所訴尤爲強調簡單, 因此說只是實現簡單的路由的功能, 若是要實現很是複雜的功能的話, 一臺Linux主機可能沒法實現你想要的條件。ide
實驗壞境: 基於VMware上的4臺虛擬主機,主機名爲R1、R2的兩臺主機(都是centos6.8系統)充當路由器, 而主機名Centos7.2(1)和Centos7.2(2)兩臺主機做爲測試主機。測試
下面是實驗拓撲圖:centos7
下面是實驗步驟:spa
1>. 防火牆會影響路由轉發功能, 首先清空R1和R2兩臺主機上的防火牆規則。blog
[root@R1 ~]# iptables -F [root@R2 ~]# iptables -F
2> Linux系統,默認路由轉發功能是關閉的,咱們須要修改配置文件,去將路由轉發功能打開。接口
路由轉發的配置文件/proc/sys/net/ipv4/ip_forward圖片
查看和設置R1上的/proc/sys/net/ipv4/ip_forwardip
[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 ....
很顯然, 兩臺主機之間是互相通的了。