因为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