因为IP-×××专线之间的BGP要通过服务商,使用起来不方便,遂想通过GRE隧道封装。

我这边使用的是juniper srx240,对端用思科路由器。

GRE协议本来是思科搞出来的,juniper的junos也不知道行不行,搜索了一下,有简短的例子,但是没有虚拟路由器的用法,研究了一下。

首先建立一个gre的虚拟接口,这个接口默认是不出现,GUI也搞不出来,用命令行,或者编辑配置。

interfaces {

    gr-0/0/0 {
        unit 0 {
            tunnel {
                source 192.168.8.1;
                destination 192.168.8.2;
                routing-instance {
                    destination VRRIP;
                }
            }
            family inet;
        }
        unit 1 {
            tunnel {
                source 192.168.2.2;
                destination 192.168.2.1;
                routing-instance {
                    destination VRBGP;
                }
            }
            family inet;
        }
    }

}

说明一下  ,            

                 routing-instance {
                    destination VRRIP;
                }

这个最开始是无法加的,因为虚拟路由VRRIP和VRBGP还没有建立,然后建立虚拟路由器,

routing-instances {
    VRBGP {
        instance-type virtual-router;
        interface gr-0/0/0.1; //把做好的接口加入
        interface ge-0/0/11.0; //这个物理接口接思科路由器
        interface lo0.0; //为测试,建立环回接口
        routing-options {
            static {
                route 2.2.2.2/32 next-hop gr-0/0/0.1;//做路由,这个路由和主的互不影响
            }
        }
    }
}

虚拟路由器做好之后,把interface gr-0/0/0.1归属到routing-instance VRBGP

                 routing-instance {
                    destination VRRIP;
                }

配置物理接口

    ge-0/0/11 {
        unit 0 {
            family inet {
                address 192.168.2.2/24;
            }
        }
    }

为了分离和主路由的流量,做VRBGP的安全ZONE BGP

security {

   zones {

        security-zone BGP {
            host-inbound-traffic {
                system-services {
                    all;
                }
                protocols {
                    all;
                }
            }
            interfaces {
                lo0.0;
                gr-0/0/0.1; //把接口都划入该zone,
                ge-0/0/11.0;//注意的是接口划入zone和划入虚拟路由器同步进行,不然报错

            }
        }

}

许可安全策略

security {

    policies {

        from-zone BGP to-zone BGP {
            policy bgp {
                match {
                    source-address any-ipv4;
                    destination-address any-ipv4;
                    application any;
                }
                then {
                    permit;

                }
            }
        }
    }

}

下面是思科路由器的配置,

interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface Tunnel0
 ip address 3.3.3.3 255.255.255.0
 tunnel source FastEthernet0/0
 tunnel destination 192.168.2.2
!
interface FastEthernet0/0
 ip address 192.168.2.1 255.255.255.0
 duplex auto
 speed auto
!
no ip http server
!
ip route 1.1.1.1 255.255.255.255 Tunnel0

有一点要说明一下,就是Tunnel0配置了IP地址,因为srx设备的gre隧道是没有IP的,原来就打算不配IP地址,没成想,不配IP地址就不通,无论配什么都IP可以,只要有IP地址就行,当然在实用的时候,这个IP地址不能冲突。

另外就是要注意MTU的问题,调整好大小。

一般以太网ping的载荷在1472

gre之后的ping载荷为1448,这是在中继路程上都是最小以MTU1500为转送值,因为gre不加密,有效载荷就是这么多。

IP头20,GRE头4,内嵌IP头20,1500-20-4-20=1456,icmp头8,1456-8=1448