Linux主機實現簡單的路由轉發功能

只要在Linux主機上添加一些簡單的路由條目, 這些Linux主機就能夠充當簡單路由器的功能。centos

在實際生產壞境中, 當咱們須要一臺路由器簡單做爲轉發數據, 可是手上卻沒有路由器的話, 咱們就能夠指定一臺Linux主機充當一個簡單的路由器,實現路由簡單的轉發。bash

上面所訴尤爲強調簡單, 因此說只是實現簡單的路由的功能, 若是要實現很是複雜的功能的話, 一臺Linux主機可能沒法實現你想要的條件。ide

 

實驗壞境: 基於VMware上的4臺虛擬主機,主機名爲R1R2的兩臺主機(都是centos6.8系統)充當路由器, 而主機名Centos7.2(1)Centos7.2(2)兩臺主機做爲測試主機。測試

 

下面是實驗拓撲圖:centos7

wKiom1fOKcaSvJ37AACGoPXvw0I304.png

下面是實驗步驟:spa


1>. 防火牆會影響路由轉發功能, 首先清空R1R2兩臺主機上的防火牆規則。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主機eth0eth1接口配置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主機eth1eth2接口配置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)eno16777736ip地址:

[root@centos7 sysconfig]# ifconfig eno16777736 10.0.0.1


臨時指定Centos7.2(2)eno16777736ip地址:

[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
....


很顯然, 兩臺主機之間是互相通的了。

相關文章
相關標籤/搜索