由于IP-×××专线之间的BGP要经过服务商,使用起来不方便,遂想经过GRE隧道封装。安全
我这边使用的是juniper srx240,对端用思科路由器。app
GRE协议原本是思科搞出来的,juniper的junos也不知道行不行,搜索了一下,有简短的例子,可是没有虚拟路由器的用法,研究了一下。ide
首先创建一个gre的虚拟接口,这个接口默认是不出现,GUI也搞不出来,用命令行,或者编辑配置。oop
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;
}
}加密
}命令行
说明一下 , router
routing-instance {
destination VRRIP;
}server
这个最开始是没法加的,由于虚拟路由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